BASH Shell中减号的用途!

BASH Shell中减号的用途!

tar -cvf - /home | tar -xvf -

在管线命令当中,常常会前一个指令的stdou作为这次的stdin ,
该stdin 与stdout 可以利用减号"-"来代替!
这个"减号"的用法不是很明白,望高手解答一下
最好写几个例子!谢谢了!      
tar -cvf - /home
把/home压缩后,打印在stdout上

tar -xvf -
从stdin读取内容,并在当前目录解压

例1
纯粹是演示 '-'
grep -xvf a  b 可以写成
cat a | grep -xvf - b

例2
脚本中可以这样在crontab里添加一个任务
{ crontab -l; echo "* * * * * /bin/date >> /tmp/log" ; } | crontab -      
在文件头添加一行,也可以这样玩
cat - file <<<"line num 1"

只取一列并与另一文件做diff
awk '{ print $1 }'  a  |  diff - b

楼下继续提供更多例子      
引用:
原帖由 li-jiahuan 于 2008-12-19 01:43 发表
在文件头添加一行,也可以这样玩
cat - file <<<"line num 1"

只取一列并与另一文件做diff
awk '{ print $1 }'  a  |  diff - b
呵呵,我也试一试,真是挺好玩的!!高手呀!      
lz 所述这种减号的用法跟 bash 没有什么关系, 对 `-' 的解释是由相应的 cmd 来执行的, 而且也不是所有的 cmd 都支持这种用法. 对于支持这种用法的 cmd 来说,  `-' 一般都是指 stdin 或者 stdout