我想在bash中结合watch命令使用alias命令.watch命令是多个链式命令.
一个非常简单的例子,我认为它会起作用(但它没有):
alias foo=some_command # a more complicated command
watch -n 1 "$(foo) | grep bar" # foo is not interpreted as the alias :(
Run Code Online (Sandbox Code Playgroud)
watch -n 1 "$(foo) | grep sh" 出于两个原因是错误的.
当watch "$(cmdA) | cmdB"shell执行时,在运行之前$(cmdA) 进行扩展 .然后将执行输出的作为一个命令(应在大多数情况下失败)和管道的所述输出.你可能意味着.watchwatchcmdAcmdBwatch 'cmdA | cmdB'
别名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'
Run Code Online (Sandbox Code Playgroud)
请注意,watch必须在watch别名内指定选项.尾随空格仅导致下一个单词被视为别名.使用watch -n 1 foobash会尝试扩展-n为别名,但不是foo.
| 归档时间: |
|
| 查看次数: |
345 次 |
| 最近记录: |