linux,shell学习(三)

[align=center][b]shell的输入与输出[/b][/align]
[table]
|1.echo|7.文件重定向|
|2.read|8.标准输入,输出与错误|
|3.cat|9.文件重定向|
|4.管道|10.合并标准输出和标准错误
|5.tee|11.使用文件描述符|
|6.exec|
[/table]
[b]1.echo[/b]
echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用,或者把字符串输入到文件中。
echo [operator] string
-e 解析转义字符
-n 回车不换行,linux默认回车换行
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\t 插入tab;
[b]2.read[/b]
read variabe1 variable2...
read命令接收标准输入(键盘)的输入,或其他文件描述符的输入。得到输入后,read命令将数据放入一个标准变量中。
如果只有一个变量,那么shell将读入的所有内容都赋予整个变量中。如果有多个变量,那么shell会按顺序分别赋予不同的变量。shell将用空格作为变量的分隔符。
[b]3.cat[/b]
cat是一个简单而又通用的命令,可以用它来显示文件内容,创建文件,还可以用它来显示控制字符。
cat [option] filename1 filename2.....
-v 显示控制字符。
注意:它不会在文件的分页出停下来,它会一直显示完整整个文件。如果希望一次只显示一页,可以使用more命令或者把cat命令的输出通过管道传递到另一个具有分页功能的命令(more,less)。
[b]3.管道[/b]
管道可以把一个命令的输出传递到另一个命令作为输入,管道用竖杠(|)表示
格式:命令1|命令2
[b]tee[/b]
tee命令把输出的一个副本输送到标准输出,另一个副本拷贝到相应的文件中。
tee -a files (-a 追加)
如果希望看到输出的同时,也将其存入到另一个文件,那么这个命令就在适合不过了。一般应用在管道之后。
[b]标准输入,输出和错误[/b]
在shell中执行命令时,每个进程都和三个打开的文件相联系。并使用文件描述符来引用这些文件。由于文件描述符不容易记忆,shell同时也给出了不同的文件名。
[table]|文件|文件描述符|
|输入文件-标准输入|0(缺省是屏幕也可以是文件)|
|输出文件-标准输出|1(缺省是键盘,也可以是文件或者其他命令的输出)|
|错误输出文件-标准错误|2(缺省是屏幕,也可以是文件)|
[/table]
[b]文件的重定向[/b]
文件的重定向:改变程序运行的输入来源和输出地点。
[table]
|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 <&-|把关闭标准输入|
[/table]
[b]合并标准输入和标准错误[/b]
[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: 没有那个文件或目录

[b]exec[/b]
exec可以替代当前的shell,换句话说,并没有启动子shell,使用这一命令时时,任何现有环境都将被清除,并重新启动一个新shell。
exec command 通常command是一个脚本。
[table]
|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|
[/table]
[b]文件描述符[/b]
exec常与文件描述符结合使用。

#!/bin/sh
exec 100<&0 0<hello.txt
read line1
echo $line1
read line2
echo $line2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值