linux shell学习之输入与输出

发布时间:2019-08-22编辑:脚本学堂
本文介绍了linux shell编程中有关输入输出的相关内容,shell的输入与输出一定要研究清楚,需要的朋友参考下。

本节脚本小编为大家介绍shell的输入与输出,不了解的朋友,一起来看看吧。

1.echo 7.文件重定向
2.read 8.标准输入,输出与错误
3.cat 9.文件重定向
4.管道 10.合并标准输出和标准错误
5.tee 11.使用文件描述符
6.exec

1.echo
echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用,或者把字符串输入到文件中。
echo [operator] string
 

-e 解析转义字符
-n 回车不换行,linux默认回车换行
c 最后不加上换行符号;
f 换行但光标仍旧停留在原来的位置;
n 换行且光标移至行首;
t 插入tab;

2.read
read variabe1 variable2...
read命令接收标准输入(键盘)的输入,或其他文件描述符的输入。得到输入后,read命令将数据放入一个标准变量中。
如果只有一个变量,那么shell将读入的所有内容都赋予整个变量中。如果有多个变量,那么shell会按顺序分别赋予不同的变量。shell将用空格作为变量的分隔符。

3.cat
cat是一个简单而又通用的命令,可以用它来显示文件内容,创建文件,还可以用它来显示控制字符。
cat [option] filename1 filename2.....
-v 显示控制字符。
注意:它不会在文件的分页出停下来,它会一直显示完整整个文件。如果希望一次只显示一页,可以使用more命令或者把cat命令的输出通过管道传递到另一个具有分页功能的命令(more,less)。

3.管道
管道可以把一个命令的输出传递到另一个命令作为输入,管道用竖杠(|)表示
格式:命令1|命令2
tee
tee命令把输出的一个副本输送到标准输出,另一个副本拷贝到相应的文件中。
tee -a files  (-a 追加)
如果希望看到输出的同时,也将其存入到另一个文件,那么这个命令就在适合不过了。一般应用在管道之后。
标准输入,输出和错误
在shell中执行命令时,每个进程都和三个打开的文件相联系。并使用文件描述符来引用这些文件。由于文件描述符不容易记忆,shell同时也给出了不同的文件名。
  
文件 文件描述符
 

输入文件-标准输入 0(缺省是屏幕也可以是文件)
输出文件-标准输出 1(缺省是键盘,也可以是文件或者其他命令的输出)
错误输出文件-标准错误 2(缺省是屏幕,也可以是文件)

文件的重定向
文件的重定向:改变程序运行的输入来源和输出地点。
 

command > filename 把标准输出重定向到一个文件中
command >> filename 把标准输出重定向到一个文件中(追加)
command 1 > filename 把标准输出重定向到一个文件中
command > filename 2>&1 把标准输出和标准错误重定向到一个文件中
command 2 > filename 把标准错误重定向到一个文件中
command 2 >> filename 把标准错误重定向到一个文件中(追加)
command >>   filename 2>&1 把标准输出和标准错误一起重定向到一个文件中(追加)
command &m 把标准输出重定向到文件描述符m中
> filename 可以创建一个字节为零的文件
command < filename >filename2 把command命令以filename文件作为标准输入,以filename2文件作为标准输出
command < filename 把command命令以filename文件作为标准输入
command << delimiter 把从标准输入中读入,直至遇到delimiter分界符
command <&m 把文件描述符m作为标准输入
command <&- 把关闭标准输入

合并标准输入和标准错误
 

复制代码 代码示例:
[hadoop@localhost shellTest]$ grep "e1e" aa.txt1 > grep.out 2>&1 
[hadoop@localhost shellTest]$ ll 
总用量 52 
-rw-rw-r--. 1 hadoop hadoop  49 5月  26 05:44 aa.txt 
-rw-rw-r--. 1 hadoop hadoop  49 5月  26 05:44 bb.txt 
[hadoop@localhost shellTest]$ cat grep.out  
grep: aa.txt1: 没有那个文件或目录 

exec
exec可以替代当前的shell,换句话说,并没有启动子shell,使用这一命令时时,任何现有环境都将被清除,并重新启动一个新shell。
exec command 通常command是一个脚本。
 

复制代码 代码示例:
exec命令   作用
exec ls    在shell中执行ls,ls结束后不返回原来的shell中了
exec <file 将file中的内容作为exec的标准输入
exec >file 将file中的内容作为标准写出
exec 3<file 将file读入到fd3中
sort <&3   fd3中读入的内容被分类
exec 4>file 将写入fd4中的内容写入file中
ls >&4 Ls将不会有显示,直接写入fd4中了,即上面的file中
exec 5<&4  创建fd4的拷贝fd5
exec 3<&-  关闭fd3

文件描述符
exec常与文件描述符结合使用。
 

复制代码 代码示例:
#!/bin/sh 
exec 100<&0 0<hello.txt 
read line1 
echo $line1 
read line2 
echo $line2