Как псевдоним «git» на «g», чтобы правила заполнения баха сохранялись?

Я создаю сценарий оболочки, который делает то, что вам нужно, т.е. проверяет подключение к сети, а затем отключает обновления. Затем вызовите скрипт из cron.

23
задан 19 September 2011 в 18:02

62 ответа

Копирование и изменение из /etc/bash_completion.d/git, добавьте следующие строки к вашему ~/.bashrc:

complete -o bashdefault -o default -o nospace -F _git g 2>/dev/null \
    || complete -o default -o nospace -F _git g
18
ответ дан 25 May 2018 в 18:44
  • 1
    Ха! Вундербар! Работает так же, как и должно :) – Paweł Gościcki 19 September 2011 в 18:32
  • 2
    Мне также пришлось добавить source /usr/share/bash-completion/completions/git в мой .bashrc – pcx 21 August 2014 в 11:46
  • 3
    Не уверен, что здесь работает код .bashrc, но этот ответ определенно устарел. /etc/bash_completion.d/git, похоже, не существует 14.04. См. ответ lzap ниже. – Max Wallace 6 November 2015 в 22:04

Копирование и изменение из /etc/bash_completion.d/git, добавьте следующие строки к вашему ~/.bashrc:

complete -o bashdefault -o default -o nospace -F _git g 2>/dev/null \ || complete -o default -o nospace -F _git g
19
ответ дан 25 July 2018 в 21:18

Копирование и изменение из /etc/bash_completion.d/git, добавьте следующие строки к вашему ~/.bashrc:

complete -o bashdefault -o default -o nospace -F _git g 2>/dev/null \ || complete -o default -o nospace -F _git g
20
ответ дан 31 July 2018 в 11:36

Копирование и изменение из /etc/bash_completion.d/git, добавьте следующие строки к вашему ~/.bashrc:

complete -o bashdefault -o default -o nospace -F _git g 2>/dev/null \ || complete -o default -o nospace -F _git g
20
ответ дан 2 August 2018 в 02:58

Копирование и изменение из /etc/bash_completion.d/git, добавьте следующие строки к вашему ~/.bashrc:

complete -o bashdefault -o default -o nospace -F _git g 2>/dev/null \ || complete -o default -o nospace -F _git g
20
ответ дан 4 August 2018 в 18:47

Копирование и изменение из /etc/bash_completion.d/git, добавьте следующие строки к вашему ~/.bashrc:

complete -o bashdefault -o default -o nospace -F _git g 2>/dev/null \ || complete -o default -o nospace -F _git g
20
ответ дан 6 August 2018 в 03:11

Копирование и изменение из /etc/bash_completion.d/git, добавьте следующие строки к вашему ~/.bashrc:

complete -o bashdefault -o default -o nospace -F _git g 2>/dev/null \ || complete -o default -o nospace -F _git g
20
ответ дан 7 August 2018 в 20:52

Копирование и изменение из /etc/bash_completion.d/git, добавьте следующие строки к вашему ~/.bashrc:

complete -o bashdefault -o default -o nospace -F _git g 2>/dev/null \ || complete -o default -o nospace -F _git g
20
ответ дан 10 August 2018 в 09:14

Последнее обновление bash-upstream перемещено и немного переименовано. Теперь это:

source /usr/share/bash-completion/completions/git
__git_complete g __git_main

Используйте это в последних версиях Ubuntu (например, 14.04, также Fedora 22+), когда вы сталкиваетесь:

