Создать псевдоним оболочки с точкой с запятой

Я заметил, что у меня есть склонность к опечатке ls как ;s, поэтому я решил, что мне нужно просто создать псевдоним, чтобы вместо того, чтобы выдавать ошибку, он просто запускал команду, которую я имею в виду.

Однако, зная, что символ точка с запятой имеет значение в сценариях / командах оболочки, есть ли способ разрешить мне создать псевдоним с этим ключом точки с запятой? Я пробовал следующее безрезультатно:

alias ;s=ls
alias ";s"=ls
alias \;=ls

Можно ли использовать точку с запятой в качестве символа в псевдониме оболочки? И как мне это сделать в ZSH?

1 ответ

Решение
  • Прежде всего: рассмотрите решение своей проблемы по-другому - борьба с грамматикой оболочки таким способом вызывает проблемы.

  • Насколько я могу судить, хотя вы можете определить такую ​​команду, хотя и не с псевдонимом, единственный способ вызвать ее заключается в кавычки, например, как \;s - которая побеждает цель; Читайте дальше для технических деталей.

    • Псевдоним не будет работать: пока zsh позволяет вам определить его (что, возможно, и не следует), тот самый механизм, который потребуется для его вызова - цитирование, - это также тот самый механизм, который обходит псевдонимы и таким образом предотвращает вызов.

    • Вы можете, однако, определить функцию ( zsh только) или скрипт в вашем $PATH (работает в zsh а также в bash, ksh, а также dash), пока вы вызываете его в кавычках (например, как \;s или же ';s' или же ";s"), которая побеждает цель.

Для справки, вот определения команд, но, опять же, они могут быть вызваны только в кавычках.

Функция (работает в zsh только; поместить в файл инициализации, такой как ~/.zshrc):

 ';s'() { ls "$@" }

Исполняемый скрипт ;s (работает в dash, bash, ksh а также zsh; разместить в каталоге в вашем $PATH):

 #!/bin/sh
 ls "$@"
Другие вопросы по тегам