Двойная кавычка в псевдониме - PullRequest
0 голосов
/ 15 июня 2019

Я пытаюсь установить следующий псевдоним в 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

Есть идеи сделать эту работу?

1 Ответ

3 голосов
/ 15 июня 2019

Вывод, который вы ищете:

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 вставит в строку начальный пробел, который вы можете удалить для аккуратности.

...