Я тоже столкнулся с этой проблемой и после некоторых поисков пришел к такому решению:
Добавьте в .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'.
Будет много ненужных лог-файлов, но вы можете время от времени очищать старые, так что это не большая проблема.
(Based on https://answers.launchpad.net/ubuntu/+source/gnome-terminal/+question/7131 , https://askubuntu.com/a/493326/473790 )