Я хочу легко установить псевдоним git-go
для этой строки терминала:
git commit -m "init "; git push; git status
Поэтому, когда я вхожу в git-go, эта строка должна войти.
Как я могу это сделать? Ответы, которые я видел, покрывают только псевдоним команды без параметров. Но я хочу установить псевдоним произвольной терминальной линии.
command-line
bash
alias
Филипп Рего
источник
источник
Ответы:
Вы делаете это так же, как и любой псевдоним.
Ситуация, в которой он становится сложным, возникает не тогда, когда псевдоним запускает команду и передает аргументы этой команде, даже когда псевдоним запускает несколько команд, разделенных
;
, а вместо этого, когда вы хотите, чтобы псевдоним принял и использовал свои собственные аргументы командной строки. ,Например, все, что вы пишете после имени этого псевдонима, будет вставлено в конец и, таким образом, передано в качестве аргументов командной строки третьей
git
команде послеgit status
. (Действительно, следующий текст вставляется не в конец, а в том, что следующий текст остается один, а псевдоним заменяется его определением.)Таким образом, вы можете запустить свой псевдоним без аргументов, что работает, и последняя команда
git status
:Или вы можете запустить его с аргументами, которые вы хотите передать
git status
. Например, когда вы запускаете его таким образом, последняя командаgit-status --show-stash
:То, что вы не можете сделать с псевдонимом в Bash (и других оболочках в стиле Bourne), это заставить псевдоним принимать аргументы командной строки и размещать их в другом месте, чем конец.
Например, предположим, что вы хотели
git-go
принять аргумент, который он использует для сообщения фиксации. Вы не сможете написать это как псевдоним. Решением было бы написать его как функцию оболочки:В определении функции оболочки, позиционные параметры
$1
,$2
и так далее удерживать значение аргументов командной строки , переданных функцию оболочки. У псевдонимов нет никакой функциональности, которая соответствует этому, потому что расширение псевдонима действительно является формой макрообработки, которая происходит очень рано, когда оболочка анализирует команду.Конечно, вы можете записать это как функцию оболочки, даже если вам не нужно использовать позиционные параметры в определении, как предлагает Видеонавт .
источник
git-go
в вашем PATH и онgit go
будет работать.Вы можете объявить это функцией в вашем
~/.bash_aliases
файле следующим образом:или вы можете создать псевдоним в том же файле, например:
Не забудьте повторно открыть свой терминал или исходный файл (
. ~/.bash_aliases
) после того, как вы изменили его.источник
Поскольку вы имеете дело с
git
командами, вы также можете узнать синтаксис для добавления псевдонима специально дляgit
:Это добавит новый псевдоним в вашу локальную
git
конфигурацию (at~/.gitconfig
) и позволит вам выполнитькогда внутри
git
хранилища. Всякий раз, когда вы бежитеgit go
оболочку, вызывается и командаgit commit -m "init"; git push; git status
передается ей.Смотрите документацию git для получения более подробной информации.
источник
Это была проблема с цитированием. Я пробовал это:
Но получил эту ошибку:
Я получил эту ошибку, потому что я неправильно использовал вложенные кавычки. Вот правильный синтаксис:
Или:
Или без кавычек, если в сообщении о фиксации нет пробелов:
источник
init
; оболочка лечит'init'
,"init"
иinit
то же самое. (Таким образом, вы можете захотеть вернуть исходную версию, а также показать новую версию, чтобы проиллюстрировать ситуацию, когда требуются вложенные кавычки.) Что касается возможности добавления остальной части сообщения, вы можете передать это как командную строку. аргумент, если (как показано в видео-ответах и моих ответах) вы определили функцию вместо псевдонима. Например, вы могли бы определитьgit-go() { git commit -m "init $1"; git push; git status; }
(это то, что я имею в своем ответе, но"init $1"
вместо просто"$1"
).