为具有管道的 watch 命令添加别名

Add aliases for a watch command having pipe

我想为下面的命令取一个名为 fdbtop 的别名

watch -tc 'fdbcli --exec "status json" | python /home/ubuntu/build-target/healthservice/fdbtop.py'

我尝试在 .bash_aliases

中添加以下行
alias 'fdbtop=watch -tc \''fdbcli --exec "status json" | python /home/ubuntu/build-target/healthservice/fdbtop.py\'''

但是它给了我下面的错误

ubuntu@vrni-platform:~$ fdbtop
python: can't open file '/home/ubuntu/build-target/healthservice/fdbtop.py ': [Errno 2] No such file or directory
                                                                                                                 ubuntu@vrni-platform:~$

文件存在

ubuntu@vrni-platform:~$ ls /home/ubuntu/build-target/healthservice/fdbtop.py
/home/ubuntu/build-target/healthservice/fdbtop.py

谁能告诉我该怎么做?

OS 版本 - Ubuntu 16.04

正如 anubhava 所提到的,这更适合于函数。您可以像添加别名一样添加它(通常在您的 .bashrc 文件中,但如果您愿意,您可以获取特定于函数的文件)。

function fdbtop() { 
    watch -tc 'fdbcli --exec "status json" | python /home/ubuntu/build-target/healthservice/fdbtop.py' 
} 
alias fdbtop='watch -tc '\''fdbcli --exec "status json" | python /home/ubuntu/build-target/healthservice/fdbtop.py'\'

在单引号内的字符串中没有特殊字符。要在单引号中的字符串中插入单引号,您必须使用 '\''。 (第一个 ' 终止字符串,\' 添加单引号,最后一个 ' 再次打开字符串。)