Ви робите це так само, як і будь-який псевдонім.
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 (та іншими оболонками в стилі Борна), - це змусити псевдонім приймати аргументи командного рядка і розмістити їх в іншому місці, ніж в кінці.
Наприклад, припустимо, що ви хотіли git-go
прийняти аргумент, який він використовує для повідомлення фіксації. Ви б не змогли написати це як псевдонім. Рішенням було б записати це замість функції оболонки:
git-go() { git commit -m "$1"; git push; git status; }
У визначенні функції оболонки, позиційні параметри $1
, $2
і так далі утримувати значення аргументів командного рядка , переданих функцію оболонки. Псевдоніми не мають функціоналу, який відповідає цьому, оскільки розширення псевдоніму - це дійсно форма макрообробки, що відбувається дуже рано, коли оболонка аналізує команду.
Звичайно, ви можете записати це як функцію оболонки, навіть якщо вам не потрібно використовувати параметри позиції у визначенні, як це пропонує Videonauth .