Измените командную строку командной строки на команду программ

В консоли можно ли изменить в команду «окружение»? Чтобы объяснить, я беру «git» в качестве примера. Во время программирования и использования репозитория git я перехожу к пути репозиториев, а затем выполняю множество команд «git», таких как «git x …», «git y …» и т. Д. Так что я хочу как-то изменить «на «git, так что мне не нужно набирать« git »все время, только« x … »и« y … ». Или это функция, которую вы обычно не хотите?

То, что вы просите, это «оболочка git». Кажется, что там есть имя git-sh .

Существует не обобщенное решение, о котором я знаю, но git – это не единственная программа с пользовательской оболочкой, предназначенная только для запуска ее собственных команд. Подобными примерами могут быть mysql , telnet , ftp и т. Д. На самом деле существует довольно много программ, которые имеют свои собственные встроенные оболочки, и у вас есть выбор либо подавать их в качестве аргументов, либо запускать их как оболочки и запускать команды внутренне.

Также полезно в этих строках выполнить вкладку. Хорошая библиотека завершения табуляции будет иметь все возможные команды и аргументы для программы, такой как git, на кончиках ваших пальцев.

Примечание. В то время как «git shell» является правильной терминологией здесь, не путайте проект «git-shell», который существует там, который предназначен для замены оболочки входа в систему, чтобы предоставить ограниченные разрешения только для действий git.

Вы можете определить команды git как псевдонимы в оболочке. Вам нужно сделать выбор, когда команда git также является командой оболочки, например git diff , git mv , … Функция all_git_aliases_on делает все команды git доступными без префикса git , тогда как функция all_git_aliases_on делает команды git доступными без префикса git если это имя не имеет команды оболочки.

Функция git_aliases_off удаляет эти псевдонимы; если у вас есть псевдонимы с тем же именем, что и команда git (например, alias mv='mv -i' ), они не будут восстановлены, вам нужно их снова установить (добавьте их определения в функцию git_aliases_off ).

Вы можете вызвать unambiguous_git_aliases_on из вашего ~/.bashrc или ~/.zshrc или предоставить toggle_git_aliases короткий псевдоним, такой как g .

 git_commands=$(git help -a | grep '^ *[az]') git_aliases= all_git_aliases_on () { for x in $git_commands; do alias $x="git $x" git_aliases="$git_aliases $x" done } unambiguous_git_aliases_on () { for x in $git_commands; do if ! type $x >/dev/null 2>/dev/null; then alias $x="git $x"; fi git_aliases="$git_aliases $x" done } git_aliases_off () { unalias $git_aliases git_aliases= } toggle_git_aliases () { if [ -n "$git_aliases" ]; then all_git_aliases_on else git_aliases_off fi } 

Вы можете сделать это, создав псевдонимы в вашем файле ~/.bashrc но будьте осторожны в выбранных псевдонимах, поскольку это может привести к переопределению других программ / сценариев командной строки. Вот пример использования ls :

  alias l = 'ls -Alh' 

Поэтому, когда я ls -Alh l в командной строке, bash запускает ls -Alh вместо этого. Таким образом, вы можете сделать что-то вроде:

  alias gx = 'git x' alias gy = 'git y' 

в вашем ~/.bashrc тогда запуск gx будет запускаться git x .

Я не знаю общего решения, которое будет работать для программ в целом.

Я бы сделал shell emulator . Это в основном небольшой скрипт, который даст вам фальшивое приглашение и примет определенные входные значения. Для exmaple это может выглядеть так:

 user@host ~$ gitshell Welcome to git-shell. Type help for command info >> help help - display this message x - do x y - do y exit - close the shell >> exit user@host ~$ 

Это не сложно скомпилировать (используйте python или perl или что-то еще), и как только вы поместите его в свой $ PATH, вы настроены на работу. Его можно использовать для git, hg, svn, что вы хотите. Просто идея, это то, что я сделал бы.