Bash “ls”怎么说*&引用;2>&;1 | tee ls.txt`工作?
我正在寻找一种方法将所有输出保存到一个文件并打印出来 下面这样的命令确实非常有效Bash “ls”怎么说*&引用;2>&;1 | tee ls.txt`工作?,bash,tee,Bash,Tee,我正在寻找一种方法将所有输出保存到一个文件并打印出来 下面这样的命令确实非常有效 ls“*”2>&1| tee ls.txt 但我想我不太明白 我尝试了ls“*”| teels.txt。它不起作用。错误消息未保存到ls.txt中 我还尝试了ls“*”1>&2 | teels.txt。它表现得有些奇怪。发生了什么事?2>&1说“将stderr(2)重定向到stdout(1)去的任何地方”1和2分别是stdout和stderr的文件描述符 当您通过管道将ls输出传输到tee时,只有stdout进入t
ls“*”2>&1| tee ls.txt
但我想我不太明白
我尝试了ls“*”| teels.txt
。它不起作用。错误消息未保存到ls.txt
中
我还尝试了ls“*”1>&2 | teels.txt
。它表现得有些奇怪。发生了什么事?2>&1
说“将stderr(2)重定向到stdout(1)去的任何地方”1
和2
分别是stdout
和stderr
的文件描述符
当您通过管道将ls
输出传输到tee
时,只有stdout进入tee
(无2>&1
)。因此,错误消息不会保存到ls.txt
,您可以实际使用:
ls "*" |& tee ls.txt
通过管道将标准输出和标准输出传输到tee
命令
ls'*'
实际上正在尝试列出名为*
的文件,因为'*'
在引号中
你的命令:
ls '*' 2>&1 | tee out
工作原理是,首先将stderr(2)重定向到stdout(1),然后使用管道连接到T形三通,如l3x所述,您将“标准错误:2”重定向到“标准输出:1”。 解决方案是在实际错误发生之前触发重定向。因此,与其使用
ls“*”2>&1| tee ls.txt
你应该使用
ls 2>&1“*”| tee ls.txt
这样,“标准错误”将不会为空,并将被重定向到“标准输出”,tee将工作,因为“标准输出”不会为空。
我已经测试过了,它可以工作了。
我希望这是有帮助的ls“*”&tee ls.txt
在我的mac上不起作用<代码>-bash:意外标记“&”附近出现语法错误