目录
一、系统监控与信息展示
1. 动态系统仪表盘
2. ASCII艺术系统信息
二、文件操作的艺术
3. 智能文件整理器
4. 文件差异可视化对比
三、多媒体与娱乐
5. 终端音乐播放器
6. 终端视频播放(是的,真的可以!)
四、网络与安全
7. 实时网络流量监控墙
8. SSH登录艺术
五、游戏与趣味
9. 终端2048游戏
10. ASCII时钟
六、数据处理与可视化
11. 实时日志分析仪表板
12. 磁盘使用树状图
七、创意彩蛋
13. 终端屏保
14. 命令行数字雨(黑客帝国效果)
15. 会说话的终端
实用技巧组合
16. 一键系统健康检查
17. 智能命令历史搜索
终极挑战:一行命令的艺术
18. 一行命令创建ASCII艺术视频播放器
19. 一行命令实现终端聊天室
如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。
一、系统监控与信息展示
1. 动态系统仪表盘
# 一行命令创建实时监控面板 watch -n1 -c "echo '=== $(date) ==='; echo 'CPU:' && top -bn1 | grep 'Cpu' | awk '{print \$2}' | head -1 && echo 'MEM:' && free -h | awk '/Mem:/{print \$3\"/\"\$2}' && echo 'DISK:' && df -h / | awk 'NR==2{print \$5}' && echo 'TOP进程:' && ps -eo pid,comm,%cpu,%mem --sort=-%cpu | head -6" # 更优雅的版本(彩色显示) while true; do clear echo -e "\033[1;36m========== 系统监控面板 ==========\033[0m" echo -e "\033[1;33m时间: \033[0m$(date '+%Y-%m-%d %H:%M:%S')" echo -e "\033[1;33m运行: \033[0m$(uptime -p)" echo -e "\033[1;33m负载: \033[0m$(uptime | awk -F'load average:' '{print $2}')" echo -e "\033[1;33mCPU: \033[0m$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1"%"}')" echo -e "\033[1;33m内存: \033[0m$(free -m | awk 'NR==2{printf "%.2f%%", $3*100/$2}')" echo -e "\033[1;33m磁盘: \033[0m$(df -h / | awk 'NR==2{print $5}')" echo -e "\033[1;33m温度: \033[0m$(sensors | grep 'Core 0' | awk '{print $3}')" echo -e "\033[1;36m===============================\033[0m" sleep 2 done2. ASCII艺术系统信息
# 用figlet和lolcat创建炫酷标题 figlet "System Info" | lolcat && echo "" && neofetch --ascii_distro arch # 如果没有neofetch,用基础命令拼装 echo " .--. " && echo " |o_o | Host: $(hostname)" && echo " |:_/ | User: $(whoami)" && echo " // \\ \\ OS: $(cat /etc/os-release | grep PRETTY_NAME | cut -d= -f2)" && echo "(| | ) Kernel: $(uname -r)" && echo "'-._.-' Uptime: $(uptime -p | sed 's/up //')"二、文件操作的艺术
3. 智能文件整理器
# 自动按扩展名分类文件并创建目录整理 find . -maxdepth 1 -type f | while read file; do ext="${file##*.}"; [[ "$ext" == "$file" ]] && ext="no_extension"; mkdir -p "./sorted/$ext"; mv "$file" "./sorted/$ext/"; done 2>/dev/null && tree sorted/ # 更高级:按文件类型(图片、文档、压缩包等)分类 file_classify() { for f in *; do if [[ -f "$f" ]]; then case $(file --mime-type -b "$f") in image/*) dir="Images" ;; text/*) dir="Documents" ;; application/pdf) dir="PDFs" ;; application/zip|application/gzip|application/x-rar*) dir="Archives" ;; audio/*) dir="Music" ;; video/*) dir="Videos" ;; *) dir="Others" ;; esac mkdir -p "$dir" mv "$f" "$dir/" fi done }4. 文件差异可视化对比
# 用字符画展示文件差异 diff -u file1.txt file2.txt | awk '{ if (/^\+/) {print "\033[32m" $0 "\033[0m"} else if (/^\-/) {print "\033[31m" $0 "\033[0m"} else {print "\033[37m" $0 "\033[0m"} }' | less -R # 或者用更直观的side-by-side显示 diff -y --suppress-common-lines file1.txt file2.txt | awk 'BEGIN { print "\033[1;34m左边文件\033[0m\t\t\033[1;34m右边文件\033[0m" print "========================================" } { gsub(/\t/, " ", $0) if ($0 ~ /\|/) {print "\033[33m" $0 "\033[0m"} else if ($0 ~ /</) {print "\033[31m" $0 "\033[0m"} else if ($0 ~ />/) {print "\033[32m" $0 "\033[0m"} else {print $0} }'三、多媒体与娱乐
5. 终端音乐播放器
# 用ffmpeg在终端播放音频频谱 ffplay -nodisp -f lavfi "amovie='song.mp3', asplit [a][out1]; [a] showspectrum=mode=combined:color=fire:scale=log [out0]" # 终端ASCII音乐可视化 mpg123 -q song.mp3 | ffmpeg -i - -f wav - | sox -t wav - -t raw - | awk 'BEGIN { chars=" .,:;i1tfLCG08@" width=60 height=20 } { for(i=0; i<height; i++) { for(j=0; j<width; j++) { idx=int(rand()*length(chars)) printf "%c", substr(chars, idx+1, 1) } print "" } system("sleep 0.05") printf "\033[20A" }' 2>/dev/null6. 终端视频播放(是的,真的可以!)
# 用libcaca将视频转为ASCII艺术播放 mplayer -vo caca movie.mp4 # 或者用ffmpeg + jp2a播放视频缩略图 ffmpeg -i video.mp4 -vf "fps=10,scale=80:40" -f image2pipe -vcodec ppm - | while read -r line; do if [[ $line == P3* ]]; then jp2a --colors - <(echo "$line" && cat) 2>/dev/null sleep 0.1 printf "\033[40A" fi done四、网络与安全
7. 实时网络流量监控墙
# 类似电影《黑客帝国》的数字雨效果显示网络流量 sudo tcpdump -l -i eth0 | awk '{ gsub(/./,"&\n") for(i=1;i<=80;i++) { char=int(rand()*94+33) printf "\033[32m%c\033[0m", char } print "" system("sleep 0.01") printf "\033[1A" }' | tr '\n' ' ' # 更实用的流量监控 watch -n1 -c "echo -e '\033[1;36m=== 网络连接监控 ===\033[0m' && netstat -tunap | awk '/ESTABLISHED/{print \$5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -10 | while read count ip; do echo \"\$count次连接: \$ip (\$(whois \$ip | grep -i 'org-name\\|netname' | head -1 | cut -d: -f2))\"; done"8. SSH登录艺术
# 在~/.bashrc中添加,每次SSH登录时显示 echo -e "\033[1;35m" cat << "EOF" ╔═══════════════════════════════════════╗ ║ 欢迎访问 $(hostname)! ║ ║ 上次登录: $(last -2 | head -2 | tail -1 | awk '{print $4" "$5" "$6" "$7}') ║ ║ 系统负载: $(uptime | awk -F'load average:' '{print $2}') ║ ╚═══════════════════════════════════════╝ EOF echo -e "\033[0m" # 或者用随机名言 fortunes | cowsay -f $(ls /usr/share/cowsay/cows/ | shuf -n1) | lolcat五、游戏与趣味
9. 终端2048游戏
# 一行命令玩2048(需要安装2048-cli) # 如果没有,这里有个简化版: python3 -c " import random, os def print_board(board): os.system('clear') for row in board: print(' '.join(f'{x:4}' if x else ' .' for x in row)) board = [[0]*4 for _ in range(4)] def add_tile(): empty = [(i,j) for i in range(4) for j in range(4) if not board[i][j]] if empty: board[random.choice(empty)[0]][random.choice(empty)[1]] = 2 add_tile(); add_tile() while True: print_board(board) move = input('WASD: ').lower() # 这里实现移动逻辑(篇幅限制简化) add_tile() "10. ASCII时钟
# 实时显示ASCII艺术时钟 while true; do clear echo -e "\033[1;36m" figlet -f digital $(date +%H:%M:%S) | lolcat echo -e "\033[1;33m" cal | grep -A7 -B7 $(date +%e) | sed "s/$(date +%e)/\033[41m&\033[0m/" echo -e "\033[0m" sleep 1 done # 更简单的数字时钟 watch -n1 -c 'date +"%H:%M:%S" | figlet -f big'六、数据处理与可视化
11. 实时日志分析仪表板
# 监控日志文件并实时统计 tail -f /var/log/nginx/access.log | awk '{ # 解析日志行 split($4, datetime, "[") split(datetime[2], date, ":") hour = date[2] # 统计 status[$9]++ ip[$1]++ endpoint[$7]++ hourly[hour]++ # 每10行更新显示 if (NR % 10 == 0) { system("clear") print "\033[1;36m========== Nginx访问统计 ==========\033[0m" print "\033[1;33m状态码分布:\033[0m" for (s in status) printf " %s: %d次\n", s, status[s] print "\033[1;33m热门IP:\033[0m" asorti(ip, sorted_ip) for (i=length(sorted_ip); i>length(sorted_ip)-5; i--) printf " %s: %d次\n", sorted_ip[i], ip[sorted_ip[i]] print "\033[1;33m时间分布:\033[0m" for (h=0; h<24; h++) if (hourly[h]) printf " %02d时: %d次\n", h, hourly[h] } }'12. 磁盘使用树状图
# 用字符画显示磁盘使用情况 du -h --max-depth=1 2>/dev/null | sort -hr | awk 'BEGIN { print "\033[1;36m磁盘使用分析:\033[0m" max=0 } NR>1 { size=$1 path=$2 gsub(/^[0-9.]+[KMGT]/, "", $0) gsub(/^[[:space:]]+/, "", path) # 计算条形图长度 len=int($1*50/max) bar="" for(i=0;i<len;i++) bar=bar"█" printf "%-40s \033[33m%10s \033[32m%s\033[0m\n", path, size, bar if(NR==2) max=$1+0 }' # 或者用更直观的tree风格 find . -type f -exec du -h {} + 2>/dev/null | sort -hr | head -20 | awk '{ depth = gsub(/\//, "/", $2) indent = "" for(i=0; i<depth; i++) indent = indent "│ " if (match($2, /[^/]+$/)) { filename = substr($2, RSTART) printf "%s├── \033[1;34m%s\033[0m \033[33m(%s)\033[0m\n", indent, filename, $1 } }'七、创意彩蛋
13. 终端屏保
# 浮动的ASCII字符屏保 while true; do clear cols=$(tput cols) lines=$(tput lines) for ((i=1; i<=lines; i++)); do for ((j=1; j<=cols; j++)); do if (( RANDOM % 100 < 5 )); then char=$(printf "\\$(printf '%03o' $((RANDOM%94+33)))") echo -ne "\033[32m$char\033[0m" else echo -n " " fi done echo done sleep 0.5 done # 或者显示名言+ASCII艺术 while true; do clear fortune | cowsay -f $(ls /usr/share/cowsay/cows/*.cow | shuf -n1) | lolcat sleep 10 done14. 命令行数字雨(黑客帝国效果)
# 经典的数字雨效果 LINES=$(tput lines) COLUMNS=$(tput cols) declare -A matrix for ((i=1;i<=COLUMNS;i++)) do matrix[$i]=$((RANDOM % LINES)) done printf "\033[?25l" # 隐藏光标 while true; do for ((i=1;i<=COLUMNS;i++)) do r=$(($RANDOM % 20)) if [ $r -eq 1 ]; then matrix[$i]=0 fi line=${matrix[$i]} printf "\033[%d;%dH\033[32m%s\033[0m" $line $i $(printf "\\$(printf '%03o' $((RANDOM%74+48)))") matrix[$i]=$((line + 1)) if [ ${matrix[$i]} -gt $LINES ]; then matrix[$i]=0 fi done sleep 0.05 done15. 会说话的终端
# 终端语音助手(需要espeak) echo "你好,我是终端助手!" | espeak -v zh 2>/dev/null & # 交互式对话 while true; do read -p "你说: " input if [[ "$input" == "退出" ]]; then echo "再见!" | espeak -v zh break fi echo "你说的是: $input" | espeak -v zh # 可以集成ChatGPT API变成智能助手 # response=$(curl -s -X POST https://api.openai.com/v1/chat/completions ...) # echo "$response" | espeak done实用技巧组合
16. 一键系统健康检查
# 创建别名,快速检查系统状态 alias healthcheck=' echo -e "\033[1;36m=== 系统健康检查 ===\033[0m" echo -e "\033[1;33m1. 磁盘空间:\033[0m" && df -h | grep -E "Filesystem|/$" echo -e "\033[1;33m2. 内存使用:\033[0m" && free -h echo -e "\033[1;33m3. 负载情况:\033[0m" && uptime echo -e "\033[1;33m4. 登录用户:\033[0m" && who echo -e "\033[1;33m5. 网络连接:\033[0m" && netstat -tun | wc -l | awk "{print \"ESTAB连接: \"\$1}" echo -e "\033[1;33m6. 服务状态:\033[0m" systemctl list-units --type=service --state=failed 2>/dev/null | head -5 echo -e "\033[1;33m7. 最近错误:\033[0m" && journalctl -p 3 -xb --no-pager | tail -3 ' # 添加到~/.bashrc永久使用17. 智能命令历史搜索
# 按频率排序的命令历史 history | awk '{CMD[$2]++;count++;} END {for (a in CMD) print CMD[a] " " CMD[a]/count*100 "% " a;}' | column -c3 -s " " -t | sort -nr | nl | head -20 | while read num freq cmd; do printf "\033[1;35m%2d\033[0m \033[33m%10s\033[0m \033[36m%s\033[0m\n" $num $freq "$cmd" done # 交互式历史搜索(类似Ctrl+R但更好用) histsearch() { grep -r "$1" ~/.bash_history | awk -F: '{print $2}' | sort | uniq -c | sort -rn | fzf --height=40% --reverse | sed 's/^ *[0-9]* *//' }终极挑战:一行命令的艺术
18. 一行命令创建ASCII艺术视频播放器
ffmpeg -i input.mp4 -vf "scale=80:40,format=gray" -f rawvideo -pix_fmt gray - | od -An -t u1 -w80 | awk '{for(i=1;i<=NF;i++){c=int($i/32);printf "%s",substr(" .,:;i1tfLCG08@",c+1,1)};print ""}' | while read line; do printf "\033[H%s" "$line"; sleep 0.033; done19. 一行命令实现终端聊天室
# 服务器端 nc -l -p 1234 | while read msg; do echo "$(whoami) [$(date +%H:%M)]: $msg" | tee -a chat.log; done & # 客户端 tail -f chat.log & while read msg; do echo "$msg" | nc localhost 1234; done小贴士:
- 很多效果需要安装额外工具:
lolcat、figlet、cowsay、neofetch、jp2a - 颜色代码:
\033[32m绿色,\033[33m黄色,\033[36m青色,\033[0m重置 - 使用
watch -n1实现定时刷新,clear清屏 - 保存为脚本或添加到
~/.bashrc的别名中
如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。