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

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

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

git commit -am "test" 

станет…

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

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

  • Вызов bash из sh (тире) с командами, считанными из args, и «Unterminated quoteed string» / «неожиданный EOF»
  • Что такое «s» внутри «$ -»?
  • Есть ли способ распечатать значение внутри переменной внутри одной кавычки?
  • Перенаправление Makefile внутри кота heredocument исчезающих переменных и линейных ошибок
  • Объединение команды, включающей одиночные и двойные кавычки для другой команды
  • Не допускайте зависания «echo STRING> fifo», когда ничего не читает, что FIFO
  • Выключение команды linux
  • байты эха в файл
  • 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.

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