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

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

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

git commit -am "test" 

станет…

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

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

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.

  • Перенаправление Makefile внутри кота heredocument исчезающих переменных и линейных ошибок
  • alias -g '$ {1 + "$ @"}' = '"$ @"', что он делает?
  • Как создать псевдоним для команды git (включая пробелы)?
  • find: отсутствует аргумент `-exec 'в Cygwin
  • Использовать параметр в аргументе команды
  • Использовать env с переменными окружения из файла
  • Запросить пароль запрограммировать программным путем с помощью сценария оболочки
  • ln -s удаляет часть имени файла, когда filename передается как переменная
  • Как я могу запустить «grep | grep "как строка в функции bash?
  • Как убедиться, что встроенное эхо-сообщение оболочки вызвано так, что оно не отображается в списке процессов?
  • Создание файлов tar из сценария оболочки с текущей меткой времени
  • Обратная косая черта с трубкой в ​​системной команде от awk
  • Interesting Posts

    Нестабильная сеть в интегрированной среде Debian

    Ресурсы для программирования переносных оболочек

    В чем разница между раскладкой клавиатуры X11 и разворачиванием виртуальной консоли

    Как изменить редактор GNOME по умолчанию?

    Контроль использования ЦП и памяти для одного процесса

    Почему у / proc / self / fd / 0 нет бит записи в последовательном сеансе перед запуском оболочки?

    звук во FreeBSD 11 внезапно внезапно внезапно

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

    Отключение имен столбцов в выводах ps

    X: alt / ctrl / f1 больше не работает после выключения и включения дисплея с помощью xrandr

    Почему у меня нет настроек hidraw в моей системе и как я могу исправить свои устройства USB?

    Почему USB-накопитель монтируется только для чтения после копирования образа диска на него?

    Наследует ли процесс как логические, так и физические рабочие каталоги?

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

    vim custom pop up menu

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