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

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

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

Всякий раз, когда команда выдает команду $? Значение будет 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 

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

  • Переустановите Windows 8 в раздел на OEM-машине для двойной загрузки (ubuntu)
  • Можно ли напрямую использовать физический раздел с Windows XP для загрузки виртуальной машины?
  • VirtualBox, работающий с Ubuntu, медленный (хост Mac OS X)
  • Получение «неожиданно закрытого сетевого подключения к серверу»
  • Как обновить с PHP v5.4 до PHP v5.5 в bitnami ubuntu
  • Нужно ли форматировать / разделять диск назначения ddrescue?
  • Перезагрузка браузера iceweasel (firefox)
  • Ubuntu против Mac OS
  • Как удалить Linux в двойной загрузке, установленной с помощью Windows XP
  • Почему мой USB-порт исправляет правила udev, не работает
  • Возможно ли «виртуализировать» существующий ПК?
  • Interesting Posts

    Есть ли способ сделать Ctrl + f в Chrome, используя выделенный текст, в соответствии с Firefox?

    Как проверить, выполняет ли gcc оптимизацию хвостовой рекурсии?

    Компоненты AngularJS 1.5+ не поддерживают Watchers, какова работа?

    Почему я должен выбирать Libav над FFmpeg, или есть даже разница?

    Как включить перезагрузку в Windows 7 для сеансов удаленного рабочего стола?

    ConcurrentModificationException и HashMap

    Управление полосой пропускания при использовании GPRS в Windows 7

    Как отключить энергосбережение на аудиовыходах сабвуфера Lenovo Y50?

    Android – локальное изображение в webview

    Как я могу объединить или объединить два или более файлов MP4, создающих другой файл MP4?

    Автоматически запускать сценарий при входе в Windows

    Отсутствует Open-With при щелчке правой кнопкой мыши по файлу в Windows 7

    Есть ли функция eval () в Java?

    Что такое эквивалент C # для друга?

    Как я могу выборочно отключить блокаторы пасты

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