小鸟初学Shell编程(五)输入输出重定向

重定向作用

一个进程默认会打开标准输入、标准输出、错误输出三个文件描述符。

重定向可以让我们的程序的标准输出、错误输出的信息重定向文件里,那么这里还可以将文件的内容代替键盘作为一种标准输入的方式。


重定向符号

  • 输入重定向符号"<"
  • 输出重定向符号">",">>","2>","&>"

输入重定向功能

01 输入重定向符号"<"的作用:

会把文件的内容当做参数输入到进程,如下例子:

[[email protected] home]# cat file.txt
hello
[[email protected] home]# read a < file.txt
[[email protected] home]# echo $a
hello

file.txt文件的内容是hello,上述的例子就是把file.txt的内容重定向到a这个变量,并把a变量打印出来。


输出重定向功能

01 输出重定向符号">"的作用:

会把文件内容清空,在把输出内容重定向到指定的文件里,并且如果文件不存在则创建,如下例子:

[[email protected] tmp]# echo 123 > /tmp/test
[[email protected] tmp]# cat /tmp/test
123
[[email protected] tmp]# echo abc > /tmp/test
[[email protected] tmp]# cat /tmp/test
abc
02 输出重定向符号">>"的作用:

会把输出的内容追加到指定的文件里,该文件不会被清空,并且如果文件不存在则创建,如下例子:

[[email protected] tmp]# echo 123 >> /tmp/test
[[email protected] tmp]# cat /tmp/test
123
[[email protected] tmp]# echo abc >> /tmp/test
[[email protected] tmp]# cat /tmp/test
123
abc
03 输出重定向符号"2>"的作用:

是把进程错误输出的内容重定向到指定的文件里,如下例子:

[[email protected] home]# abc
-bash: abc: command not found
[[email protected] home]# abc > error.txt
-bash: abc: command not found
[[email protected] home]# cat error.txt
[[email protected] home]#
[[email protected] home]# abc 2> error.txt
[[email protected] home]# cat error.txt
-bash: abc: command not found

以上的演示结果可以得知,abc不是Linux的命令,执行了会报错说abd命令未找到的错误信息输出,那么这个错误信息需要用2>重定向符才能把进程错误输出的内容重定向到指定的文件。

04 输出重定向符号"&>"的作用:

无论进程输出的信息是正确还是错误的信息,都会重定向到指定的文件里,如下例子:

[[email protected] home]# abc &> file.txt
[[email protected] home]# cat file.txt
-bash: abc: command not found
[[email protected] home]# free -m &> file.txt
[[email protected] home]# cat file.txt
             total       used       free     shared    buffers     cached
Mem:           980        918         62          0         71        547
-/+ buffers/cache:        299        681
Swap:         1983          0       1983

输入重定向和输出重定向组合使用

输入和输出也是可以组合使用的,那么这个组合主要应用于在Shell脚本当中产生新的配置文件的场景,如下Shell脚本例子:

#!/bin/bash
cat > /home/a.sh << EOF
echo "hello bash"
EOF

cat命令的输出重定向到/root/a.sh脚本文件,并且用输入重定向把EOF为脚本结尾。那么通过执行这个脚本,就会产生一个内容为echo "hello bash"文件名为a.sh的脚本文件。

执行结果:

[[email protected] home]# ./test.sh
[[email protected] home]# ls -l a.sh
-rw-r--r--. 1 root root 18 Sep 27 16:41 a.sh
[[email protected] home]# chmod u+x a.sh
[[email protected] home]# cat a.sh
echo "hello bash"
[[email protected] home]# ./a.sh
hello bash

小结

以上的内容就是关于输入和输出重定向的用法,那么大家要注意输出重定向包括覆盖和追加模式,无论是覆盖还是追加模式,尽量不要用于我们的系统配置文件,那么在应用之前大家要注意对系统文件进行备份。

输入和输出重定向,还可以组合使用,一般在Shell脚本当中去产生新的配置文件的时候,会用到它们的组合的方式。

原文地址:https://www.cnblogs.com/xiaolincoding/p/11601021.html

时间: 2024-11-12 09:20:57

小鸟初学Shell编程(五)输入输出重定向的相关文章

小鸟初学Shell编程(一)认识Shell

开篇介绍 Linux里非常的有用的一个功能,这个功能就叫Shell脚本. Shell脚本在我日常开发工作里也占了非常重要的角色,项目中一些简单的工作我们都可以使用Shell脚本来完成,比如定时删除日志文件脚本.一键部署系统脚本等一些自动化的功能. 所以掌握好Shell脚本编程,处理一些自动化繁琐的事情会有事半功倍的效果.不管是Linux开发人员还是运维人员都有必要掌握Shell编程. 什么是Shell? Shell是命令解释器,用于解释用户对操作系统的操作. 简单的理解就是,Shell会把用户所

