Linux高手必备:30个高效命令行技巧

目录

一、文件与目录:一切从 ls 说起

 二、文件查看与内容检索

三、文件传输:scp 老去,rsync 当立

四、系统资源监控:top 三兄弟

 五、进程与信号:kill 不止是 9

六、网络诊断:ip 时代别再用 ifconfig

七、权限模型:chmod 数字背后的位运算

 八、压缩与归档:tar 的一百种写法

 九、包管理:apt、yum、dnf、pacman 一条龙

 十、开发调试:strace 到 journalctl

结语


一、文件与目录:一切从 ls 说起

  1. ls
    场景:99 % 的时间都花在浏览目录。
    语法:ls -lha --color=auto
    技巧:配合 dircolors 自定义颜色,一眼区分管道文件、可执行文件、压缩包。
    陷阱:在挂载了大量小文件的目录里直接 ls -l 会阻塞,用 ls -1(数字 1)或 find 代替。

  2. tree
    场景:需要把目录结构发给同事或写文档。
    语法:tree -L 3 -I 'pycache|*.pyc'
    技巧:tree -H . > index.html 可一键生成带超链接的网页版目录树。
    陷阱:符号链接循环会导致 tree 死循环,记得 -l 选项。

  3. touch / mkdir -p
    场景:创建空文件或级联目录。
    语法:mkdir -p /opt/app/{bin,conf,logs}
    技巧:touch file{01..12}.log 一次生成 12 个日志文件。
    陷阱:touch 可以篡改 mtime 做“假日志”,审计时要留意。

 二、文件查看与内容检索

  1. cat / tac / less / tail -f
    场景:小文件 cat,大文件 less,实时日志 tail -f。
    技巧:less +F file.log 等价于 tail -f,但随时 Ctrl+C 回到 less 浏览模式。
    陷阱:cat 二进制文件会污染终端,用 reset 或 echo -e '\033c' 救场。

  2. grep / ripgrep (rg)
    场景:快速找代码或日志关键字。
    语法:rg -i 'error.*timeout' --type py -C3
    技巧:rg 默认忽略 .gitignore,比 grep -r 更“懂”项目。
    陷阱:grep -R 不会忽略二进制文件,加 -I 可提速。

  3. awk / sed
    场景:按列切分、批量替换。
    语法:awk -F: '$3>=1000{print $1}' /etc/passwd
    技巧:sed -i.bak 's/http:/https:/g' *.md 自动备份。
    陷阱:macOS 的 sed -i 必须加 '',否则报错。

三、文件传输:scp 老去,rsync 当立

  1. rsync
    场景:增量同步、带进度、可断点续传。
    语法:rsync -avzP --exclude=.git /data/ root@backup:/bak/
    技巧:rsync --link-dest 实现每日硬盘快照,只存差异。
    陷阱:末尾斜杠决定同步的是目录本身还是目录里的内容。

  2. scp / sftp
    场景:临时拷一个文件,或图形化工具 FileZilla 后台。
    语法:scp -C -l 8192 big.iso user@host:/tmp/
    技巧:scp -3 host1:file host2:file 不走本地中转。
    陷阱:OpenSSH 9.x 已标记 scp 为“过时”,推荐用 sftp。

四、系统资源监控:top 三兄弟

  1. top / htop
    场景:看 CPU、内存、Load。
    技巧:htop F6 可按任意列排序,F9 杀进程;top -H -p PID 看线程。
    陷阱:top 默认不显示 I/O,需安装 iotop。

  2. free -h / vmstat 1
    场景:快速确认内存瓶颈。
    技巧:vmstat 1 第 1 列的 si/so 持续非 0 说明在疯狂 swap。
    陷阱:free 看到的 available 才是真的可用内存,别被 used 吓到。

  3. df -h / ncdu
    场景:磁盘吃满。
    技巧:ncdu / 10 秒生成互动式目录大小报告,方向键直接删。
    陷阱:ext4 预留 5 % root 空间,df 看到 100 % 还能写一点。

 五、进程与信号:kill 不止是 9

  1. ps aux / pgrep / pkill
    场景:查僵尸、杀进程。
    语法:pkill -9 -f 'python manage.py'
    技巧:ps -eo pid,ppid,lstart,cmd 看父子关系和启动时间。
    陷阱:kill -9 可能导致数据不一致,先试试 -15。

  2. nohup / setsid / disown
    场景:让进程脱离终端。
    语法:nohup ./long.sh &>run.log &
    技巧:disown -a 把已运行的作业彻底托管给 init。
    陷阱:nohup 不会自动把 stdin 重定向到 /dev/null,手动加 <&-。

  3. systemd-run / at / cron
    场景:一次性或定时任务。
    语法:systemd-run --on-calendar='Mon --* 03:00' /usr/local/bin/backup.sh
    技巧:at now + 1 hour 适合“30 分钟后重启 nginx”这种临时需求。
    陷阱:cron 不继承系统 PATH,务必写全路径。

