Запустите скрипт после того, как некоторая команда выполнялась

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

На всякий случай существует аппаратная проблема, такая как плохая RAM или неисправный кабель, это заставляет неправильные данные быть считанными, можно попытаться читать из другой машины. Но это очень вряд ли будет иметь место, если Вы не можете ни загрузиться от раздела, ни считать его из живой среды CD.

Одна вещь это подозрительно, состоит в том, что у Вас есть расширенный раздел, запускающийся в цилиндре 8903, но первый логический раздел на нем запускается в цилиндре 8904. Попробовать sudo tail -c +513 /dev/sda2 | file - видеть, существует ли что-то распознаваемое в самом начале расширенного раздела. (Я не уверен, что смещение всегда 512, это могло бы быть 4096 или 32256 или некоторое другое число; обратите внимание, что необходимо добавить 1 к смещению для команды хвоста.), Если проблема состоит действительно в том, что Ваша таблица разделов зеркально отразила немного, использовать fdisk или Ваш любимый редактор раздела для изменения /dev/sda5 назад к запуску в цилиндре 8903.

1
19.05.2012, 14:07
1 ответ

Существует несколько способов автоматически выполнить что-то после определенной команды:

функция

Создайте функцию, названную в честь Вашей определенной команды, и выполните определенную команду впоследствии. Это - по-моему, самое простое и самое чистое решение.

function myotherscript() {
   command myotherscript "$@"
   other_command_to_be_executed
}

zsh

С zsh можно создать a precmd функция, которая будет выполняться перед подсказкой. Это позволяет Вам выполнять произвольные другие команды, но необходимо будет определить выполняемую команду сами.

function precmd() {
   last_cmd=$(history -1 |  sed -e "s/^[ ]*[0-9]*[ ]*//g")
   case "$last_cmd" in
   *myscript*) other_command;;
   *myotherscript*) other_other_command;;
   esac
}

удар

Bash имеет PROMPT_COMMAND переменная, разрешающая Вам реализовать Ваше собственное precmd функция. Для использования его, необходимо установить его на команду, которая будет выполняться перед подсказкой:

PROMPT_COMMAND="${PROMPT_COMMAND};bash_precmd"

function bash_precmd() {
  last_command=$(history 1 | sed -e "s/^[ ]*[0-9]*[ ]*//g")
  case "$last_command"  in
  *pattern*) command ;;
  esac
}

Если Вы используете удар и хотите использовать что-то как preexec или precmd взгляните на precmd и предварительное должностное лицо с ударом

4
27.01.2020, 23:21
  • 1
    , Ваше решение "для удара" работало на меня..., но я заменил "$ {PROMPT_COMMAND}; bash_precmd" с "bash_precmd"... Спасибо! –  Wolfy 20.05.2012, 19:46

Теги

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