linux bash shell 关于减号-的作用

管道命令在bash的连续处理程序中是相当重要的,尤其在使用到前一个命令的studout(标准输出)作为这次的stdin(标准输入)时,就显得太重要了,某些命令需要用到文件名,例如上篇文档的的切割命令(split)、还有tar(打包)命令等等!这时这个文件就承当studout或者stdin,这个时候这个studout或者stdin就可以用减号(-)来替代

 实例一:使用ls -al /将输出的信息中,每3行记录成一个文件

  1. [root@bogon bash]# ls -al / | split -l 3 - s  
  2. [root@bogon bash]# wc -l s*  
  3.    3 saa  
  4.    3 sab  
  5.    3 sac  
  6.    3 sad  
  7.    3 sae  
  8.    3 saf  
  9.    3 sag  
  10.    2 sah  
  11.   23 total  
  12. #一般来说,如果需要stdout(标准输出)/stdin(标准输入),但偏偏又没有文件,有的只是“-”时,那么那个“-”就会被当做stdout或者stout  

 

实例二:tar -cvf  tarName.tar ./bash 本来是这样的,看我怎么用“-”来替他文件的标准输出

  1. [root@bogon ~]# tar -cvf   ./bash  
  2. tar: Cowardly refusing to create an empty archive  
  3. Try `tar --help' or `tar --usage' for more information.  
  4. #这里报错了,没有办法,因为语法错误  
  5. [root@bogon ~]# tar -cvf  - ./bash   
  6. ./bash/  
  7. ./bash/sag  
  8. ./bash/saf  
  9. ./bash/sae  
  10. ./bash/aa.txt  
  11. ./bash/sab  
  12. ./bash/saa  
  13. ./bash/sad  
  14. ./bash/cc.txt  
  15. ./bash/bb.txt  
  16. ./bash/test.txt  
  17. .....  
  18. #看到了没有这个时候用”-“替代了本来输出到文件,而标准输出到了屏幕  

 

    实例三:综合实例

  1. [root@bogon ~]# tar -cvf - ./bash | tar -xvf -  
  2. ./bash/  
  3. ./bash/sag  
  4. ./bash/saf  
  5. ......!(省略)  
  6. ./bash/saf  
  7. ./bash/sah  
  8. ./bash/sac  
  9. tar: ./bash: file changed as we read it  
  10. ./bash/sae  
  11. .......!省略)  
  12. ./bash/sah  
  13. ./bash/sac  

  上面这个例子是说我将./bash这个文件打包,但是打包的文件不是记录到文件,而是传送到标准输出(stdout);经过管道后,将tar -cvf - ./bash传给后面的tar -xvf -。后面这个“-”则是取用前面一个命令的stdout作为stdin,因此这里就不需要使用文件了,这是很常见的例子,因为我们写脚本的时候,就不要去写个临时文件了。

转载于:https://my.oschina.net/jackguo/blog/794824

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值