Как создать псевдоним для команды 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" 
  • Сделать работу grep для специальных имен файлов
  • Почему корневая оболочка по умолчанию настроена по-другому с обычной оболочкой обычного обычного пользователя?
  • «Список аргументов слишком длинный» для цикла
  • Редактирование gnome-shell.css не изменяет внешний вид
  • длинный формат команды ps в Solaris
  • Внутреннее расширение с помощью команды find и символа подстановки
  • Почему этот перерыв не может избавить меня от этого цикла while-do?
  • Как определить ошибку в определенном файле при проверке контрольной суммы (какой файл имеет проблему при проверке) в сценарии оболочки
  • Могу ли я читать и писать в тот же файл в Linux, не перезаписывая его?
  • относительно портативный sed -e ... db или! б?
  • Любые сюрпризы при настройке SHELL env var?
  • Interesting Posts

    Как заблокировать свою учетную запись с удаленного входа ssh с паролем?

    Как использовать локальный IP-адрес вместо внешнего

    Нет сетей для Centos под VirtualBox

    Выполняются ли команды через SSH прозрачно администратору удаленного хоста?

    Поиск ключевого слова в файле PDF

    OverlayFS: монтируется / foo / lower: / foo / upper to / foo безопасно?

    сумма всех пакетов в файлах pcap

    который представляет собой живой / спасательный диск, который дает вам возможность загружаться в вашу ОС GNU / Linux без grub?

    Как скопировать все мои настройки XFCE между настольным компьютером и ноутбуком?

    Почему следующий скрипт удаляет себя?

    Цветной текст, созданный с помощью PS1, и цветной вывод из команд путают друг друга

    Ошибка установки SSH в Ubuntu, работающем в VirtualBox

    Как использовать быстрые клавиши для запуска n-го элемента в диспетчере задач в KDE?

    Как изменить текущий каталог графически только с помощью клавиатуры?

    Проблема автоматического расширения с элементами массива, содержащими «*» (звездочку)

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