Reg*_*ser 5 command-line watch-command
我想在创建文件时关注它。所以我用了这个命令
ls -hal ./file |awk '{print $5}'
Run Code Online (Sandbox Code Playgroud)
这给出了我正在寻找的文件的大小。我使用awk
是因为我不需要其他东西,只需要文件大小。
但是我无法在watch
命令中使用它,因为如果我尝试
watch ls -hal ./file |awk '{print $5}'
Run Code Online (Sandbox Code Playgroud)
然后 watch 只接受ls -hal ./file
然后通过管道将其传送到awk
,不提供任何输出。
如果我尝试
watch "ls -hal ./file |awk '{print $5}'"
Run Code Online (Sandbox Code Playgroud)
然后它会变得很奇怪,显示错误的命令和整个输出。
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
Run Code Online (Sandbox Code Playgroud)
您可以看到$5
awk 命令中没有。
进一步引用会产生各种类似的错误。
那么引用这个命令的正确方法是什么?
一种选择是,以逃避在$
你的awk
表达
watch "ls -hal ./file |awk '{print \$5}'"
Run Code Online (Sandbox Code Playgroud)
或者,您可以通过使用stat
而不是解析输出来完全避免该问题ls
watch stat -c '%s' ./file
Run Code Online (Sandbox Code Playgroud)