小鸟初学Shell编程(四)管道符

管道作用 管道实际上就是进程之间的一个通信工具,那么用在Linux命令中主要是方便两条命令互相之间可以相互通信. 管道符 管道符(匿名管道)是Shell编程经常用到的通信工具. 管道符是"|",主要是把两个应用程序连接在一起,然后把第一个应用程序的输出,作为第二个应用程序的输入.如果还有第三个应用程序的话,可以把第二个程序的输出,作为第三个应用程序的输入,以此类推. 如ls | grep test.sh,在当前文件过滤出test.sh文件: [[email protected] /]#

小鸟初学Shell编程(三)脚本不同执行方式的影响

执行命令的方式 执行Shell脚本的方式通常有以下四种 方式一:bash ./test.sh 方式二:./test.sh 方式三:source ./test.sh 方式四:. ./test.sh 执行方式的区别 方式一bash方式执行脚本的话,会在当前的终端下面产生一个bash子进程来运行脚本,所以对当前的环境是没有影响的. [[email protected] usr]# bash ./test.sh 方式二./test.sh的方式运行,则脚本第一行声明是哪个Shell解释器就会产生哪个She

小鸟初学Shell编程(二)编写简单的Shell脚本

Shell脚本 编写Python.PHP脚本通常需要掌握语言的函数,那么Shell脚本则不需要,只需要掌握Linux命令就可以编写Shell脚本,因为Shell脚本就是由多个Linux命令组成,通过将多个Linux命令组合保存成一个脚本文件,可直接给其他人使用. 组合命令 进入一个目录,查看目录的文件,这个过程分别需要执行两条命令,分别是cd 和ls. 分开执行两个命令的形式如下: [[email protected] usr]# cd /usr/ [[email protected] usr]

小鸟初学Shell编程(六)变量赋值

变量的意义 我们在使用Linux命令或脚本的时候,会有一些输出,那么这些输出的信息可以用变量临时存储,以备我们下一条命令或脚本使用. 变量的定义 变量的定义建议用一个有意义的英文单词来代表变量,不要使用简单的字母a,b 这类的变量名定义.因为我们写好Shell脚本实际上是要给人看的,所以我们定义好的变量,是希望变量有具体的含义,能让阅读Shell脚本人能轻松的明白. 变量的命名规则: 字母.数字.下划线 不以数字开头 变量的赋值 为变量赋值的过程,称为变量替换 Shell脚本里变量是不区分变量类

小鸟初学Shell编程(七)变量引用及作用范围

变量引用 那么定义好变量,如何打印变量的值呢?举例下变量引用的方式. ${变量名}称作为对变量的引用 echo ${变量名}查看变量的值 ${变量名}在部分情况下可以省略成 $变量名 [[email protected] ~]# string="hello Shell" [[email protected] ~]# echo ${string} hello Shell [[email protected] ~]# echo $string hello Shell 那么有花括号括起来的变

小鸟初学Shell编程(九)环境变量变量配置文件

介绍 在上一篇使用完了环境变量,并且知道PATH环境变量概念,那么我们对命令的执行就有了一定深入的理解.那么PATH环境变量或其他环境变量是保存在哪呢?那么这篇文章主要介绍环境变量配置文件. 配置文件 环境变量主要保存在以下四个文件和一个目录中: /etc/profile /etc/profile.d/ ~/.bash_profile ~/.bashrc /etc/bashrc 保存在/etc/目录下的配置文件,都是所有用户通用的配置,就是不管是root用户还是普通用户. 保存在~/用户家目录的

Shell学习之:输入输出重定向

详细理解: linux命令默认从标准输入设备(stdin)获取输入,将结果输出到标准输出设备(stdout)显示.一般情况下,标准输入设备就是键盘,标准输出设备就是终端,即显示器.在linux shell执行命令时,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件.由于文件描述符不容易记忆,shell同时也给出了相应的文件名: 文件描述符说明列表 文件 文件描述符 输入文件-标准输入 0(缺省为键盘;0为文件或其他命令的输出) 输出文件-标准输出 1(缺省为屏幕;1为文件) 错误

Shell篇之八 输入输出重定向

输出重定向:是指不使用系统提供的标准输入端口来输出,而是重新指定其他来进行输出.例如在终端输入的字符串本来是要输出到终端屏幕上的,但可以将输出指定为其他文件,将输入字符串输出到该文件中,而不再是屏幕上. 输入重定向:是指不使用系统提供的标准输入端口来输入,而是重新指定其他来进行输入.例如本来是通过终端标准输入端口来作为输入,但可以将输入指定为其他文件,将该文件内容输出打印在终端屏幕上. 大多数 Linux 系统命令从你的终端接受输入并将所产生的输出发送回到您的终端.一个命令通常从一个叫标准输入的