Shell是Linux/Unix系统中用户与内核交互的桥梁,通过Shell命令可以高效完成文件操作、系统管理、文本处理等任务,掌握Shell命令的核心在于理解其基本语法、常用命令分类及高级技巧,以下从多个维度展开说明。

Shell命令的基本语法结构
Shell命令的通用格式为:命令选项 参数,其中选项用于调整命令行为(通常以或开头),参数是命令操作的对象(如文件名、目录路径等)。ls -la /home中,ls是命令,-l和-a是选项(-l显示详细信息,-a包含隐藏文件),/home是参数,需注意,选项和参数之间需用空格分隔,多个选项可合并(如-la等同于-l -a)。
常用Shell命令分类及操作方法
文件与目录操作
文件和目录是Shell最常操作的对象,以下命令为日常高频使用:
| 命令 | 功能描述 | 示例 |
|---|---|---|
ls |
列出目录内容 | ls -a(显示隐藏文件) |
cd |
切换工作目录 | cd /var/log(切换到日志目录) |
pwd |
显示当前工作目录路径 | pwd(输出如/home/user) |
mkdir |
创建目录 | mkdir -p test/dir(递归创建) |
rm |
删除文件/目录 | rm -rf dir(强制递归删除) |
cp |
复制文件/目录 | cp -r src/ dest/(递归复制) |
mv |
移动/重命名文件/目录 | mv old.txt new.txt(重命名) |
cat |
查看文件内容 | cat file.txt(显示全部内容) |
less |
分页查看文件内容 | less file.txt(支持上下翻页) |
grep |
在文本中搜索匹配行 | grep "error" log.txt(搜索含error的行) |
文本处理
Shell擅长文本处理,通过组合命令可实现复杂操作:

sed(流编辑器):用于文本替换、删除等。sed 's/old/new/g' file.txt将文件中所有old替换为new;sed '2d' file.txt删除第2行。awk:按列处理文本。awk '{print $1, $3}' file.txt打印每行的第1列和第3列;awk '$2 > 100 {print $1}' file.txt筛选第2列大于100的行的第1列。cut:提取指定列或字符。cut -d: -f1 /etc/passwd(以为分隔符,提取第1列,即用户名);cut -c1-5 file.txt(提取每行的前5个字符)。sort与uniq:排序与去重。sort file.txt | uniq排序并去重;sort -nr file.txt | uniq -c(按数字降序排序,并统计重复次数)。
系统信息与管理
- 系统信息:
uname -a(显示系统全部信息,如内核版本、主机名);top(实时查看进程资源占用);df -h(以人类可读格式显示磁盘空间);free -h(查看内存使用情况)。 - 进程管理:
ps aux(查看所有进程);kill -9 PID(强制终止指定进程,PID为进程ID);jobs(查看后台任务);bg %1(将任务1切换到后台运行)。
Shell高级技巧
管道与重定向
- 管道():将前一个命令的输出作为后一个命令的输入。
cat file.txt | grep "warning"传递给grep命令,筛选含warning的行;ls -l | sort -k5 -n(按文件大小排序,-k5指定第5列,-n按数字排序)。 - 重定向:
>(覆盖输出,如echo "hello" > test.txt);>>(追加输出,如echo "log" >> app.log);<(输入重定向,如sort < file.txt)。
通配符与脚本基础
- 通配符:(匹配任意字符,如
*.txt匹配所有txt文件);(匹配单个字符,如a?c.txt匹配aac.txt、abc.txt等);[](匹配指定范围,如[0-9]匹配数字)。 - 简单脚本:通过脚本将命令组合实现自动化,创建
backup.sh:#!/bin/bash tar -czf backup_$(date +%Y%m%d).tar.gz /important_data echo "Backup completed!"
执行
chmod +x backup.sh添加可执行权限后,运行./backup.sh即可打包/important_data目录,文件名包含当前日期。
相关问答FAQs
Q1:Shell命令和Shell脚本有什么区别?
A:Shell命令是单个独立操作指令(如ls、grep),直接在终端输入执行;Shell脚本是一系列命令的文本集合,保存为.sh文件,通过./脚本名执行,支持变量、循环、条件判断等逻辑,可实现复杂任务自动化(如定时备份、批量处理文件)。
Q2:如何快速学习Shell命令?
A:① 先掌握高频基础命令(如ls、cd、grep、find),通过man 命令(如man grep)查看官方帮助文档;② 结合实际场景练习,如用find搜索文件、awk处理日志;③ 学习脚本编写,从简单脚本(如文件备份)逐步过渡到复杂逻辑(如循环批量重命名);④ 利用在线资源(如Shell教程、Cheatsheet)和社区(如Stack Overflow)解决问题。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/16680.html