重定向符
一、输出重定向
标准输出的目标位置通常指向的是终端屏幕。可以使用>符号修改标准输出的目标位置。比如下面的示例就会将ps命令的输出重定向到result.txt文件。描述符和>之间不能有空格
$ ps > result.txt ←----- 由于已经重定向到 result.txt 文件,所以屏幕上不会输出任何内容 $ cat result.txt PID TTY TIME CMD 10745 pts/0 0000 bash 10873 pts/0 0000 ps
如果文件已经存在,则该文件会被覆盖,文件内容将丢失
如果不想使用>覆盖原文件,而想向原文件追加写入,可以使用>>重定向
$ echo line1 >> echo.txt $ echo line2 >> echo.txt $ echo line3 >> echo.txt $ cat echo.txt line1 line2 line3
重定向并不是命令的功能,而是shell的功能,只要命令能将执行结果输出到标准输出,就可以实现重定向。但是只有标准输出会被重定向,标准错误输出还是会直接显示到屏幕上,那么如何将错误输出重定向?
可以使用2>符号,数字2是称为文件描述符的编号
$ ls /xxx 2> error.txt $ cat error.txt ls: 无法访问'/xxx': 没有那个文件或目录
也就是说例子1中相当于是1>
或者2>>指令对错误进行重定向
$ ls /xxx 2>> error.txt $ cd /xxx 2>> error.txt $ cat error.txt ls: 无法访问 '/xxx': 没有那个文件或目录 -bash:cd:/xxx:没有那个文件或目录
将标准输出和标准错误输出重定向到同一个文件(n>&m的含义是将文件描述符n设置为文件描述符m的副本)
$ ls /usr /xxx > ls_result.txt 2>&1
输出到不同文件(将ls命令的标准输出重定向到result.txt文件,并将标准错误输出重定向到error.txt文件)
$ ls /usr /xxx > result.txt 2> error.txt
使用分组命令重定向(如果想在使用{ }时将多条命令写到一行,需要在每条命令后面加上;)
#!/bin/bash { date +%Y-%m-%d echo '/usr list' ls /usr } > result.txt #------------------------------------------------------------ $ { date +%Y-%m-%d; echo '/usr list'; ls /usr; } > result.txt
分组命令的{后面要有空格,还可以使用( )代替{ }
二、输入重定向
$ tr b B abcd←-----从键盘输ru aBcd ←----- b 被替换为 B my book ←----- 从键盘输入 my Book ←----- b 被替换为 B
tr命令对键盘输入的东西进行替换吧
$ cat word.txt abcd ←----- word.txt 文件的内容 my book $trbB< word.txt ←----- 将 word.txt 文件重定向为输入源省略0< aBcd my Book
管道
命令的输出内容除了可以重定向输出到文件,还可以作为其他命令的输入使用。
使用less命令显示ls命令的标准输出内容
$ ls | less ... <-----(本行及以下5行)less 命令输出示例 Documents Movies Music Public (END)
等效于
$ ls > result.txt $ less < result.txt
注意:管道只会将前一条命令的标准输出传递给之后的命令,而第1条命令的标准错误输出则不会传递给后面的命令。
$ ls /usr/bin | grep 'py' | wc -l 6
如果使用管道来连接一个同时显示标准输出和标准错误输出的命令,那么屏幕上将只显示标准错误输出的内容。如果想将标准错误输出和标准输出一起传递给后面的命令,那么使用前面介绍的2>&1这种重定向方式即可
$ ls /usr /xxx 2>&1 | less ls: 无法访问'/xxx': 没有那个文件或目录
审核编辑:汤梓红
-
文件
+关注
关注
1文章
571浏览量
24848 -
命令
+关注
关注
5文章
698浏览量
22148 -
Shell
+关注
关注
1文章
366浏览量
23485 -
脚本
+关注
关注
1文章
392浏览量
14976 -
Shell脚本
+关注
关注
0文章
36浏览量
8036
原文标题:shell脚本基础(四)重定向和管道符
文章出处:【微信号:FPGA学姐,微信公众号:FPGA学姐】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
飞凌嵌入式ElfBoard ELF 1板卡-shell脚本编写之输入输出重定向
嵌入式 学习-飞凌嵌入式ElfBoard ELF 1板卡-shell脚本编写之输入输出重定向
![](https://file.elecfans.com/web2/M00/B0/69/poYBAGSuG22ACwCqAABM2puYIDw144.png)
Linux后台程序重定向的问题
linux shell数据重定向(输入重定向与输出重定向)详细分析
Linux Shell系列教程之(十六) Shell输入输出重定向
管道符、重定向与环境变量
Keil下使用STlink重定向printf的配置
![Keil下使用STlink<b class='flag-5'>重定向</b>printf的配置](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
shell脚本基础知识
Linux I/O重定向详解
Linux Shell脚本经典案例分享
![Linux <b class='flag-5'>Shell</b><b class='flag-5'>脚本</b>经典案例分享](https://file1.elecfans.com/web2/M00/89/DD/wKgZomSL-7eAcRBVAAA0YQQcU5I277.png)
评论