script: записывать оба кода выхода и выхода

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

Можно ли зафиксировать это в журналах script ? В идеале без отображения его пользователю сеанса script , но это было бы приемлемо, если необходимо.

Пример запуска скрипта:

 me:~ oliverlade$ script Script started, output file is typescript bash-3.2$ echo "hello" hello bash-3.2$ true bash-3.2$ false bash-3.2$ exit exit Script done, output file is typescript 

Содержимое файла журнала:

 me:~ oliverlade$ cat typescript Script started on Sun Aug 7 13:02:43 2016 bash-3.2$ echo "hello" hello bash-3.2$ true bash-3.2$ false bash-3.2$ exit exit Script done on Sun Aug 7 13:03:03 2016 

Что бы я хотел:

 me:~ oliverlade$ cat typescript Script started on Sun Aug 7 13:02:43 2016 bash-3.2$ echo "hello" hello (exit 0) bash-3.2$ true (exit 0) bash-3.2$ false (exit 1) bash-3.2$ exit exit Script done on Sun Aug 7 13:03:03 2016 

  • Обработка ошибок сценария оболочки при назначении переменной STDOUT переменной
  • Как передать содержимое файла в виде нескольких аргументов в bash
  • Использование фиксированных строк в регулярных выражениях?
  • Функция Bash присваивает значение переданному параметру
  • Изменение цвета PS1 при подключении к другому хосту через SSH
  • копировать mp3 в целевой каталог, поддерживающий структуру каталогов и удаляя файлы при завершении копирования
  • xinput - Ctrl + <Left> неправильно, если сопоставление истории-поиска-назад
  • Почему интерактивные оболочки на OSX-входах по умолчанию?
  • 2 Solutions collect form web for “script: записывать оба кода выхода и выхода”

    На страницах script man:

     -e, --return 

    «Верните код выхода дочернего процесса. Используется в том же формате, что и окончание bash при завершении кода завершения сигнала, равно 128 + n». Я неправильно истолковал это …

    Если вам нужно использовать script , кажется, что лучший способ увидеть последний код выхода – это добавить его в приглашение оболочки. Это не плохая идея сделать это в любом случае.

    Вы можете включить статус выхода последней выполненной команды ( $? ) В своем основном приглашении ( PS1 ).

    Один пример:

     $ PS1='$? \$ ' 0 $ 

    Тестирование:

     0 $ false 1 $ 

    Вы должны использовать одинарные кавычки, чтобы избежать расширения $? во время назначения PS1 . Вы не должны export переменную приглашения.

    Другой пример:

     $ PS1=$'(exit $?)\n$ ' (exit 0) $ 

    Тестирование:

     (exit 0) $ false (exit 1) $ 
    Linux и Unix - лучшая ОС в мире.