我正在尝试在Debian Stretch中设置以下别名
alias myalias='watch -d -n 0.1 '\''find /path -type f -printf '%TY-%Tm-%Td\n' | sort | uniq -c'\'''
我试图用'\'来转义第一组引号,但不适用于较深的引号
%TY-%Tm-%Td\n
当我运行命令时,最终得到以下输出。 %TY-%Tm-%Td \ n周围的引号不再存在,输出不会解释\ n并且结果在一行上。
Every 0.1s: find /root/bolero/bolero/pkl/stocks -type f -printf %TY-%Tm-%Td\n | sort | uniq -c
有什么想法可以做到这一点吗?
答案 0 :(得分:3)
您要查找的输出是这样:
alias myalias='watch -d -n 0.1 '\''find /path -type f -printf '\''\'\'''\''%TY-%Tm-%Td\n'\''\'\'''\'' | sort | uniq -c'\'''
这当然非常复杂。
因为没有人想计算引号,所以让我向您介绍一下您可能不了解的Git功能:git rev-parse --sq-quote
。如果您想知道如何将文本正确地单引号,请将该部分双引号并将其传递给git rev-parse --sq-quote
。因此,它看起来像这样:
$ git rev-parse --sq-quote "find /path -type f -printf '%TY-%Tm-%Td\n' | sort | uniq -c"
'find /path -type f -printf '\''%TY-%Tm-%Td\n'\'' | sort | uniq -c'
$ git rev-parse --sq-quote "watch -d -n 0.1 'find /path -type f -printf '\''%TY-%Tm-%Td\n'\'' | sort | uniq -c'"
'watch -d -n 0.1 '\''find /path -type f -printf '\''\'\'''\''%TY-%Tm-%Td\n'\''\'\'''\'' | sort | uniq -c'\'''
这就是您获得结果的方式。请注意,Git会在行上插入一个前导空格,您可能需要删除该空格以保持整洁。