六、网络诊断:ip 时代别再用 ifconfig

  1. ip / ss
    场景:取代 ifconfig、netstat。
    语法:ip -br a; ss -tulpn
    技巧:ss -o state established '( dport = :80 or sport = :80 )' 查 80 端口活跃连接。
    陷阱:ss 比 netstat 快,但老脚本可能不兼容。

  2. ping / mtr / traceroute
    场景:线路质量。
    技巧:mtr -r 8.8.8.8 生成文本报告,适合邮件发送。
    陷阱:运营商 ICMP QoS 可能丢包,用 tcptraceroute -p 80 更真实。

  3. curl / wget / httpie
    场景:接口调试。
    语法:http -v POST pie.dev/post hello=world token:==abc123
    技巧:curl -H @headers.txt -d @body.json URL 复用文件。
    陷阱:curl -L 追踪重定向,但 30x 到 file:// 会下载本地文件,注意安全。

七、权限模型:chmod 数字背后的位运算

  1. chmod / chown / chgrp
    场景:网站目录 755、密钥 600。
    技巧:chmod -R g+wX . 仅给目录加 SGID,并保证文件可执行位不被误改。
    陷阱:chmod 777 永远不是解决方案,用 ACL:setfacl -m u:nginx:rwx uploads/。

  2. umask
    场景:默认权限。
    技巧:在 ~/.bashrc 写 umask 027,确保同组无写权限。
    陷阱:sftp 上传文件受 umask 影响,可能导致 web 无法写日志。

  3. sudo / su / doas
    场景:最小权限原则。
    技巧:sudo -E 保留当前用户环境变量,sudo -i 打开 root login shell。
    陷阱:sudoers 里 ALL=(ALL) NOPASSWD:ALL 等于送 root。

 八、压缩与归档:tar 的一百种写法

  1. tar
    场景:打包源码、备份。
    语法:tar --zstd -cvaf code.tar.zst src/
    技巧:tar --exclude-vcs --exclude='*.o' -cpf - src/ | ssh host 'tar -C /backup -xpf -' 纯流式远程备份。
    陷阱:tar -czf 不能并行,pigz -p 8 可加速。

  2. zip / unzip
    场景:与 Windows 交互。
    技巧:zip -r -P secret code.zip dir/ 加密码,但可被 pkcrack。
    陷阱:unzip 默认覆盖同名文件,加 -n 或 -o 前确认。

  3. rsync --compress / zstd / pigz
    场景:压缩传输两不误。
    技巧:rsync -avz --compress-choice=zstd 比 gzip 快 3~5 倍。
    陷阱:压缩率过高会吃 CPU,低带宽才划算。

 九、包管理:apt、yum、dnf、pacman 一条龙

  1. apt
    场景:Debian/Ubuntu。
    技巧:apt list --upgradable | grep -v security 先过滤非安全更新。
    陷阱:删除包用 apt purge 才能连配置一起清。

  2. yum / dnf
    场景:RHEL/CentOS/Fedora。
    技巧:dnf history undo 23 回滚到第 23 次事务。
    陷阱:CentOS 7 默认 yum 插件 fastestmirror 可能选到慢镜像,手动改 repo。

  3. snap / flatpak / AppImage
    场景:跨发行版应用。
    技巧:snap set system refresh.hold="$(date +%Y-%m-%d --date='2 weeks')" 暂停自动更新。
    陷阱:snap 挂载 loop 设备过多,用 losetup -D 清理。

 十、开发调试:strace 到 journalctl

  1. strace / ltrace
    场景:程序卡住、系统调用黑洞。
    语法:strace -f -e trace=network -s 1024 -o strace.log curl example.com
    技巧:-e inject=open:retval=-1 模拟文件不存在。
    陷阱:容器里 strace 需要 --cap-add=SYS_PTRACE。

  2. journalctl
    场景:Systemd 时代日志归一。
    语法:journalctl -u nginx -p err --since '2025-08-23 00:00'
    技巧:journalctl -f _UID=1000 实时跟踪某用户日志。
    陷阱:默认日志存 /run/log,重启即失,需改 /etc/systemd/journald.conf。

  3. git / diff / patch
    场景:版本控制与打补丁。
    技巧:git log --oneline --graph --all 画 ASCII 树。
    陷阱:patch -p1 < ../fix.patch 时路径层级别搞错。

结语

• 把 man 和 tldr 结合起来:man 给“官方文档”,tldr 给“人类示例”。
• 每天学一个“冷门但实用”的指令,如 fuser、rename、shuf、column。
• 把常用命令封装成函数或脚本放到 ~/bin,并让 PATH 优先包含它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值