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

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

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

Всякий раз, когда команда выдает команду $? Значение будет 127 . Я должен поймать это неудачное событие и запустить там свои команды.

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 

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

  • Получение «неожиданно закрытого сетевого подключения к серверу»
  • В чем разница между контейнером Docker Ubuntu и контейнером LxD Ubuntu?
  • WiFi-карта не была обнаружена Windows впервые после перезапуска с Ubuntu в режиме двойной загрузки
  • Добавить загрузочные записи Windows после установки Ubuntu?
  • Как удалить / перезагрузить подсистему Windows для Linux в Windows Insider Build 14316
  • Преобразовать NTFS в EXT3?
  • Синхронизировать изменения системы на двух компьютерах?
  • Как разрешить гостевой доступ в SAMBA
  • Grub2 MBR против Windows MBR
  • Окно BSOD: «INACCESSIBLE_BOOT_DEVICE» после перераспределения и установки Ubuntu Gnome
  • Восстановить установку Ubuntu
  • Изменение часового пояса с dpkg-reconfigure tzdata и debconf-set-selection
  • Давайте будем гением компьютера.