Установка псевдонима, когда двойные кавычки и одинарные кавычки оба терпят неудачу

Этот вопрос не является дубликатом Почему псевдоним ведет себя иначе, чем прямой запуск команды bash? потому что я пробовал это решение, и оно не сработало. Я заменил все свои одинарные кавычки на двойные и наоборот. Команда не работает ни в коем случае.

Я пытаюсь реализовать псевдоним sys , который откроет файл, в котором я отслеживаю изменения в моей системе, sys.md , sys.md дату, перенесу эту строку, sys.md строку, заменим ее на - для уценки Формат h2, откройте новую строку и вставьте - для формата маркера уценки. От vi.stackexchange.com я получил некоторую помощь в реализации команды. Оно работает:

 nvim +'$pu_|r!date' +'norm yypVr-o ' ~/notes/sys.md 

Когда я заменяю одинарные кавычки на двойные, вычисляется $ pu_, и я получаю

 zsh: event not found: date 

Так что одинарные кавычки важны. Тем не менее, когда я реализую псевдоним

 alias sys="nvim +'$pu_|r!date' +'norm yypVr-o- ' ~/notes/sys.md" 

Псевдоним не работает. nvim открывается, но дата добавляется ко второй строке, а не к нижней. Очевидно, что $ pu_ оценивается как переменная из BASH. ( nvim проверки синтаксиса nvim даже показывает, что оно должно быть оценено.) Инвертирование двойных и одиночных nvim для получения

 alias sys='nvim +"$pu_|r!date" +"norm yypVr-o- " ~/notes/sys.md' 

Имеет такое же поведение. Обратные кавычки,

 alias sys=`nvim +"$pu_|r!date" +"norm yypVr-o- " ~/notes/sys.md` 

Замораживает bash на source .zshrc . Я не знаю, как поступить. Любая помощь будет принята с благодарностью.

    2 Solutions collect form web for “Установка псевдонима, когда двойные кавычки и одинарные кавычки оба терпят неудачу”

    Просто поместите его в функцию bash (вы можете добавить функцию в .bashrc ):

     sys() { nvim +'$pu_|r!date' +'norm yypVr-o ' ~/notes/sys.md } 

    Затем вы можете вызвать его так же, как вы сделали бы это с псевдонимом.

    Если ваша единственная проблема состоит в том, чтобы понять, как single quote символ одинарной кавычки в одну строку в кавычках, вот метод. Использование:

     '\'' 

    для символа single quote внутри строки в одинарных кавычках.

    Это завершает текущую строку в кавычках, затем вставляет кавычки и затем начинает новую строку в кавычках.

    Кстати: поскольку это частая проблема, bosh поставляется с методом для автоматизации этого преобразования. Вы можете получить schilytools и скомпилировать их, а затем поиграть с bosh . Если вы позвоните:

     set -o hashcmds #b aliasname aliasreplacement 

    Значение в aliasreplacement вводится в raw режиме, и если вы позже позвоните:

     alias aliasname 

    вы видите псевдоним в правильно указанном виде, и если вы введете

     alias -R aliasname 

    вы видите псевдоним в режиме raw .

    Linux и Unix - лучшая ОС в мире.