Создать псевдоним оболочки с точкой с запятой
Я заметил, что у меня есть склонность к опечатке 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 "$@"