使用 nohup 将命令在后台运行时,某些内容会出现在终端中。
cp: error reading ‘/mnt/tt/file.txt’: Input/output error
cp: failed to extend ‘/mnt/tt/file.txt’: Input/output error
Run Code Online (Sandbox Code Playgroud)
我想将该内容保存到文件中。
这个问题可能听起来有点愚蠢,但我真的看不出重定向和管道之间的区别。
重定向用于重定向 stdout/stdin/stderr,例如ls > log.txt
.
管道用于将命令的输出作为另一个命令的输入,例如ls | grep file.txt
.
但是为什么同一件事有两个运营商呢?
为什么不直接写ls > grep
来传递输出,这不也是一种重定向吗?我缺少什么?
什么之间的区别<<
,<<<
并< <
在bash?
我经常在网上看到教程或本网站上的帖子,这些教程在命令行中大量使用了以下字符。通常,它们似乎用于非常相似的目的。它们在命令行或shell编程中使用时有什么区别?我出于什么目的使用它们中的哪一个?
" " double quotes
' ' single quotes
` ` backticks
Run Code Online (Sandbox Code Playgroud) 有两种形式将标准输出和标准错误重定向到标准输出。但哪个更好?为什么&>
被认为是完美的?
我找不到有什么区别,所以很多教程甚至 bash 手册都说 &>
更好!
所以我为什么要使用&>
而不是2>&1
主要使用bash
shell
编辑:感谢评论者
只有 >& 适用于 csh 或 tcsh
在 ksh 中只有 2>&1 有效。
破折号仅使用 >file 2>&1 重定向
然后使用哪一个来确保我的脚本与其他系统兼容,无论使用的 shell 是什么!
显示文件内容的最简单方法是使用以下cat
命令:
cat file.txt
Run Code Online (Sandbox Code Playgroud)
我可以使用输入重定向获得相同的结果:
cat < file.txt
Run Code Online (Sandbox Code Playgroud)
那么,它们之间有什么区别呢?
我知道 bash 有一个>>
运算符,可以将输出附加到文件,但是<<
运算符有什么用?