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)获取详细文档
942

被折叠的 条评论
为什么被折叠?