completion: function `_git' not found

во время завершения.

13
ответ дан 25 May 2018 в 18:44
  • 1
    Похоже, это единственный правильный ответ. – pjvandehaar 3 November 2015 в 10:17
  • 2
    Используйте __git_complete gc _git_checkout (или аналогичный) для настройки завершений для более конкретных псевдонимов. Найдите /usr/.../git, как указано выше, чтобы найти правильное имя. – Max Wallace 6 November 2015 в 22:00
  • 3
    @MaxWallace - когда вы устанавливаете псевдонимы для определенных git-методов в .gitconfig (например, gc = checkout), нет необходимости явно настраивать их для завершения. – Piotr Aleksander Chmielowski 22 October 2016 в 10:43
  • 4
    @PiotrAleksanderChmielowski Спасибо! Но я не думаю, что это работает для псевдонимов bash верхнего уровня (например, gc = & gt; git checkout), в отличие от псевдонимов c - checkout в git, и говоря git c. Поправьте меня если я ошибаюсь. – Max Wallace 24 October 2016 в 15:33
  • 5
    @MaxWallace Да, вы правы, моя ошибка;) – Piotr Aleksander Chmielowski 24 October 2016 в 18:39

В ~/.bashrc:

alias g='git'
source /usr/share/bash-completion/completions/git
complete -o default -o nospace -F _git g

Через http://29a.ch/2013/8/9/fixing-bash-autocomplete-on-ubuntu-13-04

5
ответ дан 25 May 2018 в 18:44

Обновленный способ сделать это (полный не работает для меня):

cd - переключиться на домашний каталог wget https://raw.github.com/git/git/master/contrib/completion/git-completion.bash Добавить source ~/git-completion.bash в ваш .bashrc-файл (если вы не делайте этот файл в своей домашней папке, bash будет искать его автоматически). Добавьте alias g='git' в ваш .bashrc-файл. Начните новый сеанс или отправьте свои изменения с помощью source ~/.bashrc
1
ответ дан 25 May 2018 в 18:44
  • 1
    Вы пропустили часть, в которой они фактически добавили завершение в комментарий, который вы связали с: __git_complete g _git – pjvandehaar 3 November 2015 в 10:08

Как раз для полноты, я хотел бы добавить ответ, используя файл ~/.bash-completion, который будет получен в конце скрипта завершения bash:

_xfunc git __git_complete g __git_main
_xfunc git __git_complete gl _git_log
_xfunc git __git_complete gd _git_diff
_xfunc git __git_complete gb _git_branch

Затем в my ~/.bashrc У меня есть только псевдонимы. Я пытался:

избегать опроса моего ~/.bashrc с материалом для заполнения bash (хранить вещи там, где они есть) ✓ избегать использования всего git-завершения в моей оболочке ☹

Unforutnately _xfunc источник git-завершения в любом случае. Я обновлю этот ответ, когда выясню, как это сделать правильно (я также спросил здесь об обеденном столе).

0
ответ дан 25 May 2018 в 18:44

Посмотрите здесь: https://gist.github.com/scue/576310b7c6b7714aad05

wget https://gist.github.com/scue/576310b7c6b7714aad05/raw/459d46761c231f5c373c1cf496920b01bb6669d2/.bash_aliases.git -O ~/.bash_aliases.git
echo "test -e ~/.bash_aliases.git && source ~/.bash_aliases.git" >> ~/.bashrc

Наслаждайтесь! (^ o ^) /

-1
ответ дан 25 May 2018 в 18:44

Вы можете просто определить псевдонимы, как обычно:

alias g='git'

Затем установите полный псевдоним, чтобы сделать альянс с подтверждением bash.

-1
ответ дан 25 May 2018 в 18:44

обновленный способ сделать это (завершить не работает для меня):

cd - перейти в домашний каталог wget https://raw.github.com/git/git/master/contrib/completion/git-completion.bash Добавить [F3] для вашего .файл bashrc (если у вас нет этого файла сделать в вашем домашнем каталоге, баш будет искать его автоматически) Добавить [F4]и на ваш .файл bashrc. Начать новую сессию или источник изменения с source ~/.bashrc
1
ответ дан 25 July 2018 в 21:18
  • 1
    Вы пропустили часть, в которой они фактически добавили завершение в комментарий, который вы связали с: __git_complete g _git – pjvandehaar 3 November 2015 в 10:08

Вы можете просто определить псевдонимы, как обычно:

alias g='git'

Затем установите полный псевдоним, чтобы сделать альянс с подтверждением bash.

-1
ответ дан 25 July 2018 в 21:18

В ~/.bashrc:

alias g='git' source /usr/share/bash-completion/completions/git complete -o default -o nospace -F _git g

Через http://29a.ch/2013/8/9/fixing-bash-autocomplete-on-ubuntu-13-04

6
ответ дан 25 July 2018 в 21:18

Как раз для полноты, я хотел бы добавить ответ, используя файл ~/.bash-completion, который будет получен в конце скрипта завершения bash:

_xfunc git __git_complete g __git_main _xfunc git __git_complete gl _git_log _xfunc git __git_complete gd _git_diff _xfunc git __git_complete gb _git_branch

Затем в my ~/.bashrc У меня есть только псевдонимы. Я пытался:

избегать опроса моего ~/.bashrc с материалом для заполнения bash (хранить вещи там, где они есть) ✓ избегать использования всего git-завершения в моей оболочке ☹

Unforutnately _xfunc источник git-завершения в любом случае. Я обновлю этот ответ, когда выясню, как это сделать правильно (я также спросил здесь об обеденном столе).

0
ответ дан 25 July 2018 в 21:18

Посмотрите здесь: https://gist.github.com/scue/576310b7c6b7714aad05

wget https://gist.github.com/scue/576310b7c6b7714aad05/raw/459d46761c231f5c373c1cf496920b01bb6669d2/.bash_aliases.git -O ~/.bash_aliases.git echo "test -e ~/.bash_aliases.git && source ~/.bash_aliases.git" >> ~/.bashrc

Наслаждайтесь! (^ o ^) /

-1
ответ дан 25 July 2018 в 21:18

Последнее обновление bash-upstream перемещено и немного переименовано. Теперь это:

source /usr/share/bash-completion/completions/git __git_complete g __git_main

Используйте это в последних версиях Ubuntu (например, 14.04, также Fedora 22+), когда вы сталкиваетесь:

completion: function `_git' not found

