Можно ли нажать Shift-k и открыть руководство для команды в Bash?

Согласно wireless.wiki устройство Intel® Wireless 8260 поддерживается ядром 4.1 и более поздними версиями,

Установите build-essential и заголовки linux

загрузите iwlwifi-8000-ucode-25.30.13.0.tgz из здесь {{ 1}} Введите следующую команду:

tar -zxvf iwlwifi-8000-ucode-25.30.13.0.tgz
cd iwlwifi-8000-ucode-25.30.13.0
sudo cp iwlwifi*.ucode /lib/firmware/

Загрузите бэкпорт из здесь пример:

wget https://www.kernel.org/pub/linux/kernel/projects/backports/stable/v4.3/backports-4.3-1.tar.gz

Распакуйте его и скомпилируйте модуль iwlwifi :

cd backports-4.3-1
make defconfig-iwlwifi
make
sudo make install

Перезагрузите

{{1 }}

4
14.11.2016, 20:32
3 ответа

Вы можете привязать функцию bash к клавише с помощью bind -x . В этой функции вы можете получить доступ к текущему содержимому входного буфера через переменные READLINE_LINE и READLINE_POINT .

run_man () {
  declare prefix="${READLINE_LINE:0:$READLINE_POINT}" suffix="${READLINE_LINE:$READLINE_POINT}"
  declare word="${prefix##*[!-+.0-9A-Z_a-z]}${suffix%%[!-+.0-9A-Z_a-z]*}"
  man "$word"
}
bind -m vi -x '"K": run_man'

Возможно, было бы полезнее открыть страницу руководства для слова в позиции команды, чем для слова под курсором, но это требует более сложного анализа. В этом может помочь код завершения bash. Или вы можете согласиться на первое слово в строке, что требует меньшего анализа, чем получение текущего слова.

Чтобы обнаружить встроенные команды bash и показать документацию по bash вместо страницы руководства, см. универсальная команда help / man: help встроенные частичные совпадения

P.S.

Было бы неплохо увидеть человека, не удаляя всю команду из командной строки.

Я часто делаю это в zsh . Я ожидаю, что это возможно и в bash, но более сложное в настройке.

1
27.01.2020, 20:59

Просто используйте раскрытие истории , чтобы указать имя последней заданной команды.

$ grep something
$ man !:0

Поскольку раскрытие истории выполняется перед раскрытием псевдонима , если вы хотите использовать псевдоним, вы должны сделать это так:

alias k='man "$(history -p \!:0)"'

Затем просто введите k , чтобы посмотреть на человека страница последней выполненной команды.

1
27.01.2020, 20:59

tl; dr

Это нестандартная операция, но вы можете легко ее добавить. См. этот ответ (ссылка) .

Если вы все еще хотите взломать исходный код ...

Я прочитал исходный код readline , и похоже, что добавить желаемая функциональность. readline уже поддерживает опцию v , которая позволяет вам войти в режим редактирования и открыть свой $ EDITOR . Если проанализировать логику того, как readline открывает $ EDITOR , то будет довольно легко открыть man со словом под курсором в качестве аргумента.

Вот несколько интересных grep:

  • grep -RI EDITOR *

     doc / hsuser.texi: используется: @code {$ @ {FCEDIT: - $ @ {EDITOR: -vi @} @}} . Здесь говорится об использовании переменной 
    doc / hsuser.texi: @env {EDITOR}, если она установлена, или @code {vi}, если ни одна из них не установлена. 
    doc / rluser.texi: @ code {$ VISUAL}, @code {$ EDITOR} и @code {emacs} 
    examples / rlfe / ChangeLog: * параметры строки; используйте EDITOR / VISUAL для установки предпочтений vi / emacs. 
    examples / rlfe / README: но если для переменной среды EDITOR установлено значение "vi", то 
    examples / rlfe / rlfe.c: * варианты линии; используйте EDITOR / VISUAL для установки предпочтений vi / emacs. 
    examples / rlfe / rlfe.c: if (getenv ("EDITOR")! = 0) 
    examples / rlfe / rlfe.c: vi | = strcmp (getenv ("EDITOR"), "vi") == 0; 
     
  • grep -RI -C 5 режим редактирования * .c

     bind.c- {"bell- style ", V_STRING, sv_bell_style}, 
    bind.c- {" начало комментария ", V_STRING, sv_combegin}, 
    bind.c- {" ширина-отображения-завершения ", V_INT, sv_compwidth }, 
    bind.c- {"завершение-префикс-длина-отображения", V_INT, sv_dispprefix}, 
    привязка.c- {"элементы-запроса-завершения", V_INT, sv_compquery}, 
    bind.c: {"режим-редактирования", V_STRING, sv_editmode}, 
    bind.c- {"emacs- строка режима ", V_STRING, sv_emacs_modestr}, 
    bind.c- {" размер-истории ", V_INT, sv_histsize}, 
    bind.c- {" isearch-terminators ", V_STRING, sv_isrchterm }, 
    bind.c- {"keymap", V_STRING, sv_keymap}, 
    bind.c- {"keyseq-timeout", V_INT, sv_seqtimeout}, 
     - { {1}} - 
    bind.c- else if (_rl_stricmp (name, "Завершение-элементы-запроса") == 0) 
    bind.c- {
    bind .c- sprintf (numbuf, "% d", rl_completion_query_items); 
    bind.c- return (numbuf); 
    bind.c-} 
    bind.c: else if (_rl_stricmp (name, "режим редактирования") == 0) 
    bind.c- return (rl_get_keymap_name_from_edit_mode ()); 
    bind.c- else if (_rl_stricmp (name, "history- size ") == 0) 
    bind.c- {
    bind.c- sprintf (numbuf,"% d ", history_is_stifled ()? history_max_entries: 0); 
    привязать .c- return (numbuf); 
     - 
     - 
    funmap.c- {"do-lowercase-version", rl_do_lowercase_version}, 
    funmap .c- {"downcase-word", rl_downcase_word}, ​​
    funmap.c- {"dump-functions", rl_dump_functions}, 
    funmap.c- {"dump-macros", rl_dump_macros} , 
    funmap.c- {"dump-variables", rl_dump_variables}, 
    funmap.c: {"emacs-editor-mode", rl_emacs_editing_mode}, 
    funmap.c- {"end-kbd-macro", rl_end_kbd_macro}, 
    funmap.c- {"end-of-history", rl_end_of_history}, 
    funmap.c- {"end-of-line" , rl_end_of_line}, 
    funmap.c- {"exchange-point-and-mark", rl_exchange_point_and_mark}, 
    funmap.c- {"forward-backward-delete-char", rl_rubout_or_delete}, 
     - 
     - 
    funmap.c- {"vi-column", rl_vi_column}, 
    funmap.c- {"vi-complete", rl_vi_complete }, 
    funmap.c- {"vi-delete", rl_vi_delete}, 
    funmap.c- {"vi-delete-to", rl_vi_delete_to}, 
    funmap.c- {"vi-eWord", rl_vi_eWord}, ​​
    funmap.c: {"vi-edit-mode" , rl_vi_editing_mode}, 
    funmap.c- {"vi-end-bigword", rl_vi_eWord}, ​​
    funmap.c- {"vi-end-word", rl_vi_end_word}, ​​{{1} } funmap.c- {"vi-eof-maybe", rl_vi_eof_maybe}, 
    funmap.c- {"vi-eword", rl_vi_eword}, ​​
    funmap.c- {"vi-fWord ", rl_vi_fWord}, ​​
     
0
27.01.2020, 20:59

Теги

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