菜鸟科技网

Shell 命令集有哪些常用命令?

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

Shell 命令集有哪些常用命令?-图1
(图片来源网络,侵删)

基础命令:文件与目录操作

文件和目录管理是 Shell 最常用的功能,基础命令包括 lscdpwdmkdirrmcpmv 等。

  • 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)。

文件权限管理通过 chmodchownchgrp 实现:

  • 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/Ubuntuaptsudo apt update 更新源,sudo apt install package 安装,sudo apt remove package 卸载)。
  • CentOS/RHELyum/dnfsudo yum install package 安装,sudo yum update 更新)。
  • 源码编译./configure 配置,make 编译,sudo make install 安装。

文本处理:流编辑器与管道

文本处理是 Shell 自动化的核心,常用工具包括 catsedawksortuniq 等。

Shell 命令集有哪些常用命令?-图2
(图片来源网络,侵删)
  • 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" 的行数。

系统监控:资源与进程管理

系统监控命令帮助实时了解系统状态,包括 tophtoppskilldfdu 等。

  • top:动态显示进程资源占用,按 CPUMEM 排序,k 终止进程,q 退出。
  • htoptop 的增强版,彩色显示支持鼠标操作,更直观。
  • 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端口监听)。
  • ssnetstat 的替代工具,性能更优(如 ss -tulnp 查看所有监听端口)。

Shell 脚本编程:自动化任务

Shell 脚本通过将命令组合实现自动化,常用语法包括变量、条件判断、循环、函数等。

Shell 命令集有哪些常用命令?-图3
(图片来源网络,侵删)
  • 变量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 加密)。

分享:
扫描分享到社交APP
上一篇
下一篇