Каково имя команды (функции), которая запускается после неудачной команды?

При запуске команды, если команда отсутствует, отображается некоторая информация о сбое команды.

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

  • Линия Linux: быстрый способ отключить Интернет (сохранение локальной сети)?
  • Извлеките все Zip в каталог (включая вложенные папки) с файлом .bat или командой dos
  • Как получить значение даты в командной строке
  • Получите последнее время изменения каталога рекурсивно
  • Почему «ipconfig» не распознается как внутренняя или внешняя команда?
  • Как отключить спящий режим через CMD?
  • Всякий раз, когда команда выдает команду $? Значение будет 127 . Я должен поймать это неудачное событие и запустить там свои команды.

  • Изменить UUID под Linux?
  • Как получить внешний IP-адрес (через NAT) из командной строки Windows?
  • Cd (сменить каталог) в мой домашний каталог на Windows
  • Какое самое простое объяснение тому, что приложения Windows не совместимы с Linux?
  • Как слышать звук микрофона над динамиками - Ubuntu karmic
  • Как найти мой IP-клиент VPN в окнах
  • 2 Solutions collect form web for “Каково имя команды (функции), которая запускается после неудачной команды?”

    У меня есть этот фрагмент в моем /etc/bash.bashrc (Ubuntu 14.04.4 LTS):

     # 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 

    Похоже, вы должны перезаписать функцию command_not_found_handle . Я не знаю, требуется ли command-not-found для этого; Наверное, нет, но я могу ошибаться.

    Пример:

     function command_not_found_handle { echo BOOM! ; } 

    Результат:

     $ foo12345 BOOM! $ echo "echo is valid command" echo is valid command $ agrgokdnlkdgnoajgldfnsdalf grhofhadljh BOOM! $ cat /etc/issue Ubuntu 14.04.4 LTS \n \l $ catt /etc/issue BOOM! 

    Чтобы вернуться (быстро и грязно):

     # Assuming you haven't modified /etc/bash.bashrc . /etc/bash.bashrc # Quick and dirty, because if your ~/.bashrc or ~/.bash_profile // # overwrites some settings from /etc/bash.bashrc // # you need to source them again. # Things may get complicated, I won't cover all the ifs here. # Logout and login again for the clean start. 

    Измените /etc/bash.bashrc чтобы изменить поведение «команда не найдено» для всех пользователей. Определите свой собственный command_not_found_handle в ~/.bashrc чтобы он работал только для вас. Или напишите два файла с соответствующими определениями функций, чтобы включить и отключить хак в любое время. Важно: не выполняйте файлы, создайте их следующим образом:

     . ~/.hack_enable . ~/.hack_disable 

    Где .hack_enable определяет вашу функцию, .hack_disable возвращается к исходному (из первого кодового блока моего ответа или чего-то подобного в вашем случае).

    Попробуйте следующий скрипт:

     if command ; then echo "Command succeeded" else echo "Command failed" fi 

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

    Давайте будем гением компьютера.