Bash 观察和观察不会产生任何结果
我尝试使用watch不断显示当前文件夹的大小,但是下面的命令不起作用,我做错了什么?我使用Bash 观察和观察不会产生任何结果,bash,zsh,watch,wc,Bash,Zsh,Watch,Wc,我尝试使用watch不断显示当前文件夹的大小,但是下面的命令不起作用,我做错了什么?我使用zshshell $watch ls-a|wc-l 我做错了什么 Shell将|解析为管道。因此,当shell看到: watch ls -a | wc -l 它将其解析为两个命令,其中一个命令输出重定向到另一个命令: ( watch ls -a ) | ( wc -l ) 它使用两个参数ls和-a运行命令watch,使用一个参数-l运行命令wc。因为watch ls-a永不结
zsh
shell$watch ls-a|wc-l
我做错了什么
Shell将|
解析为管道。因此,当shell看到:
watch ls -a | wc -l
它将其解析为两个命令,其中一个命令输出重定向到另一个命令:
( watch ls -a ) | ( wc -l )
它使用两个参数ls
和-a
运行命令watch
,使用一个参数-l
运行命令wc
。因为watch ls-a
永不结束,而且wc-l
只在输入结束时输出,所以您看不到任何输出wc-l
等待所有输入行被打印出来,而这永远不会发生
由于watch
在内部调用shell,因此您可以:
watch 'ls -a | wc -l'
这将使用一个参数运行单个命令watch
watch
在内部生成一个shell,并将字符串ls-a | wc-l
传递给它。然后,这个内部shell生成了两个新进程ls-a
和wc-l
,并连接了输入/输出
我做错了什么
Shell将|
解析为管道。因此,当shell看到:
watch ls -a | wc -l
它将其解析为两个命令,其中一个命令输出重定向到另一个命令:
( watch ls -a ) | ( wc -l )
它使用两个参数ls
和-a
运行命令watch
,使用一个参数-l
运行命令wc
。因为watch ls-a
永不结束,而且wc-l
只在输入结束时输出,所以您看不到任何输出wc-l
等待所有输入行被打印出来,而这永远不会发生
由于watch
在内部调用shell,因此您可以:
watch 'ls -a | wc -l'
这将使用一个参数运行单个命令
watch
watch
在内部生成一个shell,并将字符串ls-a | wc-l
传递给它。然后,这个内部shell生成了两个新的进程ls-a
和wc-l
,并连接了输入/输出。我想你真正想要的是观看'ls-a | wc-l'
(注意引号)。感谢你的回复,这是可行的,但是对于其他选项,例如,当我尝试观看du-sh时,我不需要引号,你知道这是为什么吗?感谢您,在不加引号的情况下,watch
将查看ls-a
的结果,而产生的任何结果都将由shell转发到wc-l
。使用引号,watch
将查看ls-a | wc-l
的结果。我想你真正想要的是watch'ls-a | wc-l'
(注意引号)。感谢你的回复,这很有效,但是对于其他选项,例如当我尝试watch du-sh
时,我不需要引号,你知道这是为什么吗?感谢您,在不加引号的情况下,watch
将查看ls-a
的结果,而产生的任何结果都将由shell转发到wc-l
。使用引号,watch
将查看ls-a|wc-l