echo "output of echo" > f1.txt what is this
结果,创建了f1.txt(之前不存在),这是f1.txt
的内容cat f1.txt
output of echo what is this
似乎">"可以接受两个参数,第一个参数是文件名,第二个参数是文件的输入。
但是当我将echo改为cat时,它不起作用
cat < a.txt > f1.txt ohlala
cat: ohlala: No such file or directory```
Please explain how this line - "echo "output of echo" > f1.txt what is this" works exactly. I can't find the > syntax for this kind.
输出重定向不一定是命令的最后对;它们可以在命令名之后的任何时间出现(在简单命令的情况下,甚至在命令名之前)。
shell首先扫描整个命令查找> <word>
,然后将其作为输出重定向处理,然后在以剩余的单词作为参数运行命令。
> f1.txt echo "output of echo" what is this
echo > f1.txt "output of echo" what is this
echo "output of echo" > f1.txt what is this
echo "output of echo" what > f1.txt is this
echo "output of echo" what is > f1.txt this
echo "output of echo" what is this > f1.txt
因为> f1.txt
被删除了,在每种情况下都留下
echo "output of echo" what is this
作为实际执行的命令,即带有4个参数的echo
。
>
接受一个参数;shell使用它打开一个文件进行写入,并将该文件描述符传递给命令(当它最终运行时),作为标准输出使用。换句话说,没有命令传递给>
,而是将>
产生的任何命令传递给执行命令的进程。
您的cat
命令,在删除输入和输出重定向后,是cat ohlala
,并且没有文件命名为ohlala
供cat
打开。(这不是一个shell错误,而是一个cat
错误)