Shell 命令集是 Linux 和 Unix 系统中用户与操作系统交互的核心工具,通过命令行界面(CLI)执行各种操作,涵盖文件管理、系统监控、文本处理、网络配置等多个领域,熟练掌握 Shell 命令集能显著提升系统管理效率和自动化任务能力,以下从基础命令、进阶命令、文本处理、系统监控及脚本编程五个维度展开详细说明。

基础命令:文件与目录操作
文件和目录管理是 Shell 最常用的功能,基础命令包括 ls
、cd
、pwd
、mkdir
、rm
、cp
、mv
等。
ls
:列出目录内容,常用选项-l
(显示详细信息)、-a
(隐藏文件)、-h
(人性化显示文件大小)。ls -lah
可查看当前目录所有文件(含隐藏)的详细权限、大小及修改时间。cd
:切换目录,cd ~
进入用户主目录,cd -
返回上一次所在目录,cd ..
返回上级目录。pwd
:显示当前工作目录的完整路径,如/home/user/documents
。mkdir
:创建目录,-p
选项可递归创建多级目录(如mkdir -p parent/child
)。rm
:删除文件或目录,-r
递归删除目录,-f
强制删除(不提示),需谨慎使用。cp
:复制文件或目录,-r
复制目录,-p
保留权限、时间戳等属性(如cp -r source_dir target_dir
)。mv
:移动文件或目录,也可用于重命名(如mv old_name new_name
)。
文件权限管理通过 chmod
、chown
、chgrp
实现:
chmod
:修改文件权限,u
(用户)、g
(组)、o
(其他)、a
(所有者),(添加权限)、(移除权限)、(设置权限),如chmod u+x script.sh
为用户添加执行权限;或用数字表示(r=4, w=2, x=1),如chmod 755 file
设置所有者读写执行、组和其他读执行。chown
:修改文件所有者,-R
递归修改目录(如chown user:group file
)。
进阶命令:搜索、压缩与软件管理
文件搜索
find
:按名称、类型、时间等条件搜索文件,语法find [路径] [条件]
。find /home -name "*.txt"
搜索主目录下所有.txt
文件;find . -type f -mtime -7
搜索当前目录下7天内修改过的文件。grep
:在文本中搜索匹配的行,-i
忽略大小写,-r
递归搜索目录,-n
显示行号。grep -r "error" /var/log
在日志目录中搜索包含 "error" 的行。
压缩与解压
tar
:打包/解包工具,常用选项-c
(创建)、-x
(解压)、-v
(显示过程)、-f
(指定文件名)、-z
(gzip 压缩)、-j
(bzip2 压缩)。tar -czvf archive.tar.gz dir/
将dir
目录打包为gzip
压缩文件;tar -xzvf archive.tar.gz
解压。zip
/unzip
:.zip
格式压缩/解压,zip -r archive.zip dir/
压缩目录,unzip archive.zip
解压。
软件管理
不同发行版软件包管理命令不同:
- Debian/Ubuntu:
apt
(sudo apt update
更新源,sudo apt install package
安装,sudo apt remove package
卸载)。 - CentOS/RHEL:
yum
/dnf
(sudo yum install package
安装,sudo yum update
更新)。 - 源码编译:
./configure
配置,make
编译,sudo make install
安装。
文本处理:流编辑器与管道
文本处理是 Shell 自动化的核心,常用工具包括 cat
、sed
、awk
、sort
、uniq
等。

cat
:查看文件内容,-n
显示行号,> 或 >>
重定向输出(覆盖/追加)。sed
:流编辑器,用于文本替换、删除、插入等。sed 's/old/new/g' file
替换文件中所有 "old" 为 "new";sed -i '1d' file
直接删除文件第一行。awk
:文本分析工具,按列处理文本,语法awk '条件 {操作}' 文件
。awk '{print $1, $3}' file
输出每行的第1、3列;awk '$2 > 100 {print $1}' file
输出第2列大于100的第1列内容。sort
:排序,-n
按数字排序,-r
降序,-k
指定列排序(如sort -k 2,2n file
按第2列数字升序)。uniq
:去重,-c
统计重复次数,需配合sort
使用(如sort file | uniq -c
)。
管道() 是将前一个命令的输出作为后一个命令的输入,cat file.txt | grep "error" | wc -l
统计文件中包含 "error" 的行数。
系统监控:资源与进程管理
系统监控命令帮助实时了解系统状态,包括 top
、htop
、ps
、kill
、df
、du
等。
top
:动态显示进程资源占用,按CPU
、MEM
排序,k
终止进程,q
退出。htop
:top
的增强版,彩色显示支持鼠标操作,更直观。ps
:查看静态进程,aux
显示所有进程详细信息(如ps aux | grep nginx
查看nginx
进程)。kill
:终止进程,kill [PID]
发送终止信号,kill -9 [PID]
强制终止(不可中断)。df
:查看磁盘空间,-h
人性化显示(如df -h
)。du
:查看目录大小,-sh
显示总大小(如du -sh /var/log
)。
网络监控命令:
ping
:测试网络连通性(如ping 8.8.8.8
)。netstat
:查看网络连接,-an
显示所有连接(如netstat -an | grep :80
查看80端口监听)。ss
:netstat
的替代工具,性能更优(如ss -tulnp
查看所有监听端口)。
Shell 脚本编程:自动化任务
Shell 脚本通过将命令组合实现自动化,常用语法包括变量、条件判断、循环、函数等。

- 变量:
name="Alice"
定义变量,$name
或${name}
引用,readonly
只读变量,unset
删除变量。 - 条件判断:
if-else
语法,test
或[ ]
判断条件(如[ -f file ]
判断文件是否存在,[ $a -eq $b ]
判断数值相等)。 - 循环:
for
循环(如for i in {1..5}; do echo $i; done
);while
循环(如while [ $i -lt 10 ]; do echo $i; ((i++)); done
)。 - 函数:
function_name() { commands; }
定义,function_name
调用,return
返回值。
示例脚本:备份指定目录到 /backup
,保留最近7天备份
#!/bin/bash SOURCE_DIR="/home/user/documents" BACKUP_DIR="/backup" DATE=$(date +%Y%m%d) BACKUP_FILE="$BACKUP_DIR/docs_backup_$DATE.tar.gz" # 创建备份目录 mkdir -p "$BACKUP_DIR" # 打包备份 tar -czf "$BACKUP_FILE" "$SOURCE_DIR" # 删除7天前的备份 find "$BACKUP_DIR" -name "docs_backup_*.tar.gz" -mtime +7 -delete echo "Backup completed: $BACKUP_FILE"
相关问答 FAQs
Q1:如何查找并删除指定目录下所有大小超过100MB的文件?
A:使用 find
命令查找大文件,结合 xargs
或 -exec
删除。
# 方法1:xargs + rm find /path/to/dir -type f -size +100M -print0 | xargs -0 rm -f # 方法2:-exec rm find /path/to/dir -type f -size +100M -exec rm -f {} \;
注意:-size +100M
表示大于100MB,-size -100M
表示小于100MB,-size 100M
表示等于100MB,删除前建议先用 ls -lh
查看确认文件路径。
Q2:Shell 脚本中如何实现用户输入密码并隐藏显示?
A:使用 read -s
命令隐藏输入内容(输入时终端不显示字符),示例:
#!/bin/bash read -p "请输入密码: " -s password # -s 隐藏输入 echo -e "\n" # 换行 echo "您输入的密码是: $password" # 实际使用中需加密存储,避免明文显示
安全提示:密码等敏感信息不应在脚本中明文存储或输出,建议通过加密方式处理(如 openssl
加密)。