Сохранить весь вывод терминала в файл

Есть ли способ сохранить весь вывод терминала в файл с помощью команды?

  • Я не говорю о command > file.txt перенаправления command > file.txt
  • Не история history > file.txt , мне нужен полный текст терминала
  • Не с горячими клавишами!

Что-то вроде terminal_text > file.txt

  • Выполнять команду в удаленном активном терминале
  • Bash: параметр доступа, переданный последней команде
  • Попытка загрузить новые скины Yakuake на моей установке Arch / Gnome, но не может
  • Получение stdin из именованного канала
  • Есть ли страница руководства для цветного вывода оболочки?
  • Просмотр полных команд в выводе ps
  • Вертикальная прокрутка виртуального терминала очень медленная
  • Сделать curl / cat не прокручивать вниз, если вам нужен длинный текст?
  • 3 Solutions collect form web for “Сохранить весь вывод терминала в файл”

    Вы можете использовать script . В основном это сохранит все, что было напечатано на терминале в этом сеансе script .

    Из man script :

     script makes a typescript of everything printed on your terminal. It is useful for students who need a hardcopy record of an interactive session as proof of an assignment, as the typescript file can be printed out later with lpr(1). 

    Вы можете запустить сеанс script , просто набрав script в терминале, все последующие команды и их выходы будут сохранены в файле с именем typescript в текущем каталоге. Вы также можете сохранить результат в другом файле, просто запустив script например:

     script output.txt 

    Чтобы выйти из сеанса screen (прекратите сохранение содержимого), просто введите exit .

    Вот пример:

     $ script output.txt Script started, file is output.txt $ ls output.txt testfile.txt foo.txt $ exit exit Script done, file is output.txt 

    Теперь, если я прочитал файл:

     $ cat output.txt Script started on Mon 20 Apr 2015 08:00:14 AM BDT $ ls output.txt testfile.txt foo.txt $ exit exit Script done on Mon 20 Apr 2015 08:00:21 AM BDT 

    script также имеет множество опций, например, -q выполнение -q ( --quiet ) без отображения / сохранения сообщений программы, он также может запускать определенную команду -c ( --command ), а не сеанс, у нее также есть много других опций. Проверьте man script чтобы получить больше идей.

    Я тоже столкнулся с такой же проблемой, и после того, как поиск нашел это решение:

    Добавьте к своему .bash_aliases это:

     # Execute "script" command just once smart_script(){ # if there's no SCRIPT_LOG_FILE exported yet if [ -z "$SCRIPT_LOG_FILE" ]; then # make folder paths logdirparent=~/Terminal_typescripts logdirraw=raw/$(date +%F) logdir=$logdirparent/$logdirraw logfile=$logdir/$(date +%F_%T).$$.rawlog # if no folder exist - make one if [ ! -d $logdir ]; then mkdir -p $logdir fi export SCRIPT_LOG_FILE=$logfile export SCRIPT_LOG_PARENT_FOLDER=$logdirparent # quiet output if no args are passed if [ ! -z "$1" ]; then script -f $logfile else script -f -q $logfile fi exit fi } # Start logging into new file alias startnewlog='unset SCRIPT_LOG_FILE && smart_script -v' # Manually saves current log file: $ savelog logname savelog(){ # make folder path manualdir=$SCRIPT_LOG_PARENT_FOLDER/manual # if no folder exists - make one if [ ! -d $manualdir ]; then mkdir -p $manualdir fi # make log name logname=${SCRIPT_LOG_FILE##*/} logname=${logname%.*} # add user logname if passed as argument if [ ! -z $1 ]; then logname=$logname'_'$1 fi # make filepaths txtfile=$manualdir/$logname'.txt' rawfile=$manualdir/$logname'.rawlog' # make .rawlog readable and save it to .txt file cat $SCRIPT_LOG_FILE | perl -pe 's/\e([^\[\]]|\[.*?[a-zA-Z]|\].*?\a)//g' | col -b > $txtfile # copy corresponding .rawfile cp $SCRIPT_LOG_FILE $rawfile printf 'Saved logs:\n '$txtfile'\n '$rawfile'\n' } 

    И до конца вашего .bashrc-файла добавьте следующее:

     smart_script 

    После того, как вы это сделаете, команда «script» будет выполняться один раз в каждом сеансе терминала, записывая все в «~ / Terminal_typescripts / raw». Если вы хотите, вы можете сохранить текущий журнал сеанса после факта (в конце сеанса) , набрав «savelog» или «savelog logname» – это скопирует текущий необработанный журнал в «~ / Terminal_typescripts / manual», а также создаст читаемый .txt войдите в эту папку. (Если вы забудете сделать это, сырые файлы журналов все равно будут находиться в их папке, вам просто нужно их найти.) Также вы можете начать запись в новый файл журнала, набрав «startnewlog».

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

    (На основе https://answers.launchpad.net/ubuntu/+source/gnome-terminal/+question/7131 , https://askubuntu.com/a/493326/473790 )

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

    Interesting Posts
    Linux и Unix - лучшая ОС в мире.