создать псевдо-оболочку для команды

Я чувствую, что в какой-то степени это должно быть несправедливо …

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

git commit -am "test" 

станет…

 ./shell_comand git >commit -am "test" >status 

поэтому, очевидно, такие вещи, как автозаполнение и что-то не получилось, но я ожидал бы, что в противном случае это должно быть выполнимо в некоторой степени? Я просто не совсем понимаю, как …

  • Почему мой сценарий оболочки дает ошибку: «объявить: не найден»?
  • эхом basename под xargs?
  • Как определить, откуда появилась переменная среды
  • Bash - синтаксис в эхом
  • Использует env и экспортирует то же самое?
  • Установленный PDFInfo с Homebrew Cask, но не команда, связанная с "pdfinfo"
  • Что такое переменная среды?
  • Использовать расширение .sh или .bash для сценариев bash?
  • 2 Solutions collect form web for “создать псевдо-оболочку для команды”

    Я предполагаю, что это должно быть выполнимо в самой git , но поскольку я не эксперт git, я бы использовал в функциях оболочки. В sh совместимой версии (например, bash ) вы можете легко написать функцию git которая будет вызываться вместо двоичного git (будьте осторожны, чтобы использовать полный путь к двоичной функции внутри функции или command git в BASH – для предотвращения нежелательная рекурсия):

     function git () { case "$1" in "commit") # do your stuff /path/to/git ... ;; *) # call git binary with the same arguments /path/to/git "$@" ;; } 

    Вы можете использовать только alias команд ( alias ), но функции дают вам больше гибкости.

    Что касается завершения, проверьте функциональность завершения оболочки (для поиска bash на странице man) – это, безусловно, возможно заставить его работать, и это даже не должно быть слишком сложным.

    Один из способов – определить псевдонимы для каждой команды git. Вы все равно можете запускать обычные команды оболочки; если это нежелательно, установите PATH в несуществующий каталог. Если вы хотите запустить команду оболочки, а не команду git, поместите обратную косую черту перед командой (например, \rm foo чтобы удалить файл).

     git_commands=$(COLUMNS=2 git --help --all | sed -n -e '1,/^----/d' -e '1,/^$/p') for c in $git_commands; do alias "$c=git $c" done 

    В zsh у вас даже будет завершение, если у вас установлена ​​опция complete_aliases . Я не знаю о bash.

    Interesting Posts

    Shell: «Показать все возможности 2588?»

    Административно распространять несколько правил для каждого получателя Thunderbird для некоторых пользователей?

    Могу ли я заставить Ctrl-C в дочернем процессе выполнять некоторые действия в родительском процессе?

    Как работает «groupinstall»? (Как преобразовать групповую установку в обычную программу multi yum install <package> -y?)

    Маршрутизация трафика на сетевой принтер через определенный интерфейс

    Проблемы при попытке выполнить sh-файл из другого sh-файла

    Есть ли способ определить оптимальное значение для параметра bs для dd?

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

    Почему -backup подразумевает алгоритм дельта-передачи, который, в свою очередь, подразумевает -u?

    file (1) завершение команды при использовании опции -f –

    Вычисление в функции приводит к ошибке

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

    Дождитесь завершения процесса, прежде чем перейти к следующей строке в сценарии оболочки

    Как записать debian iso в usb

    Переименование кратных файлов с помощью Bash-скриптов

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