во время завершения.

14
ответ дан 25 July 2018 в 21:18
  • 1
    Похоже, это единственный правильный ответ. – pjvandehaar 3 November 2015 в 10:17
  • 2
    Используйте __git_complete gc _git_checkout (или аналогичных) для установки дополнений для более конкретных синонимов. Поиск /usr/.../git, как выше, чтобы найти правильное имя. – Max Wallace 6 November 2015 в 22:00
  • 3
    @MaxWallace - когда вы устанавливаете псевдонимы для определенных git-методов в .gitconfig (например, gc = checkout), нет необходимости явно настраивать их для завершения. – Piotr Aleksander Chmielowski 22 October 2016 в 10:43
  • 4
    @PiotrAleksanderChmielowski Спасибо! Но я не думаю, что это работает для псевдонимов bash верхнего уровня (например, gc = & gt; git checkout), в отличие от aliasing c - checkout внутри git, и говоря git c. Поправьте меня если я ошибаюсь. – Max Wallace 24 October 2016 в 15:33
  • 5
    @MaxWallace Да, вы правы, моя ошибка ;) – Piotr Aleksander Chmielowski 24 October 2016 в 18:39

обновленный способ сделать это (завершить не работает для меня):

cd - перейти в домашний каталог wget https://raw.github.com/git/git/master/contrib/completion/git-completion.bash Добавить [F3] для вашего .файл bashrc (если у вас нет этого файла сделать в вашем домашнем каталоге, баш будет искать его автоматически) Добавить [F4]и на ваш .файл bashrc. Начать новую сессию или источник изменения с source ~/.bashrc
1
ответ дан 31 July 2018 в 11:36
  • 1
    Вы пропустили часть, в которой они фактически добавили завершение в комментарий, который вы связали с: __git_complete g _git – pjvandehaar 3 November 2015 в 10:08

Вы можете просто определить псевдонимы, как обычно:

alias g='git'

Затем установите полный псевдоним, чтобы сделать альянс с подтверждением bash.

-1
ответ дан 31 July 2018 в 11:36

В ~/.bashrc:

alias g='git' source /usr/share/bash-completion/completions/git complete -o default -o nospace -F _git g

Через http://29a.ch/2013/8/9/fixing-bash-autocomplete-on-ubuntu-13-04

6
ответ дан 31 July 2018 в 11:36

Как раз для полноты, я хотел бы добавить ответ, используя файл ~/.bash-completion, который будет получен в конце скрипта завершения bash:

_xfunc git __git_complete g __git_main _xfunc git __git_complete gl _git_log _xfunc git __git_complete gd _git_diff _xfunc git __git_complete gb _git_branch

Затем в my ~/.bashrc У меня есть только псевдонимы. Я пытался:

избегать опроса моего ~/.bashrc с материалом для заполнения bash (хранить вещи там, где они есть) ✓ избегать использования всего git-завершения в моей оболочке ☹

