Shell作为Linux和Unix系统下用户与系统交互的桥梁,其命令行操作是系统管理、编程开发和日常运维的核心技能,掌握Shell常用命令不仅能提升工作效率,还能深入理解系统运行机制,以下从文件管理、文本处理、系统监控、网络工具和权限管理五个维度,详细解析Shell常用命令的功能与用法。

在文件管理方面,ls命令是最基础的目录列表工具,通过-l参数可显示详细权限、所有者、大小和修改时间,-a参数则隐藏文件和目录,创建目录使用mkdir,例如mkdir -p parent/child可递归创建多级目录;删除目录需用rm -r,而rm -rf强制删除需谨慎操作,文件复制通过cp命令,cp -r用于递归复制目录,cp -p则保留文件属性,移动或重命名文件用mv,其操作具有覆盖风险,建议先备份,查看文件内容时,cat适合短文件输出,less支持分页浏览大文件,head -n 10和tail -n 10分别查看文件前10行和后10行,tail -f还可实时监控日志更新。
文本处理是Shell的强项,grep用于文本搜索,-i忽略大小写,-v取反匹配,-n显示行号。awk和sed是强大的流编辑器,awk '{print $1}'提取每行第一列,sed 's/old/new/g'全局替换文本内容,排序去重命令sort -n按数字排序,uniq -d仅显示重复行,wc -l统计行数,文本合并用paste -d',' file1 file2按列拼接,join则基于关键字关联文件。
系统监控命令帮助实时掌握系统状态。top动态显示进程资源占用,htop是其增强版,支持交互操作,查看磁盘空间使用情况用df -h(人类可读格式),du -sh *统计当前目录下各文件及子目录大小,内存信息通过free -h查看,vmstat监控系统进程、内存、I/O等整体状态,网络连接监控使用netstat -tuln显示TCP/UDP端口监听情况,ss是netstat的替代工具,性能更优。
网络工具中,ping测试网络连通性,traceroute追踪数据包路径,文件传输方面,scp实现加密远程复制,语法为scp user@host:/path/to/file ./;rsync适合增量同步,-avz参数保留属性并压缩传输,网络配置用ifconfig(传统工具)或ip addr(现代工具)查看IP地址,curl和wget用于下载网页或文件,curl -I可检查HTTP响应头。

权限管理是系统安全的核心。chmod修改文件权限,chmod 755 file设置所有者读写执行、组和其他用户读执行;chmod u+x file则仅添加所有者执行权限。chown更改所有者,chown user:group file同时修改所属组。sudo临时获取管理员权限,sudo -i切换至root用户,文件查找用find / -name "*.log" -type f按名称和类型搜索,locate基于数据库快速查找,但需先更新数据库updatedb。
以下命令操作示例可快速上手:
# 批量重命名文件:将*.txt改为*.log
for f in *.txt; do mv "$f" "${f%.txt}.log"; done
# 压缩文件夹:tar -czf backup.tar.gz /path/to/dir
# 解压:tar -xzf backup.tar.gz
相关问答FAQs
Q1: 如何查看当前系统运行的进程并强制结束某个进程?
A1: 使用ps aux查看所有进程,结合grep过滤目标进程,如ps aux | grep nginx,找到进程PID(第二列)后,用kill -9 PID强制结束进程,例如kill -9 1234。killall命令可根据进程名结束所有相关进程,如killall nginx。

Q2: 如何将命令输出结果保存到文件并同时显示在终端?
A2: 使用tee命令可实现这一功能,例如ls -l | tee file.txt会将ls的结果同时输出到终端和保存到file.txt,若需追加内容而非覆盖,添加-a参数,即command | tee -a file.txt。
