Linux命令的标准结构由三部分组成:命令主体、选项和参数。这种设计哲学体现了Unix"小而美"的理念,每个命令都专注于做好一件事。
-或双横线--开头,用于调整命令行为实际使用中,多个单字母选项可以合并书写。例如ls -l -a可以简写为ls -la,这种设计极大提高了输入效率。
注意:GNU风格的长选项(如
--help)通常更易读但输入较长,适合脚本中使用;短选项(如-h)则适合交互式操作。
熟练使用终端快捷键能显著提升工作效率。以下是经过实战验证的高效用法:
特别提醒:在服务器上操作时,养成使用Ctrl+Shift+C/V进行复制粘贴的习惯,避免直接Ctrl+C意外终止进程。
Linux的帮助系统远比表面看起来强大:
man手册实际上分为多个section:
使用man -k 关键词可以搜索相关手册页。对于复杂命令如find,其man手册可能长达数十页,这时可以用/键进行搜索定位。
--help选项虽然简洁,但不同命令的输出格式差异较大。建议新手从man开始培养阅读习惯。
Linux采用单一的树状目录结构,所有路径都从根目录/开始。理解以下几点至关重要:
~). 当前目录.. 上级目录- 前一个工作目录$PATH决定了命令的查找路径ls可能是使用最频繁的命令,但其功能远不止简单列表:
bash复制ls -lhtr --time-style=long-iso
这个组合命令实现了:
-l 详细列表-h 人性化显示大小-t 按时间排序-r 反向排序--time-style 统一时间格式对于彩色显示,可以通过--color=auto启用,并在~/.bashrc中配置LS_COLORS自定义颜色方案。
除了基本用法,cd还有一些鲜为人知但极其有用的技巧:
bash复制cd - # 回到上一个目录
cd ~user # 切换到指定用户的家目录
pushd/popd # 目录栈操作,适合频繁切换多个目录
在脚本中,建议总是使用绝对路径,避免因当前目录不确定导致的问题。
touch命令看似简单,但在实际运维中有多种妙用:
bash复制touch -t 202301010000 file # 设置特定时间戳
touch -c file # 仅当文件存在时更新时间戳
touch {1..10}.txt # 批量创建文件
mkdir的-p选项在自动化脚本中尤为重要,可以避免因目录已存在导致的错误。
rm命令的危险性众所周知,建议采取以下防护措施:
bash复制alias rm='rm -i'
bash复制sudo apt install trash-cli
alias rm='trash-put'
bash复制cp -a data/ data_backup_$(date +%Y%m%d)
cp命令的进阶用法包括:
bash复制cp -u src dst # 仅复制更新的文件
cp -l src dst # 创建硬链接而非复制
cp -s src dst # 创建符号链接
rsync -avz src/ dst/ # 更强大的同步工具
对于大文件复制,可以使用pv命令显示进度:
bash复制pv bigfile > backup/bigfile
Linux的I/O重定向涉及三个标准流:
实用技巧:
bash复制command > file 2>&1 # 合并输出
command &> file # 同上,更简洁
command 2> /dev/null # 丢弃错误
tail -f是最基础的日志监控方式,但生产环境推荐:
bash复制multitail -cS apache /var/log/apache2/error.log # 彩色显示
less +F /var/log/syslog # 支持搜索的实时查看
lnav /var/log/* # 高级日志分析工具
对于需要长期监控的场景,可以结合watch命令:
bash复制watch -n 1 'tail -n 20 /var/log/nginx/access.log'
find是Linux最强大的查找工具,典型应用场景:
bash复制find /var/log -mtime +7 -name "*.log"
bash复制find . -name "*.tmp" -exec rm {} \;
bash复制find / -size +100M -user root -perm 644
正则表达式使grep成为文本处理利器:
bash复制grep -P '\d{3}-\d{4}' file # 匹配电话号码
grep -oE '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}' file # 提取邮箱
grep --include="*.php" -rnw '/var/www' -e "password" # 项目安全审计
对于大型文件,可以提升grep性能:
bash复制grep -m 100 pattern file # 找到100个匹配就停止
LC_ALL=C grep pattern file # 设置locale加速
ps aux和ps -ef已经逐渐被更现代的替代:
bash复制pgrep -l nginx # 快速查找进程ID
pstree -p # 树状显示进程关系
htop # 交互式进程查看器
对于容器化环境,需要特别关注:
bash复制ps -e -o pid,user,args --forest # 显示进程树
top的基本用法大家都知道,但以下技巧可能被忽略:
bash复制top -b -n 1 > top.log
自定义显示:
在top运行时按f选择显示字段,按o调整排序
更现代的替代:
bash复制apt install glances
glances --disable-plugin docker,ports,folders
基础命令组合使用示例:
bash复制ping -c 4 -i 0.2 example.com # 控制发包间隔
traceroute -T -p 80 example.com # TCP方式跟踪
mtr -rw example.com # 实时路由跟踪
ss -tulp | sort -k 5 # 排序显示监听端口
高级网络分析:
bash复制tcpdump -i eth0 -nn 'port 80' -w capture.pcap
tshark -i eth0 -f "tcp port 80" -Y "http.request"
df和du的实用组合:
bash复制df -hT -x tmpfs -x devtmpfs # 排除临时文件系统
du -h --max-depth=1 / | sort -hr # 查找大目录
ncdu /var # 交互式磁盘分析
对于LVM用户:
bash复制vgs && pvs && lvs # 查看LVM状态
lvdisplay -m # 显示镜像段信息
除了基本打包解包,tar还可以:
bash复制tar -g snapshot -zcvf backup_inc.tar.gz /data
bash复制tar --exclude='*.tmp' -zcvf backup.tar.gz /home
bash复制tar -cf - /data | pigz -p 8 > data.tar.gz
根据场景选择合适的压缩方式:
| 算法 | 命令示例 | 特点 | 适用场景 |
|---|---|---|---|
| gzip | gzip -9 file | 平衡 | 通用 |
| bzip2 | bzip2 -k file | 高压缩比 | 文本数据 |
| xz | xz -T4 file | 极高压缩比 | 长期归档 |
| zstd | zstd -12 file | 超快压缩 | 实时系统 |
安全创建用户的完整流程:
bash复制sudo useradd -m -s /bin/bash -c "应用账户" -G appgroup appuser
sudo passwd appuser
sudo chage -M 90 -W 7 appuser # 设置密码策略
查看用户登录情况:
bash复制last -a | head -n 20
who -u
编辑/etc/sudoers时的正确方式:
bash复制sudo visudo
典型配置示例:
code复制%admin ALL=(ALL) ALL
%developers ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
Defaults:user1 !authenticate
除了基本的rwx,还有三个特殊权限位:
bash复制chmod u+s /usr/bin/passwd
bash复制chmod g+s /shared_dir
bash复制chmod +t /tmp
当基本权限不足时,使用ACL:
bash复制setfacl -m u:user1:rwx file
setfacl -Rm g:developers:rwX dir/
getfacl file | setfacl --set-file=- file2 # 复制ACL
在~/.bashrc中添加:
bash复制export HISTSIZE=10000
export HISTFILESIZE=20000
export HISTTIMEFORMAT="%F %T "
export HISTCONTROL=ignoreboth
shopt -s histappend
实用历史操作技巧:
bash复制!$ # 上条命令的最后一个参数
!* # 上条命令的所有参数
^old^new # 替换上条命令中的字符串
初级阶段(1-3个月):
中级阶段(3-6个月):
高级阶段(6个月+):
npm install -g tldrgo install github.com/cheat/cheat/cmd/cheat@latestbash复制alias rm='rm -i'
alias chmod='chmod --preserve-root'
alias chown='chown --preserve-root'
记住,Linux命令的熟练度与使用经验直接相关。建议每天花15分钟刻意练习,遇到问题先查文档再搜索,逐步培养解决问题的能力。