123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- #!/bin/bash
- # 交互式命令行模式
- interactive_mode() {
- # 设置终端为非规范模式,不需要按回车即可读取输入
- old_tty=$(stty -g)
- stty raw -echo
- while true; do
- echo -en "\r请输入命令 (c: 清空日志, p: 打印日志, l: 查看日志, t: 实时查看日志, m: 复制错误信息, q: 退出): "
- cmd=$(dd bs=1 count=1 2>/dev/null)
- echo # 换行
- case $cmd in
- c)
- > storage/logs/laravel.log
- echo "日志已清空。"
- ;;
- p)
- errors=$(cat storage/logs/laravel.log | grep "ERROR")
- if [ -n "$errors" ]; then
- echo
- cat storage/logs/laravel.log | grep "ERROR"
- echo
- else
- echo "未发现错误信息。"
- fi
- ;;
- l)
- # 恢复终端设置以便less命令正常工作
- stty $old_tty
- less storage/logs/laravel.log
- # 重新设置非规范模式
- stty raw -echo
- ;;
- t)
- # 恢复终端设置以便tail命令正常工作
- stty $old_tty
- tail -f -n 1000 storage/logs/laravel.log
- # 重新设置非规范模式
- stty raw -echo
- ;;
- q)
- # 恢复终端设置后退出
- stty $old_tty
- echo "退出程序"
- exit 0
- ;;
- m)
- if [ "$(uname)" == "Darwin" ]; then
- errors=$(cat storage/logs/laravel.log | grep "ERROR")
- if [ -n "$errors" ]; then
- cat storage/logs/laravel.log | grep -m1 "ERROR" | \
- awk '{print $0,"\n\n","上面是错误日志,请帮我修复这个bug,并始终用中文语言回答。"}' | pbcopy
- echo "已复制错误信息到剪贴板,你可以问AI助手,Ta会给你解决错误。"
- else
- echo "未发现错误信息。"
- fi
- else
- errors=$(cat storage/logs/laravel.log | grep "ERROR")
- if [ -n "$errors" ]; then
- echo "正在复制错误信息到剪贴板..."
- cat storage/logs/laravel.log | grep -m1 "ERROR" | \
- awk '{print $0,"\n\n","上面是错误日志,请帮我修复这个bug,并始终用中文语言回答。"}' | xclip -selection clipboard
- echo "已复制错误信息到剪贴板,你可以问AI助手,他会给你解决错误。"
- else
- echo "未发现错误信息。"
- fi
- fi
- ;;
- *)
- echo "无效命令。使用 'c' 清空日志, 'p' 打印日志, 'l' 查看日志, 't' 实时查看日志, 'm' 复制错误信息, 'q' 退出。"
- ;;
- esac
- done
- }
- interactive_mode
|