Intereting Posts

Заполните предлагаемое действие автоматически в Bash

Иногда ваш запрос подсказки предлагает вам действия.

Подобно:

The program 'htop' is currently not installed. You can install it by typing: apt-get install htop 

Или:

 the branch has no upstream branch yet, do git push --set-upstream origin branchname 

Есть ли команда или ярлык или подстановка для непосредственного выполнения такого предлагаемого действия без копирования или повторного набора кода (например, !! является заменой последней команды)?

Во-первых, приведенные вами примеры – это не одно и то же. В разделе Ubuntu объясняется команда «Не найденная магия» . Чтобы добавить более подробную информацию, на самом деле это сценарий Python, найденный в /usr/lib/command-not-found .

Вот пример:

 # /usr/lib/command-not-found htop The program 'htop' is currently not installed. You can install it by typing: apt-get install htop 

В /etc/bash.bashrc , включенном оболочкой Bash при запуске, мы определяем обработчик, не найденный командой:

 # if the command-not-found package is installed, use it if [ -x /usr/lib/command-not-found -o -x /usr/share/command-not-found/command-not-found ]; then function command_not_found_handle { # check because cnf could've been removed in the meantime if [ -x /usr/lib/command-not-found ]; then /usr/lib/command-not-found -- "$1" return $? elif [ -x /usr/share/command-not-found/command-not-found ]; then /usr/share/command-not-found/command-not-found -- "$1" return $? else printf "%s: command not found\n" "$1" >&2 return 127 fi } fi 

Bash версии 4+ использует command_not_found_handle как встроенное имя для обработки ситуаций, когда команда не найдена.

Существует новая встроенная функция обработки ошибок с именем command_not_found_handle .

 #!/bin/bash4 command_not_found_handle () { # Accepts implicit parameters. echo "The following command is not valid: \""$1\""" echo "With the following argument(s): \""$2\"" \""$3\""" # $4, $5 ... } # $1, $2, etc. are not explicitly passed to the function. bad_command arg1 arg2 # The following command is not valid: "bad_command" # With the following argument(s): "arg1" "arg2" 

Итак, короткий ответ – нет, нет возможности делать то, что вы просите, без анализа вывода и создания какой-то новой функциональности.