shell学习整理(5)-玩转文件描述符及重定向

来源:互联网 发布:域用户安装软件权限 编辑:程序博客网 时间:2024/06/14 07:35
常见的文件描述符: 标准输入stdin, 标准输出stdout, 标准错误stderr


1. 将输出的文本重定向或者保存到一个文件中
$ echo "this is a sample" > temp.txt   通过这条命令会将"this is a sample"写入到temp.txt文件里,注意如果没有这个文件会创建这个文件,如果已经有temp.txt了,会清空原来的内容,重新输入。


2. 将文本追加到目标文件后面
$ echo "this is a sample" >>temp.txt


3. 查看文件内容
$ cat aaaa.txt
"this is a samplae"
"this is a samplae"


4. 当命令输出错误信息时, stderr 信息就会被打印出来
$ cat aaaa.txt
cat: aaaa.txt: No such file or directory


5. 文件重定向
Administrator@Q23YDB58A1ABZ1N MINGW64 ~
$ echo "b1" >b1


Administrator@Q23YDB58A1ABZ1N MINGW64 ~
$ echo "b2">b2


Administrator@Q23YDB58A1ABZ1N MINGW64 ~
$ echo "b3">b3


Administrator@Q23YDB58A1ABZ1N MINGW64 ~
$ echo b1 > b1


Administrator@Q23YDB58A1ABZ1N MINGW64 ~
$ cp b1 b2; cp b2 b3


Administrator@Q23YDB58A1ABZ1N MINGW64 ~
$ chmod 000 a1


Administrator@Q23YDB58A1ABZ1N MINGW64 ~
$ cat b1
b1


Administrator@Q23YDB58A1ABZ1N MINGW64 ~
$ cat b2
b1


Administrator@Q23YDB58A1ABZ1N MINGW64 ~
$ cat b3
b1


6. 但是有一个方法既可以将数据重定向到文件,还可以提供一份重定向数据的副本作为后续命令的 stdin 。这一切都可以使用 tee 来实现。举个例子:要在终端中打印stdout ,同时将它重定向到一个文件中,那么可以这样使用 tee 


Administrator@Q23YDB58A1ABZ1N MINGW64 ~
$ cat b1 | tee out.txt | cat -n
     1  b1


Administrator@Q23YDB58A1ABZ1N MINGW64 ~
$ cat b1 | tee out.txt | cat -n
     1  b1


Administrator@Q23YDB58A1ABZ1N MINGW64 ~
$ cat out.txt
b1


7. 使用stdin做为命令韩参数,只需要将-做为命令的文件名参数即可
$ echo who is this | tee -
who is this


8. >和>>是有区别的,两者都可以将文本重定向导文件,前者先清空文件,然后再写入内容,后者会将内容追加到现有文件的尾部。即前者是清空并写入,后者是加入到文本尾部。
原创粉丝点击