Вы делаете это так же, как и любой псевдоним.
alias git-go='git commit -m "init "; git push; git status'
Ситуация, в которой он становится сложным, возникает не тогда, когда псевдоним запускает команду и передает аргументы этой команде, даже когда псевдоним запускает несколько команд, разделенных ;
, а вместо этого, когда вы хотите, чтобы псевдоним принял и использовал свои собственные аргументы командной строки. ,
Например, все, что вы пишете после имени этого псевдонима, будет вставлено в конец и, таким образом, передано в качестве аргументов командной строки третьей git
команде после git status
. (Действительно, следующий текст вставляется не в конец, а в том, что следующий текст остается один, а псевдоним заменяется его определением.)
Таким образом, вы можете запустить свой псевдоним без аргументов, что работает, и последняя команда git status
:
git-go
Или вы можете запустить его с аргументами, которые вы хотите передать git status
. Например, когда вы запускаете его таким образом, последняя команда git-status --show-stash
:
git-go --show-stash
То, что вы не можете сделать с псевдонимом в Bash (и других оболочках в стиле Bourne), это заставить псевдоним принимать аргументы командной строки и размещать их в другом месте, чем конец.
Например, предположим, что вы хотели git-go
принять аргумент, который он использует для сообщения фиксации. Вы не сможете написать это как псевдоним. Решением было бы написать его как функцию оболочки:
git-go() { git commit -m "$1"; git push; git status; }
В определении функции оболочки, позиционные параметры $1
, $2
и так далее удерживать значение аргументов командной строки , переданных функцию оболочки. У псевдонимов нет никакой функциональности, которая соответствует этому, потому что расширение псевдонима действительно является формой макрообработки, которая происходит очень рано, когда оболочка анализирует команду.
Конечно, вы можете записать это как функцию оболочки, даже если вам не нужно использовать позиционные параметры в определении, как предлагает Видеонавт .