重定向">"可以接受 2 个参数?



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,并且没有文件命名为ohlalacat打开。(这不是一个shell错误,而是一个cat错误)

相关内容

  • 没有找到相关文章

最新更新