我听说printf
比echo
. 根据我的经验,我只能回忆起一个我不得不使用的实例,printf
因为它echo
无法将一些文本输入到 RHEL 5.8 上的某个程序中,但printf
确实如此。但显然,还有其他差异,我想询问它们是什么以及是否有特定情况下何时使用一种与另一种。
有人可能认为
echo foo >a
cat a | rev >a
Run Code Online (Sandbox Code Playgroud)
将离开a
包含oof
; 但它是空的。
rev
于a
?包含管道和输出重定向的命令的执行顺序是什么?
假设我们执行以下操作:
Charles@myzone:/tmp$ mkdir /tmp/testdir
Charles@myzone:/tmp$ cd /tmp/testdir
Charles@myzone:/tmp/testdir$ touch file1 file2
Charles@myzone:/tmp/testdir$ ls | wc -l
2
Charles@myzone:/tmp/testdir$ ls | wc -l > ls_result
Charles@myzone:/tmp/testdir$ cat ls_result
3
Run Code Online (Sandbox Code Playgroud)
我知道如果你这样做,ls > result
那么result
将包含它自己的名字,因为外壳会做类似的事情
1) 创建/打开名为的文件result
2) 将 fd 设置result
为 stdout 3) execls
我原以为ls_result
值是 2,但结果是 3。
题
ls | wc -w > ls_result
上面的命令是如何执行的?
它相当于(ls | wc -w ) > ls_result
?
一些有关信息的链接?(我查过 bash 手册)