一、终端也要有"仪式感"------炫酷登录效果
1.1 每次登录都是惊喜
bash
# 在 ~/.bashrc 文件最后添加
echo "🚀 $(whoami) 大佬,欢迎回到终端世界!"
echo "📅 今天是 $(date '+%Y年%m月%d日 %A')"
echo "⏰ 现在是 $(date '+%H:%M:%S')"
echo "💻 你登录的是:$(hostname)"
fortune | cowsay # 随机名人名言 + ASCII艺术
效果:
text
________________________________________
/ 代码写得好,bug自然少。 —— 佚名 \
\ /
----------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
1.2 天气早知道
bash
# 每天登录先看天气(需要 curl)
echo "🌤️ 今日天气:"
curl -s "wttr.in/北京?format=3" # 改成你的城市
效果:
text
🌤️ 今日天气:
北京: 🌤️ +12°C
二、文件管理"魔法"------高效又好玩
2.1 智能文件整理
bash
# 一键整理下载文件夹(按类型分类)
organize_downloads() {
cd ~/Downloads
mkdir -p images documents archives videos others
# 移动图片
find . -maxdepth 1 -type f -name "*.jpg" -o -name "*.png" -o -name "*.gif" | xargs -I {} mv {} images/
# 移动文档
find . -maxdepth 1 -type f -name "*.pdf" -o -name "*.docx" -o -name "*.txt" | xargs -I {} mv {} documents/
# 移动压缩包
find . -maxdepth 1 -type f -name "*.zip" -o -name "*.tar.gz" | xargs -I {} mv {} archives/
# 移动视频
find . -maxdepth 1 -type f -name "*.mp4" -o -name "*.avi" | xargs -I {} mv {} videos/
# 其他文件
find . -maxdepth 1 -type f | xargs -I {} mv {} others/
echo "🎉 下载文件夹整理完成!"
}
2.2 文件大小可视化
bash
# 用字符画显示文件夹大小
alias disksize='du -sh * | sort -hr | head -20 | awk '\''{printf "%10s %s\n", $1, $2}'\'' | graph -t "#" -s "文件大小分布"'
# 或者用更简单的方式
alias treeview='du -h --max-depth=1 | sort -hr | head -10'
效果:
text
4.2G movies/
2.1G downloads/
1.5G documents/
800M images/
三、系统监控"仪表盘"------一目了然
3.1 迷你系统监控
bash
# 实时系统状态监控
sysmon() {
watch -n 1 -t '
echo "════════════════════════════════════"
echo "🖥️ 系统状态监控 - $(date "+%H:%M:%S")"
echo "════════════════════════════════════"
echo "👤 用户: $(whoami)"
echo "💻 主机: $(hostname)"
echo "📈 CPU负载: $(uptime | awk -F"load average:" '\''{print $2}'\'')"
echo "🧠 内存: $(free -h | awk '\''/Mem:/ {print $3"/"$2}'\'')"
echo "💾 磁盘: $(df -h / | awk '\''NR==2 {print $3"/"$2 " ("$5")"}'\'')"
echo "🔥 温度: $(sensors | grep "Core" | head -1 | awk '\''{print $3}'\'')"
echo "🌐 IP地址: $(hostname -I | cut -d" " -f1)"
echo "════════════════════════════════════"
'
}
3.2 进程管理游戏化
bash
# 用ASCII进度条显示CPU使用率
alias cpumon='watch -n 0.5 "ps -eo pcpu,pid,comm --sort=-pcpu | head -10"'
# 内存使用饼图(字符版)
memchart() {
free | awk '
BEGIN {print "内存使用饼图:"}
/Mem:/ {
total=$2
used=$3
free=$4
used_blocks=int(used/total*50)
free_blocks=50-used_blocks
printf "已使用: ["
for(i=0;i<used_blocks;i++) printf "█"
for(i=0;i<free_blocks;i++) printf "░"
printf "] %d%%\n", used/total*100
}'
}
四、网络工具"瑞士军刀"------功能强大
4.1 智能网络诊断
bash
# 一键网络故障排查
netdoctor() {
echo "🔍 开始网络诊断..."
echo "1️⃣ 检查网络连接..."
ping -c 3 8.8.8.8 | grep "packet loss"
echo "2️⃣ 检查DNS解析..."
nslookup google.com | grep "Address"
echo "3️⃣ 检查路由..."
traceroute -n 8.8.8.8 | head -5
echo "4️⃣ 检查端口..."
echo "本地监听端口:"
netstat -tunlp | grep LISTEN | head -5
echo "✅ 诊断完成!"
}
4.2 下载管理器(带进度条)
bash
# 美观的下载命令
fancy_download() {
url=$1
filename=$(basename $url)
echo "⬇️ 开始下载: $filename"
# 使用curl显示进度条
curl -L --progress-bar $url -o $filename
# 下载完成提示
echo "✅ 下载完成!"
echo "📁 文件大小: $(du -h $filename | cut -f1)"
echo "🔍 MD5: $(md5sum $filename | cut -d" " -f1)"
}
五、编程辅助"小助手"------开发更高效
5.1 代码行数统计(带图表)
bash
# 统计项目代码行数
code_stats() {
echo "📊 代码统计报告"
echo "════════════════════════════════════"
# 统计各种语言的代码行数
total=0
echo "Python文件:"
find . -name "*.py" -exec wc -l {} + | tail -1 | awk '{print $1 "行"}'
echo "JavaScript文件:"
find . -name "*.js" -exec wc -l {} + | tail -1 | awk '{print $1 "行"}'
echo "HTML文件:"
find . -name "*.html" -exec wc -l {} + | tail -1 | awk '{print $1 "行"}'
echo "CSS文件:"
find . -name "*.css" -exec wc -l {} + | tail -1 | awk '{print $1 "行"}'
echo "════════════════════════════════════"
echo "📈 总计: $(find . -name "*.py" -o -name "*.js" -o -name "*.html" -o -name "*.css" | xargs wc -l | tail -1 | awk '{print $1 "行"}')"
}
5.2 Git状态美化
bash
# 更直观的git状态
alias gitstatus='git status -s | awk '\''
{
if ($1 == "??") printf "🆕 新文件: %s\n", $2
else if ($1 == "M") printf "✏️ 已修改: %s\n", $2
else if ($1 == "D") printf "🗑️ 已删除: %s\n", $2
else if ($1 == "A") printf "✅ 已暂存: %s\n", $2
}'\'''
# 提交计数统计
gitstats() {
echo "👤 作者贡献统计:"
echo "════════════════════════════════════"
git shortlog -s -n --all | head -10 | awk '{printf "%-20s %5d次提交\n", $2" "$3, $1}'
echo ""
echo "📅 每日提交统计:"
echo "════════════════════════════════════"
git log --pretty=format:"%ad" --date=short | sort | uniq -c | tail -7 | awk '{printf "%s: %3d次\n", $2, $1}'
}
六、娱乐休闲"小游戏"------终端也能玩
6.1 终端打字游戏
bash
# 简单的打字练习游戏
typing_game() {
words=("linux" "terminal" "command" "bash" "script" "programming" "developer" "opensource")
echo "⌨️ 打字游戏开始!输入下面出现的单词"
echo "════════════════════════════════════"
score=0
total=5
for ((i=1; i<=total; i++))
do
word=${words[$RANDOM % ${#words[@]}]}
echo "第 $i/$total 个单词: $word"
read -t 10 user_input
if [ "$user_input" == "$word" ]; then
echo "✅ 正确!"
((score++))
else
echo "❌ 错误!正确答案: $word"
fi
echo ""
done
echo "游戏结束!得分: $score/$total"
}
6.2 终端扫雷游戏
bash
# 需要安装 bsd-games
alias minesweeper='wget -qO- https://raw.githubusercontent.com/feherke/Bash-script/master/minesweeper/minesweeper.sh | bash'
七、实用生活"小工具"------终端解决一切
7.1 简易计算器
bash
# 支持自然语言的计算器
calc() {
echo "🧮 计算器模式 (输入q退出)"
echo "支持: + - * / ^ sqrt() sin() cos()"
while true; do
read -p "算式: " expr
if [ "$expr" == "q" ]; then
break
fi
# 使用bc计算
result=$(echo "$expr" | bc -l 2>/dev/null)
if [ $? -eq 0 ]; then
echo "= $result"
else
echo "❌ 计算错误"
fi
done
}
7.2 随机密码生成器
bash
# 生成安全密码
genpass() {
length=${1:-16}
echo "🔐 生成的密码:"
# 方法1:使用openssl
openssl rand -base64 48 | cut -c1-$length
echo ""
echo "💡 密码强度分析:"
echo "长度: $length 字符"
echo "包含: 大小写字母、数字、特殊符号"
# 生成二维码(方便手机扫描)
echo ""
echo "📱 二维码:"
openssl rand -base64 48 | cut -c1-$length | qrencode -t ASCII
}
八、一键配置脚本------让终端瞬间强大
8.1 终端美化一键配置
bash
#!/bin/bash
# 保存为 setup_terminal.sh
echo "🎨 开始配置终端..."
echo "════════════════════════════════════"
# 安装必要工具
echo "1️⃣ 安装工具..."
sudo apt-get install -y fortune cowsay lolcat neofetch sl cmatrix
# 配置bashrc
echo "2️⃣ 配置bashrc..."
cat >> ~/.bashrc << EOF
# ===== 自定义配置 =====
# 欢迎信息
echo "🌟 欢迎回来,\$(whoami)!"
echo "📅 \$(date)"
fortune | cowsay | lolcat
# 别名
alias ll='ls -la --color=auto'
alias ..='cd ..'
alias ...='cd ../..'
alias c='clear'
alias h='history'
alias ports='netstat -tulanp'
# 函数
weather() { curl wttr.in/\${1:-北京}; }
mcd() { mkdir -p "\$1" && cd "\$1"; }
cls() { clear; echo -e "\033c"; }
# 提示符美化
PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
EOF
echo "3️⃣ 配置完成!"
echo "════════════════════════════════════"
echo "重启终端或运行: source ~/.bashrc"
echo "试试这些命令:"
echo " neofetch - 显示系统信息"
echo " sl - 火车动画"
echo " cmatrix - 矩阵效果"
echo " weather - 查看天气"
九、最佳实践组合
9.1 每日工作流
bash
# 早上打开终端的工作流
morning() {
clear
echo "🌅 早上好,$(whoami)!"
date
echo ""
# 看天气
curl -s "wttr.in/北京?format=3"
echo ""
# 看日程(如果有)
if [ -f ~/.agenda ]; then
echo "📅 今日安排:"
grep "$(date +%Y-%m-%d)" ~/.agenda || echo "今天没有安排"
fi
echo ""
echo "💼 系统状态:"
uptime
echo ""
# 未读邮件(如果有配置)
if command -v neomutt &> /dev/null; then
echo "📧 未读邮件:"
neomutt -f imaps://imap.gmail.com -e "exit" | grep "未读" || echo "0封未读"
fi
}
9.2 学习Linux的趣味命令
bash
# Linux学习游戏
learn_linux() {
commands=("ls" "cd" "pwd" "cp" "mv" "rm" "cat" "grep" "find" "chmod")
descriptions=(
"列出目录内容"
"切换目录"
"显示当前目录"
"复制文件"
"移动或重命名文件"
"删除文件"
"查看文件内容"
"搜索文本"
"查找文件"
"修改文件权限"
)
echo "🐧 Linux命令学习卡片"
echo "════════════════════════════════════"
for i in {1..5}; do
index=$((RANDOM % ${#commands[@]}))
echo "命令: ${commands[$index]}"
read -p "它的作用是?" answer
echo "正确答案: ${descriptions[$index]}"
echo ""
done
}
十、高级创意组合
10.1 终端ASCII艺术
bash
# 随机显示ASCII艺术
show_art() {
arts=("cowsay" "figlet" "toilet" "jp2a")
case ${arts[$RANDOM % ${#arts[@]}]} in
"cowsay")
fortune | cowsay
;;
"figlet")
echo "LINUX" | figlet
;;
"toilet")
echo "TERMINAL" | toilet -f term
;;
"jp2a")
if command -v jp2a &> /dev/null; then
jp2a --colors ~/Pictures/linux.png 2>/dev/null || echo "需要图片"
fi
;;
esac
}
# 添加到bashrc
echo 'alias art="show_art"' >> ~/.bashrc
10.2 智能命令提示
bash
# 输入错误命令时的智能提示
command_not_found_handle() {
echo "🤔 命令未找到: $1"
echo "📚 相关命令:"
# 在历史中找相似命令
history | grep "$1" | tail -3 | sed 's/^[ ]*[0-9]*[ ]*//'
# 使用apropos搜索
echo ""
echo "🔍 手册搜索:"
apropos "$1" 2>/dev/null | head -5
}