Unforutnately _xfunc источник git-завершения в любом случае. Я обновлю этот ответ, когда выясню, как это сделать правильно (я также спросил здесь об обеденном столе).

0
ответ дан 31 July 2018 в 11:36

Посмотрите здесь: https://gist.github.com/scue/576310b7c6b7714aad05

wget https://gist.github.com/scue/576310b7c6b7714aad05/raw/459d46761c231f5c373c1cf496920b01bb6669d2/.bash_aliases.git -O ~/.bash_aliases.git echo "test -e ~/.bash_aliases.git && source ~/.bash_aliases.git" >> ~/.bashrc

Наслаждайтесь! (^ o ^) /

-1
ответ дан 31 July 2018 в 11:36

Сначала найдите исходную команду завершения. Пример:

$ complete | grep git complete -o bashdefault -o default -o nospace -F __git_wrap__git_main git

Теперь добавьте их в свой сценарий запуска (например, ~ / .bashrc):

# copy the original statement, but replace the last command (git) with your alias (g) complete -o bashdefault -o default -o nospace -F __git_wrap__git_main g # load dynamically loaded completion functions (may not be required) _completion_loader git

Возможно, строка _completion_loader не требуется. Но для некоторых ситуаций функция завершения загружается динамически только после ввода команды и нажатия TAB в первый раз. Поэтому, если вы не использовали исходную команду и попробуйте псевдоним + TAB, вы можете получить сообщение об ошибке «bash: completion: function not found».

1
ответ дан 31 July 2018 в 11:36

Последнее обновление bash-upstream перемещено и немного переименовано. Теперь это:

source /usr/share/bash-completion/completions/git __git_complete g __git_main

Используйте это в последних версиях Ubuntu (например, 14.04, также Fedora 22+), когда вы сталкиваетесь:

completion: function `_git' not found

во время завершения.

14
ответ дан 31 July 2018 в 11:36
  • 1
    Похоже, это единственный правильный ответ. – pjvandehaar 3 November 2015 в 10:17
  • 2
    Используйте __git_complete gc _git_checkout (или аналогичный) для настройки завершений для более конкретных псевдонимов. Найдите /usr/.../git, как указано выше, чтобы найти правильное имя. – Max Wallace 6 November 2015 в 22:00
  • 3
    @MaxWallace - когда вы устанавливаете псевдонимы для определенных git-методов в .gitconfig (например, gc = checkout), нет необходимости явно настраивать их для завершения. – Piotr Aleksander Chmielowski 22 October 2016 в 10:43
  • 4
    @PiotrAleksanderChmielowski Спасибо! Но я не думаю, что работает на топ-уровне баш псевдонимы (например, gc => git checkout) в отличие от наложения спектров [F3] для [F4] и в git, и сказал git c. Поправьте меня, если я ошибаюсь. – Max Wallace 24 October 2016 в 15:33
  • 5
    @MaxWallace Да, вы правы, моя ошибка;) – Piotr Aleksander Chmielowski 24 October 2016 в 18:39

Обновленный способ сделать это (полный не работает для меня):

cd - переключиться на домашний каталог wget https://raw.github.com/git/git/master/contrib/completion/git-completion.bash Добавить source ~/git-completion.bash в ваш .bashrc-файл (если вы не делайте этот файл в своей домашней папке, bash будет искать его автоматически). Добавьте alias g='git' в ваш .bashrc-файл. Начните новый сеанс или отправьте свои изменения с помощью source ~/.bashrc
1
ответ дан 2 August 2018 в 02:58
  • 1
    Вы пропустили часть, в которой они фактически добавили завершение в комментарий, который вы связали с: __git_complete g _git – pjvandehaar 3 November 2015 в 10:08

Вы можете просто определить псевдонимы, как обычно:

alias g='git'

Затем установите полный псевдоним, чтобы сделать альянс с подтверждением bash.

-1
ответ дан 2 August 2018 в 02:58

в ~/.bashrc:

alias g='git' source /usr/share/bash-completion/completions/git complete -o default -o nospace -F _git g

через http://29a.ch/2013/8/9/fixing-bash-autocomplete-on-ubuntu-13-04

6
ответ дан 2 August 2018 в 02:58

Другие вопросы по тегам:

Похожие вопросы: