Bash:如何将别名命令与 watch 结合使用

用户12547645

我想在 bash 中结合 watch 命令使用别名命令。watch 命令是多个链接命令。

一个非常简单的例子,我认为它会如何工作(但它不会):

alias foo=some_command          # a more complicated command
watch -n 1 "$(foo) | grep bar"  # foo is not interpreted as the alias :(
索科维

watch -n 1 "$(foo) | grep sh" 有两个原因是错误的。

  1. Whenwatch "$(cmdA) | cmdB"由 shell 执行,运行之前$(cmdA) 被扩展 然后将执行输出作为一个命令(应在大多数情况下失败)和管道的所述输出你可能的意思是.watchwatchcmdAcmdBwatch 'cmdA | cmdB'

  2. 别名foo仅在当前 shell 中定义。watch不是内置命令,因此必须在另一个不知道别名的 shell 中执行它的命令foo这个答案中有一个小技巧,但是我们必须进行一些调整才能使其与管道和选项一起使用

alias foo=some_command
alias watch='watch -n 1 ' # trailing space treats next word as an alias
watch foo '| grep sh'

请注意,watch必须在watch别名中指定选项尾随空格导致仅将下一个单词视为别名。使用watch -n 1 foobash 会尝试扩展-n为别名,而不是foo.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章