我想在 Debian Bash 中不断地看到最后 30 行代码“nfc 列表规则集”。像这样的东西:
watch -n 1 nft list ruleset | tail -n 30
但上面的代码不显示“nfc”命令输出的最后 30 行,它显示空白屏幕。
答案1
我在输入问题时找到了解决方案
watch "bash -c 'sudo nft list ruleset | tail -n 30'"
答案2
只是:
watch -n 1 'nft list ruleset | tail -n 30'
如今,大多数watch
实现都会调用 shell 将其参数的串联解释为 shell 代码,就像使用eval
.有些可以-x
选择跳过中间人并直接运行命令,这样
所以:
watch foo bar
实际上等同于:
watch -x sh -c 'foo bar'
和你的:
watch "bash -c 'sudo nft list ruleset | tail -n 30'"
就好像:
watch -x sh -c "bash -c 'sudo nft list ruleset | tail -n 30'"
通过该bash
调用完全没有必要,因为sh
可以像 bash 一样进行管道传输,并且通常更有效。
你可能想要做到:
sudo watch 'nft list ruleset | tail -n 30'
而不是:
watch 'sudo nft list ruleset | tail -n 30'
即使watch
不需要tail
超级用户权限来避免sudo
每次迭代的开销(并填充审核日志)。