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


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

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


10
2018-04-19 09:26


происхождения




ответы:


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

Чтобы сохранить ваши будущие команды и их выходы, есть несколько вариантов:

С помощью screen

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

С помощью script

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

С помощью tee

тройник это удобный инструмент. Вы можете сделать что-то вроде этого:

$ bash | tee log.txt

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

Другие способы

Как предложил Дастин Киркланд это почты, вы также можете использовать бёбу, Хотя, я никогда не использовал, терминальные инструменты для скринкастинга, такие как Shelr также звучит как опция.


9
2018-04-19 10:05





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

Поэтому мой вопрос: где?

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

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

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

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

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

Однако это часто не очень полезно, и, скорее всего, вы захотите изучить «правильные» решения для регистрации вывода всего сеанса в файл (Как регистрировать все входные и выходные данные в сеансе терминала? а также Ответ Рона).


2
2018-04-19 10:09





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

Тогда в терминале просто наберите скрипт.

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

надеюсь, это поможет вам.


1
2018-04-19 09:38





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

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

gedit newfile

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

rm newfile

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

Все это говорит о том, что история вашего терминала, вероятно, сохраняется с помощью такого трюка, где-то в удаленном файле в /tmp, Вероятно, вы хотите просто увеличить размер буфера прокрутки вашего эмулятора терминала youre, чтобы вы могли просто прокручивать вверх и видеть его. Информация о том, как это сделать, зависит от используемого вами эмулятора терминала. У большинства из них есть переключатель командной строки, который позволяет вам и этим, а многие также имеют способ настройки GUI. Например, в gnome-terminal (по умолчанию на Ubuntu) это Edit -> Preferences -> Profiles --- нажмите на свой профиль -> Изменить -> Прокрутка -> Ограничить прокрутку до NNN:

gnome-terminal options screen


1
2018-04-19 10:16





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


-2
2018-04-19 09:31



Это дает только ранее выполненный команды, не вывод команд. - Ron