命令行是 Linux 的灵魂。掌握一些技巧后,很多操作比图形界面快得多。这里分享我平时用得最多的一些命令行技巧。
用 Ctrl + R 反向搜索历史命令,输入关键词就能快速找到之前执行过的命令,比按上箭头翻找快太多了。
# 按 Ctrl+R 后输入关键词 (reverse-i-search)`docker': docker compose up -d # 查看最近执行过的命令 history | tail -20 # 搜索包含某个关键词的历史命令 history | grep "git push"
管道 | 是 Linux 最强大的概念之一,把一个命令的输出作为另一个命令的输入,可以组合出很强的功能。
# 找出占用空间最大的 10 个文件 du -ah /var/log | sort -rh | head -10 # 统计当前目录下各类型文件数量 find . -type f | sed 's/.*\.//' | sort | uniq -c | sort -rn # 实时监控日志中的错误信息 tail -f /var/log/syslog | grep --color "error\|fail" # 批量查找并替换文件内容 grep -rl "old_text" . | xargs sed -i 's/old_text/new_text/g'
把常用的长命令设置成短别名,写到 ~/.bashrc 或 ~/.zshrc 里,每次开终端自动生效。
# 在 ~/.bashrc 中添加 alias ll='ls -alFh' alias gs='git status' alias gp='git push' alias dc='docker compose' alias ports='ss -tlnp' alias myip='curl -s ifconfig.me' alias cls='clear' # 添加后执行 source 使其生效 source ~/.bashrc
xargs 可以把标准输入转换成命令参数,配合管道使用非常强大。
# 删除所有 .log 文件 find /tmp -name "*.log" | xargs rm -f # 批量压缩图片(需要 imagemagick) find . -name "*.png" | xargs -I {} convert {} -quality 80 {} # 并行执行(-P 指定并发数) find . -name "*.gz" | xargs -P 4 gunzip
花括号展开可以快速生成多个文件名或路径,省去重复输入。
# 一次创建多个目录 mkdir -p project/{src,dist,docs,test} # 快速备份文件 cp config.yml{,.bak} # 同时移动多个文件 mv file.{txt,md}
cd - 快速切换到上一次所在的目录!! 重复上一条命令,常搭配 sudo !! 使用Ctrl + X + E 在编辑器中编写长命令command && echo "成功" || echo "失败" 简易条件执行watch -n 2 command 每 2 秒执行一次命令并刷新输出time command 查看命令执行耗时命令行技巧没有尽头,但不用一次学完。先把别名和管道用起来,已经能省下很多时间了。遇到重复操作的时候再想想有没有更好的办法,慢慢就会越来越熟练。