Расположение файла истории выходных данных оболочки bash

Где оболочка bash хранит фактический сеанс терминала? Я хочу прочитать вывод команд, которые я использовал раньше. Все, что я могу найти, - это как сохранить результат команды.

Поскольку вывод отображается на экране, его все равно нужно где-то сохранить. Итак, мой вопрос: где?

13
задан 19 April 2016 в 12:36

5 ответов

Bash только хранит историю команд, которые Вы выполнили (который можно получить путем ввода history). Если Вы уже не установили прокрутку назад на очень высокое количество, нет никакого способа видеть выводы, которые являются более старыми, чем установленное значение прокрутки назад. Также устанавливание этого значения к очень высокому количеству сделает Вашу прокрутку вялой, так как строки хранятся в памяти.

Для хранения будущих команд и их выводов существует немного опций:

Используя screen

Запустите экранную сессию путем ввода screen. После того как Вы - внутренний экран, нажмите Ctrl-a, затем: затем войдите log. Весь ввод-вывод будет получен в screenlog файлы в каталоге, где Вы запустили screen команда.

Используя script

Можно запустить путем ввода script. Сессия сценария запустится, который получит весь ввод-вывод в названный файл typescript. Можно выйти script сессия Ctrl-d и представлением журналы в typescript файл.

Используя tee

мишень является удобным инструментом. Можно сделать что-то вроде этого:

$ bash | tee log.txt

Это откроет новую оболочку удара в той, которую Вы уже выполняете. Когда Вы exit из этого Вы видите выводы в названном файле log.txt

Другие пути

Как Dustin Kirkland, предложенный в этом сообщении, можно также использовать byobu. Хотя, я никогда не использовал, терминальные инструменты экранной демонстрации, такие как Shelr также походит на опцию.

11
ответ дан 19 April 2016 в 22:36
  • 1
    Ну, мы соглашаемся, что некоторые данные RAID могли бы вызвать эту проблему. Возможно, @Mitar знает больше о RAID, чем мы;-) Иначе, давайте надеяться, что кто-то, кто знает больше об этом, внесет справку. – sudodus 1 September 2017 в 05:37

Существует команда, названная как сценарий, если бы не установленный затем apt-get install script сделал бы это.

Затем в терминале просто вводят сценарий.

и делают то, что когда-либо Вы хотите, после того, как Вы будете сделаны просто выход типа и затем будет файл, созданный в Вашем текущем каталоге со всем stdout и stdin информацией.

надежда это помогает Вам.

1
ответ дан 19 April 2016 в 22:36
  • 1
    Большое спасибо - didn' t знают evtest до настоящего времени... Я действительно удалял lirc (чисткой-cmd), и я удалил/etc/lirc папку. Тогда я действительно устанавливал evtest и с тех пор работы IR - также KEY_PREVIOUSSONG и KEY_NEXTSONG. Я пытался следовать Вашему дальнейшему описанию, но lirc-установка просто заблокировала удаленное снова... Так, так или иначе был конфликт, и теперь it' s уведенный с lirc:) Спасибо! – lorny 3 November 2017 в 09:15

Терминальный сеанс хранится в .bash_history файл. Введите это в свой терминал echo $HISTFILE, это дало бы Вам путь .bash_history файл.

-2
ответ дан 19 April 2016 в 22:36
  • 1
    Извините это не имело никакого влияния, я действительно замечал еще некоторую информацию в консоли, если это помогает. – Jackie 4 September 2017 в 03:10

Это не имеет никакого отношения к Вашей оболочке (bash), это isn функция эмулятора терминала, который Вы используете. Это хранится в Вашем терминале "scrollback буфер". Я не смог найти любые четкие объяснения того, где точно это хранится, но , личный опыт показал мне, что хранится где-нибудь в /tmp.

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

gedit newfile

Запись строка текста в файл и сохраняют его. Теперь, в то время как тот файл все еще открыт, откройте терминал и удалите его:

rm newfile

, Так как у Вас все еще есть файл, открытый в gedit, можно продолжить писать в него. Вы могли даже записать несколько гигабайтов данных в него, несмотря на то, что файл был удален. Поэтому удаление файла просто удаляет ссылку, указывающую на inode. Если дескриптор файла считается открытый другой программой, данные могут быть записаны в него, despitre то, что больше нет фактической ссылки (файл), соответствующий дескриптору файла в файловой системе.

Все это должно сказать, что история Вашего терминала, вероятно, сохраняется с помощью приема как этот, где-нибудь в удаленном файле в /tmp. То, что Вы, вероятно, на самом деле хотите, должно просто увеличиться, scrollback размер буфера Вас эмулятор терминала, таким образом, можно просто прокрутить и видеть его. Детали того, как сделать это, зависят ont он эмулятор терминала, который Вы используете. Большинство имеет переключатель командной строки, который позволяет Вашему и этому, и у многих также есть GUI способ установить его. Например, в gnome-terminal (значение по умолчанию на Ubuntu) это - Редактирование-> Предпочтения->, Профили---нажимают на Ваш профиль-> Редактирование-> Прокрутка-> Предел scrollback к NNN:

gnome-terminal options screen

1
ответ дан 19 April 2016 в 22:36
  • 1
    Я вполне уверен, я выполнил эти шаги за исключением параметра сети, учитывая информацию выше. Я буду идти вперед и испытывать его, но я чувствую, что это должно быть X проблемами, данными вышеупомянутую информацию и факт, это запускает и получает пакеты. Я просто can' t получают что-либо кроме tty – Jackie 4 September 2017 в 03:03

Существует много вопросов, связанных с этим, но они все запускают с (справа) предположение, что вывод не зарегистрирован.

, Таким образом, мой вопрос: где?

Нигде: Bash (и любая другая оболочка, что я знаю of's) вывод не зарегистрирован.

, Так как вывод отображен на экране, он должен быть сохранен где-нибудь так или иначе.

Это, но скорее всего не в простом тексте и даже на диске (хотя это действительно до эмулятора терминала): скорее всего, и по крайней мере в большинстве случаев, в сегменте памяти выделяется эмулятором терминала.

Однако наверняка это не зарегистрировано в файл, по крайней мере, не оболочкой, и я не знаю об эмуляторах терминала, которые регистрируют вывод в файл по умолчанию.

Действительно это не означает, что невозможно зарегистрировать терминальный вывод: сначала я упомяну что-то, что я думаю не, многие знают, так как я, никогда не имею не видел, что любой упомянул, что это по крайней мере здесь на Спрашивает Ubuntu: Konsole позволяет сохранять scrollback в файл (возможно, существуют другие эмуляторы терминала, которые обеспечивают такую функциональность, Konsole является просто единственным, который я знаю), хотя это ограничено scrollback пределом размера Konsole.

Это часто не действительно полезно, хотя, и скорее всего Вы захотите изучить "надлежащие" решения зарегистрировать вывод целой сессии в файл (, Как я регистрирую весь ввод и вывод на терминальном сеансе? и ответ Ron ).

5
ответ дан 19 April 2016 в 22:36
  • 1
    Это не проблема разделения, scsi слой видит неправильный размер... – pim 31 August 2017 в 22:06

Другие вопросы по тегам:

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