Shell 常用命令非常丰富,涵盖了文件操作、目录管理、文本处理、进程管理等多个方面。以下是一些常用的 Shell 命令及其简要说明:
一、文件与目录操作
命令 | 功能说明 | 常用参数示例 | 使用场景 |
---|---|---|---|
ls | 列出目录内容 | -l (详细信息) -a (显示隐藏文件) -h (人性化大小) | ls -lah /var/log |
cd | 切换目录 | .. (上级目录) - (返回上次目录) | cd ~/projects |
cp | 复制文件/目录 | -r (递归复制目录) -i (覆盖提示) | cp -ri src/ dest/ |
mv | 移动/重命名文件 | -n (不覆盖已存在文件) | mv old.txt new.txt |
rm | 删除文件 | -r (递归删除) -f (强制删除) | rm -rf tmp/ |
mkdir | 创建目录 | -p (创建多级目录) | mkdir -p dir1/dir2 |
touch | 创建空文件/更新时间戳 | touch file{1..5}.txt | |
find | 文件搜索 | -name (按名称) -type (按类型) -exec (执行操作) | find . -name "*.log" -mtime +7 -delete |
二、文本处理
命令 | 功能说明 | 典型用法示例 |
---|---|---|
grep | 文本搜索 | grep -rn "error" /var/log |
sed | 流编辑器 | sed -i 's/old/new/g' file.txt |
awk | 文本分析处理 | awk '{print $1,$3}' data.csv |
cat | 查看/合并文件 | cat file1 file2 > merged.txt |
head | 显示文件头部 | head -n 20 access.log |
tail | 显示文件尾部 | tail -f app.log (实时追踪) |
sort | 排序 | sort -nrk 3 data.txt (按第三列数值逆序) |
uniq | 去重统计 | sort file.txt | uniq -c |
wc | 统计计数 | wc -l access.log (统计行数) |
cut | 提取列数据 | cut -d: -f1 /etc/passwd |
三、系统管理
命令 | 功能说明 | 关键参数 |
---|---|---|
ps | 查看进程 | -aux (所有用户进程) -ef (全格式列表) |
top | 实时监控系统 | -p PID (监控指定进程) |
free | 内存使用情况 | -h (易读格式) |
df | 磁盘空间 | -hT (显示类型和易读单位) |
du | 目录空间统计 | -sh * (汇总各目录大小) |
uname | 系统信息 | -a (所有信息) |
date | 时间操作 | +%Y-%m-%d (格式化输出) |
shutdown | 关机/重启 | -h now (立即关机) -r +5 (5分钟后重启) |
四、网络相关
命令 | 功能说明 | 使用示例 |
---|---|---|
ping | 网络连通性测试 | ping -c 4 google.com |
netstat | 网络状态查看 | netstat -tulnp (查看监听端口) |
curl | 网络请求工具 | curl -O http://example.com/file.zip |
wget | 文件下载 | wget -c http://example.com/bigfile.iso (断点续传) |
ssh | 远程连接 | ssh -p 2222 user@host |
scp | 安全文件传输 | scp -r dir/ user@remote:/path/ |
ifconfig | 网络接口配置 | ifconfig eth0 (查看网卡信息) |
traceroute | 路由追踪 | traceroute example.com |
五、压缩与归档
命令 | 功能说明 | 典型压缩命令 |
---|---|---|
tar | 归档工具 | tar czvf archive.tar.gz dir/ (创建压缩包) |
gzip | 压缩文件 | gzip -9 file (最大压缩率) |
gunzip | 解压文件 | gunzip file.gz |
zip | 跨平台压缩 | zip -r archive.zip dir/ |
unzip | 解压zip文件 | unzip -l archive.zip (查看内容) |
六、权限管理
命令 | 功能说明 | 数值权限示例 |
---|---|---|
chmod | 修改权限 | chmod 755 script.sh (rwxr-xr-x) |
chown | 修改所有者 | chown user:group file |
umask | 默认权限设置 | umask 022 (新建文件默认755) |
七、用户管理
命令 | 功能说明 | 关键操作 |
---|---|---|
useradd | 添加用户 | useradd -m -s /bin/bash user1 |
passwd | 修改密码 | passwd user1 |
su | 切换用户 | su - user1 (-表示加载环境变量) |
sudo | 提权执行 | sudo visudo (编辑sudo权限) |
八、Shell编程基础
语法 | 功能说明 | 示例 |
---|---|---|
变量 | name=value (无空格) | count=10; echo $count |
输入参数 | $0 脚本名,$1 第一个参数 | echo "参数1:$1" |
条件判断 | if [ condition ] | if [ -f file.txt ]; then ... fi |
循环 | for/while 结构 | for i in {1..5}; do echo $i; done |
函数 | 代码复用 | function log(){ echo "[$(date)] $1"; } |
重定向 | 输入输出控制 | command > output.log 2>&1 (错误输出重定向) |
九、实用技巧组合
-
批量重命名
rename 's/\.jpeg$/\.jpg/' *.jpeg
-
统计文件类型数量
find . -type f | awk -F . '{print $NF}' | sort | uniq -c
-
实时监控日志关键信息
tail -f app.log | grep --color -E "ERROR|WARNING"
-
快速创建大文件测试
dd if=/dev/zero of=testfile bs=1G count=2
-
SSH密钥对免密登录
ssh-keygen -t rsa && ssh-copy-id user@remote-host
十、注意事项
-
危险操作防护
- 使用
rm
时避免rm -rf /
(可使用alias rm='rm -i'
增加提示) - 谨慎执行来自不可信来源的脚本
- 使用
-
性能优化
- 避免在循环中使用管道操作(尽量使用内置字符串处理)
- 处理大文件时优先使用
sed/awk
代替cat
全量读取
-
兼容性考虑
- 不同Linux发行版的命令参数可能有差异(如
ps
的输出格式) - 脚本开头使用
#!/bin/bash
明确解释器
- 不同Linux发行版的命令参数可能有差异(如
建议通过man command
查看命令手册(如man grep
)获取详细文档