Как создать псевдоним для команды git (включая пробелы)?

Большинство моих моих псевдонимов имеют такую ​​форму: alias p='pwd'

Я хочу выполнить alit git commit чтобы он git commit -v

Но попытка создать псевдоним с пробелом дает ошибку:

 $ alias 'git commit'='git commit -v' -bash: alias: `git commit': invalid alias name 

5 Solutions collect form web for “Как создать псевдоним для команды git (включая пробелы)?”

Не прямой ответ на ваш вопрос (поскольку псевдонимы могут быть только одним словом), но вместо этого вы должны использовать git-config :

 git config --global alias.civ commit -v 

Это создает псевдоним git, так что git civ запускает git commit -v . К сожалению, AFAIK не может переопределить существующие команды git с псевдонимами . Однако вы всегда можете выбрать подходящее имя псевдонима, чтобы жить как альтернатива.

Вы говорите о команде, которая содержит пробел, но здесь команда git и там нет места.

Чтобы вызвать команду git commit , вам нужно записать ее

 git\ commit ... 'git commit' ... "git commit" ... 

Как правило, у команд нет места в их именах по этой причине, что громоздко их вызывать в оболочке, поэтому я не думаю, что вы найдете такую ​​команду в своей системе.

csh, tcsh или zsh позволит вам использовать псевдоним любого из вышеперечисленных, но не bash или ksh (хотя pdksh позволит вам, но вы не дадите им использовать их). В zsh:

 alias "'git commit'=git commit -v" 'git commit' ... 

git command (когда вызывается только 'git command' (только с одиночными кавычками)) псевдоним для команды git с аргументами commit и -v . Не то, что вы искали, я бы предположил.

Поскольку alias может только командами псевдонимов, все, что вы можете использовать здесь, – это команда git , и вам нужно будет с псевдонимом ее добавить что-то, что добавляет «-v» после «commit» в свой список аргументов. Лучше всего было бы пойти с решением @ jw013, но если по какой-то причине вы не можете или не хотите, вместо использования псевдонима вы можете использовать функцию для выполнения задания:

 git() { if [ "$1" = commit ]; then shift set -- commit -v "$@" fi command git "$@" } 

В Bash вы не можете создать псевдоним для команды с любым пробелом в ней.
Тем не менее, я использую следующую функцию в моем .bashrc как обходной путь.

 sudo() { if [[ $@ == "pacman -Syu" ]]; then command pacup.sh; else command sudo "$@"; fi; } 

Как это работает: вы начинаете с команды, которую хотите вызвать. В моем случае это sudo .
Затем вы указываете, какие параметры потребуется. В этом случае, pacman -Syu .
Если, вызвано, какая команда должна выполняться? В приведенном выше pacup.sh это pacup.sh .
Else, какая команда должна быть выполнена, sudo $@ . $@ – это, как вы уже догадались, список параметров, который принимает команда.

Итак, сделав команду для вашего конкретного случая, это будет:

 git() { if [[ $1 == "commit" ]]; then command git commit -v; else command git "$@"; fi; } 

Тем не менее, это решение для более общего случая, когда вы хотите, чтобы команды псевдонимов с пробелами в них.
В вашем конкретном случае я бы порекомендовал вам пойти с решением jw013 для псевдонимов ваших команд git-config с помощью git-config

На странице man alias bash

Первое слово каждой простой команды, если не указано, проверяется на наличие псевдонима. Если это так, это слово заменяется текстом псевдонима. Имя псевдонима и текст замены могут содержать любой допустимый ввод оболочки, включая метасимволы оболочки, за исключением того, что имя псевдонима не может содержать `= '.

Первое слово заменяющего текста проверяется на псевдонимы, но слово, которое совпадает с расширяемым псевдонимом, не разворачивается во второй раз. Это означает, что можно, например, псевдоним ls -F, и Bash не пытается рекурсивно расширять заменяющий текст.

Итак, поскольку проверено только первое слово, вы не можете иметь псевдоним с несколькими словами. В этом вопросе суперпользователя предоставляется обходное решение с использованием функции:

 ls() { if [[ $@ == "-la" ]]; then command ls -la | more; else command ls "$@"; fi; } 

Он может быть адаптирован к git .

Из этого примера это должно работать:

Итак, если вы все еще хотите использовать sudo с другими командами, но не с выключением, и если вы можете позволить себе вызывать алиас на что-то еще, вы можете:

 alias sudo='sudo ' alias shutdown="echo nope" 

Но с вашими командами:

 alias git='git ' alias commit="commit -v" 
  • Создайте каталог с датой
  • Поиск файлов внутри нескольких подкаталогов и zip-каталогов
  • Попытка выйти из сценария с кодом состояния, но получить «неожиданный конец файла»,
  • Debian Jessie initramfs - инструмент странного поведения
  • Скрипт для загрузки ЦП отдельных ядер
  • Есть ли элегантный способ установить переменную оболочки в содержимое файла?
  • Как создать псевдоним для двух команд Git, которые используют параметр?
  • запись файла команды в файл
  • Проблема автоматического расширения с элементами массива, содержащими «*» (звездочку)
  • Батарея в URxvt?
  • Это ошибка, которую zsh печатает полную строку с printf '% .s'?
  • Interesting Posts

    Уменьшение высоты панели инструментов приложения gnome

    Как сделать вывод PGP менее подробным в mutt с GnuPG и TOFU?

    Как получить доступ к установке Linux на неизвестном и, казалось бы, заблокированном устройстве?

    Чашки: скрипт интерфейса для виртуального принтера, не выполняющий команды

    Telnet для порта 80 не работает

    Изменить шрифт по умолчанию GNOME (Fedora 24)

    Arch Linux: неудовлетворенные зависимости: open-vm-tools-modules требует linux <3.10

    Как я могу отлаживать медленное возобновление от приостановки?

    luci-app-sqm «404 Not Found» после обновления до 18.06.1

    Написание программы для редактирования .txt данных – Python или Unix?

    Ограничены ли ограничения безопасности контейнера докеры ограничениями безопасности хоста?

    Как заставить awk работать в цикле while

    Клавиша ввода отличается от возврата каретки (CR)

    Запуск SSH-сервера после запуска VPN

    Arch Linux netinstall – конфликтующие пакеты при установке

    Linux и Unix - лучшая ОС в мире.