我听说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 手册)