Shell中的重定向和管道

1.重定向

1.1标准输入重定向

标准输入 用数字“0”表示 默认接受来自键盘的输入
“<” 把输入重定向给程序和命令

[root@centos7.3 ~]#cat a.txt  #查看文件内容
total 4
-rw-r--r--. 1 root root 201 May 29 12:47 acl.txt #原文件内容
drwxr-s---+ 2 root g1     6 May 29 12:34 dir
[root@centos7.3 ~]#tr 'a-z' 'A-Z' < a.txt > d.txt 把a.txt里的文件重定向到tr命令
在把输出结果重定向到d.txt
[root@centos7.3 ~]#cat d.txt  #查看d.txt文件
TOTAL 4    #原来a.txt里的内容全部被tr命令变成大写再重定向到d.txt文件中
-RW-R--R--. 1 ROOT ROOT 201 MAY 29 12:47 ACL.TXT
DRWXR-S---+ 2 ROOT G1     6 MAY 29 12:34 DIR

1.2 标准输出重定向

标准输出 用数字“1”表示 默认输出到终端窗口

“>”把标准输出定重向到文件或者设备

[root@centos7.3 ~]#ls /home/ > a.txt  #把ls命令的标准输出重定向到 a.txt 文件中
[root@centos7.3 ~]#cat a.txt          #查看a.txt文件的内容
admin
alece
tom

但是“>”重定向到文件会覆盖文件中原有的内容

[root@centos7.3 ~]#ls /app/ > a.txt #把/app目录下的文件列表重定向到a.txt
[root@centos7.3 ~]#cat a.txt        #再来看一下a.txt文件
acl.txt  #里面的内容已经被覆盖了
dir
[root@centos7.3 ~]#

所以如果我们要往文件里添加内容不覆盖的话可以用“>>”把标准输出重定向追加到文件中

[root@centos7.3 ~]#ll /root/ >> a.txt 
[root@centos7.3 ~]#cat a.txt 
acl.txt  
dir            #这两行a.txt文件中原有的内容
total 16
-rw-------. 1 root root 1892 May 24 17:48 anaconda-ks.cfg
-rw-r--r--. 1 root root   12 May 29 14:51 a.txt
drwxr-xr-x. 2 root root    6 May 24 18:08 Desktop
drwxr-xr-x. 2 root root    6 May 24 18:08 Documents
drwxr-xr-x. 2 root root    6 May 24 18:08 Downloads
-rw-r--r--. 1 root root 1923 May 24 18:08 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 May 24 18:08 Music
drwxr-xr-x. 2 root root    6 May 24 18:08 Pictures
drwxr-xr-x. 2 root root    6 May 24 18:08 Public
drwxr-xr-x. 2 root root    6 May 24 18:08 Templates
drwxr-xr-x. 2 root root    6 May 24 18:08 Videos 
#这是a.txt文件中原有的内容这些是我们把/root目录下的文件列表追加进来的内容
[root@centos7.3 ~]#

1.3标准错误重定向

标准错误 用数字“2”表示 默认输出到终端窗口

“2>”把标准错误重定向到文件或者设备

[root@centos7.3 ~]#ls /aaa 2> b.txt  #把标准错误重定向到b.txt文件中
[root@centos7.3 ~]#cat b.txt  #查看b.txt文件中的内容
ls: cannot access /aaa: No such file or directory #提示找不到/aaa目录

“2>>”将一个标准错误输出重定向追加到文件中

[root@centos7.3 ~]#ls /bbb 2>> b.txt #把ls /bbb的错误输出重定向追加到b.txt文件中
[root@centos7.3 ~]#cat b.txt #查看追加结果
ls: cannot access /aaa: No such file or directory #这是上一条/aaa的报错信息
ls: cannot access /bbb: No such file or directory #这是这一次追加的信息

1.4

我们想把标准输出和标准错误重定向到一个文件或者设备的时候就可以用“&>”把所有的信息都重定向到一个地方

[root@centos7.3 ~]#ls /app/  /ccc &> c.txt #查看/app和/ccc目录,把所有的输出都重定向到c.txt文件中
[root@centos7.3 ~]#cat c.txt  #查看c.txt文件中的结果
ls: cannot access /ccc: No such file or directory #这是/ccc的报错提示标准错误
/app/: #这是标准输出
acl.txt
dir

“>&”这个也可以把所有输出都重定向到一个文件或者设备和上一条命令的效果一样

[root@centos7.3 ~]#ls /app/  /ccc >& c.txt

“> 2>&1”这个也可以实现同样的效果

[root@centos7.3 ~]#ls /app/ /cc > c.txt 2>&1 
[root@centos7.3 ~]#cat c.txt 
ls: cannot access /cc: No such file or directory
/app/:
acl.txt
dir

如果要追加内容可以用“>> 2>&1”来实现

[root@centos7.3 ~]#ls /home  /c  >> c.txt 2>&1 #查看/home和/c目录下的文件列表,把所有输出重定向到c.txt
[root@centos7.3 ~]#cat c.txt 
ls: cannot access /cc: No such file or directory  #这是几行是原有的内容
/app/:
acl.txt
dir 
ls: cannot access /c: No such file or directory #这个几行是我们刚刚追加进来的内容
/home:
admin
alece
tom  

“&>>”用这个字符也可以把所有的输出追加到文件

[root@centos7.3 ~]#ls /home  /d  &>> c.txt
[root@centos7.3 ~]#cat c.txt 
ls: cannot access /c: No such file or directory #原来的内容
/home:
admin
alece
tom 
ls: cannot access /d: No such file or directory #新追加的内容
/home:
admin
alece
tom 

2.管道

管道符使用“|”来表示,用来把命令连接起来。

[root@centos7.3 ~]#ls /app/ | tr 'a-z' 'A-Z' #查看/app下的文件列表,再输出结果用管道传给tr命令处理
ACL.TXT #显示在终端的结果变成了大写字母
DIR

“|”管道符可以用来保存不同阶段的输出信息,可以同时查看和保存输出信息

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容