如何正确引用“watch”的管道命令?

如何正确引用“watch”的管道命令?

我想在文件创建时对其进行监控。因此我使用了此命令

ls -hal ./file |awk '{print $5}'

它给出了我正在寻找的文件的大小。我使用它是awk因为不需要其他东西,只需要文件大小。

但我无法使用这个watch命令,因为如果我尝试

watch ls -hal ./file |awk '{print $5}'

然后 watch 仅接受ls -hal ./file并将其通过管道传输到awk,不提供任何输出。

如果我尝试

watch "ls -hal ./file |awk '{print $5}'"

然后它会变得奇怪,显示错误的命令和整个输出。

Every 2.0s: ls -hal ./file |awk '{print }'              Sun Jul 20 15:52:18 2014

-rw-rw---- 1 aditya aditya 1.7K Jul 20 15:52 ./file

$5您可以看到awk 命令中没有。

进一步引用会产生各种类似的错误。

那么引用该命令的正确方法是什么?

答案1

一个选择是逃脱$你的awk表情中

watch "ls -hal ./file |awk '{print \$5}'"

stat或者,你可以通过使用而不是解析输出来完全避免这个问题ls

watch stat -c '%s' ./file

答案2

使用以下命令:

watch 'ls -hal ./file|cut -d " " -f 5'

如果你想突出差异比,

watch -d 'ls -hal ./file|cut -d " " -f 5'

这将为您提供您想要的工作!

相关内容