Answers:
rm
不接受输入,接受参数。这些是不同的。参数是您在命令行上赋予程序以影响其行为的开关和文件名等。输入是程序处理的数据。例如,同时grep
接受输入和参数:
grep "foo" file.txt
有两个参数有"foo"
和file.txt
。该输入是内容的file.txt
,不是字符串file.txt
本身。由于grep接受输入,因此可以将其与管道一起使用:
cat file.txt | grep "foo"
产生相同的输出,因为猫正在file.txt
作为参数,并产生内容的file.txt
作为输出。然后,将该输出通过管道传递到grep,与第一个示例中的效果相同,与grep打开文件本身相同。
如果要将一个程序的输出用作另一个程序的参数,请使用反引号:
rm `which gem`
或以下替代(特定于bash的)语法:
rm $(which gem)
编辑:或xargs
作为另一个答复者指出。使用命令行为猫皮化的方法很多。
cat file.txt | grep "foo"
速度可能比慢数百倍grep "foo" file.txt
。
grep --help
可以快速了解接受的参数。
如果您的PATH中有一个包含空格的目录,或者如果命令名包含空格,那么运行这些命令将很危险:
rm `which gem` # Dangerous
rm $(which gem) # Dangerous
which gem | xargs rm # Dangerous
GNU Parallel http:// www.gnu.org/software/parallel/不会出现此问题,因此即使您的PATH目录中包含空格或命令名称包含空格,这也可以解决:
which gem | parallel rm
parallel -a <(which bass) rm
观看GNU Parallel的介绍性视频:http : //www.youtube.com/watch?v=OpaiGYxkSuQ
rm /usr/bin/gem
是一个可怕的想法。离开这个gem
(和Ruby解释它去用)单独安装您首选的Ruby解释器(和gem
使用)rvm
:rvm.beginrescueend.com