Cygwin64 Terminal 记录命令及返回结果

一.修改 ~/.bashrc 中的配置

 1.方法一:修改 ~/.bashrc 中的配置(多个cygwin64 terminal也会写入一个日志)

  if [ -z "$SCRIPT_RUNNING" ]; then
      export SCRIPT_RUNNING=1
      LOG_DIR=~/terminal_logs
      mkdir -p "$LOG_DIR"
      script -a -f "$LOG_DIR/$(date +%Y-%m-%d).log"
      exit
  fi

  

2.方法二:修改 ~/.bashrc 中的配置(保证每个cygwin64 terminal窗口单独一个日志文件)

  if [ -z "$SCRIPT_RUNNING" ]; then
      export SCRIPT_RUNNING=1
      LOG_DIR=~/terminal_logs
      mkdir -p "$LOG_DIR"
      # 日期 + 开启时间 + 进程ID,三重保证唯一
      LOG_FILE="$LOG_DIR/$(date +%Y-%m-%d_%H%M%S)_$$.log"
      export CURRENT_LOG="$LOG_FILE"   # 方便随时查看当前日志路径
      script -f "$LOG_FILE"
      exit
  fi

  

 3.方法三:修改 ~/.bashrc 中的配置(可选择记录或不记录,5秒无输入自动默认 Y 开始录制)

if [ -z "$SCRIPT_RUNNING" ]; then
    read -t 5 -p "Record terminal? [Y/n] " _choice
    _choice=${_choice:-Y}
    if [[ "$_choice" =~ ^[Yy]$ ]]; then
        export SCRIPT_RUNNING=1
        LOG_DIR=~/terminal_logs
        mkdir -p "$LOG_DIR"
        LOG_FILE="$LOG_DIR/$(date +%Y-%m-%d_%H%M%S)_$$.log"
        export CURRENT_LOG="$LOG_FILE"
        script -f "$LOG_FILE"
        exit
    fi
fi

 

 

二.对记录的日志文件处理

1. 自动压缩旧日志

# 压缩7天前的日志(gzip后体积减少约70-80%)
find ~/terminal_logs/ -name "*.log" -mtime +7 -exec gzip {} \;

 

2.限制单个日志文件大小,写够50MB后不再写入

#用 ulimit 限制 script 子进程最大文件写入(#最大50MB):

(ulimit -f $((50*1024)); script -f "$LOG_FILE") 

 

 

三.查看日志(避免乱码)
cat xxx.log | less -r
cat xxx.log | less -R (会有部分乱码)
less -r xxx.log
less -R xxx.log

posted @ 2026-03-21 22:13  铿锵有力自信且坚定  阅读(14)  评论(0)    收藏  举报