Linux 数据重导向与管线命令

目录

1.数据流重导向

1.1 standard output 与 standard error output

1.2 /dev/null  垃圾桶黑洞

1.3 standard input :<与<<

1.4 命令执行的判断依据 : &&,||

2 管线命令

2.1 撷取命令 cut ,grep

2.2 排序命令 : sort ,wc ,uniq

2.3 双重重导向 tee

2.4 字符转换命令:tr,col,join,paste,expand

2.4 分区命令 split

2.5 参数代换:xargs

2.6 减号的用途


1.数据流重导向

1.1 standard output 与 standard error output

在执行命令后,会有指令回传的正确信息即标准输出(standard output),或指令执行错误回传的错误信息,即标准错误输出(standard error output).无论执行正确或是错误,都有信息输出到屏幕上.可以利用某种机制将这部分信息分开/合并传送到其他文件或装置中,就是利用数据重导向,而所需的特殊字符如下:

  • 标准输入stdin:代码[0],使用<或<<
  • 标准输出stdout:代码[1],使用>或>>
  • 标准错误输出stderr:代码[2],使用2>或2>>

如执行 [ll / > ~/rootfile] 指令后,原本的目录输出不见了:

  • 若~/rootfile不存在,系统会建立该文件
  • 若~/rootfile存在,系统会清空该文件后写入数据

执行 [ll / >> ~/rootfile] (是两个>)指令后,

  • 若~/rootfile不存在,系统会建立该文件
  • 若~/rootfile存在,系统会在该文件后边追加

​​​​​​​标准错误输出stderr的使用与标准输出类似,只是使用2>和2>>,也就是:

  • 1>:以覆盖的方法将正确的数据,输出到指定的文件或装置上去
  • 1>>:以追加的方法将正确的数据,输出到指定的文件或装置上去
  • 2>:以覆盖的方法将错误的数据,输出到指定的文件或装置上去
  • 2>>:以追加的方法将错误的数据,输出到指定的文件或装置上去

​​​​​​​将正确和错误的信息分别保存到不同的文件

​​​​​​​

1.2 /dev/null  垃圾桶黑洞

如果你的标准输出或标准错误输出不想输出到屏幕上也不想保存在文件中,就将它输出到/dev/null中去

如果想将标准输出和标准错误输出存到一个文件中去,有3种选择:

  • &>
  • 1>&2
  • 2>&1

1.3 standard input :<与<<

<是   将原本需要键盘输入的数据,改由文件内容输入

几个有用的例子:



1.4 命令执行的判断依据 : &&,||

&&与||的正确使用通过指令回传值[$?=0]来判断的

2 管线命令

管线命令使用[|]界定符号,它仅能够处理由前一个命令执行后的标准输出信息.如 [ll / | less],示意图如下:

每个管线后直接接的必须是指令,而且这个指令必须有接受标准输入的能力.这样的命令才是管线命令.

  • 管线命令仅会处理stdout数据,对stderr忽略
  • 管线命令必须要能够接受来自前一个指令的数据成为stdin继续进行处理

如若想让前一个命令的stderr被管线命令继续处理可使用 2>&1 ,将标准错误信息变成标准信息

2.1 撷取命令 cut ,grep

撷取信息一般是针对一行一行来分析

cut

以行为单位.| cut -c 4- 撷取每行第4个字符后的数据  | cut -c 4- 撷取每行前4个字符

grep

分析每行信息,将符合要求的一整行取出.

2.2 排序命令 : sort ,wc ,uniq

sort

排序的字符与语系编码有关,可以用LANG=C统一语系再进行排序

uniq 分组

wc 统计


2.3 双重重导向 tee

对标准输出一边存一边处理


2.4 字符转换命令:tr,col,join,paste,expand

tr

删除或替换信息中的文字

col

将[tab]取代成空格键

join

将两个文件中,有相同数据的那一行连接在一起

paste

将两行数据连接在一起,以[tab]隔开

expand

将[tab]转成空格

2.4 分区命令 split

将大文件分成多个小文件

2.5 参数代换:xargs

产生某个指令的参数,读入stdin数据,以空格或断行符作为判断.

2.6 减号的用途

在管线命令中,常常需要前一个命令的stdout作为stdin,某些指令需要用到文件名(如tar)进行处理,该stdout,stdin可用[-]替代

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值