Shell 命令是运维工作的核心工具,熟练掌握文件操作与内容查看类命令,能大幅提升工作效率,减少操作失误。下面结合实际场景,补充进阶用法、扩展实例及注意事项,让内容更具连贯性和实用性。
一、文件操作命令
文件操作是 Shell 日常使用的基础,涵盖文件及目录的创建、删除、复制、移动、查找、链接等核心操作。以下补充进阶用法与场景化说明,覆盖更复杂的运维需求。
核心命令及用法
-
ls:列出目录内容。常用 -l 查看详细信息(权限、大小、修改时间等),-a 显示隐藏文件(以“.”开头),-h 以人类可读格式显示大小。
实例:ls -lah /home/user,同时查看隐藏文件、详细信息及人性化大小,快速梳理目录全貌。
-
cd:切换工作目录。除基础切换外,cd - 可切换至上一次所在目录,适合在两个目录间频繁跳转。
实例:在 /var/log 执行 cd /data 后,再执行 cd - 可快速返回 /var/log。
-
pwd:显示当前目录的绝对路径。-P 参数可显示真实路径(忽略软链接)。
实例:若当前目录是软链接,执行 pwd -P 可获取其指向的真实目录路径,避免混淆。
-
cp:复制文件或目录。-r 递归复制目录,-p 保留文件原有属性,-v 显示复制过程。
实例:cp -rpv /data/backup /mnt/backup,将备份目录完整复制并显示进度,适用于重要数据迁移。
-
mv:移动文件/目录或重命名。可批量操作:mv file1.txt file2.txt /home/user/docs 一次移动多个文件;重命名时支持通配符,如 mv *.log log_202604/ 归档当前日志。
-
rm:删除文件或目录。-r 递归删除目录,-f 强制删除且不提示,-v 显示删除过程。
实例:rm -rfv /tmp/old_data 会删除临时目录并列出删除内容。操作前务必用 ls 确认路径,避免误删。
-
mkdir:创建目录。-p 可递归创建多级目录,-m 在创建时指定权限。
实例:mkdir -pm 755 /data/logs/nginx 一次性创建多层目录并预设权限为 755,适合服务部署前的准备。
-
rmdir:仅删除空目录。若目录非空会报错,可用 rm -rf 替代。-p 可递归删除多级空目录。
实例:rmdir -p /data/empty1/empty2 若两个均为空目录,则一次性删除两个空目录。
-
touch:创建空文件或更新文件的时间戳。touch test{1..10}.txt 可批量生成 test1.txt 至 test10.txt;-a 仅更新访问时间,-m 仅更新修改时间,如 touch -a access.log。
-
find:按条件查找文件/目录。常用:-size +100M 查找大于 100MB 的文件;-mtime -7 查找近 7 天修改过的日志;-perm 777 查找权限为 777 的文件,便于安全排查。
实例:find /data -size +100M 快速定位大文件。
-
ln:创建链接文件。-s 创建软链接(类似快捷方式,源文件删除后失效),无参数则创建硬链接(共享 inode,源文件删除后仍可访问)。注意事项:软链接可跨文件系统,硬链接仅限同一文件系统。
实例:ln -s /usr/bin/java /usr/bin/jdk 创建 Java 命令的快捷方式;ln /data/file.txt /home/file_link.txt 创建硬链接,即使源文件被删,链接仍有效。
小技巧:文件操作中可配合通配符(*、?、[])提升效率,例如 ls *.txt 列出所有文本文件,ls file?.log 匹配 file1.log、file2.log 等。
二、内容查看命令
日常运维免不了查看文件内容、统计信息、监控磁盘。以下补充进阶用法,覆盖日志分析、数据统计等场景。
核心命令及用法
-
cat:一次性输出文件全部内容,适用于小型文件。-n 显示行号,cat -n /etc/hosts 便于定位配置项;面对大文件可结合 more 分页:cat /var/log/messages | more。
-
less:分页浏览,支持上下翻页、关键词检索(输入 /关键词,n 下一个,N 上一个),q 退出。less +/error /var/log/nginx/error.log 打开文件直接定位到第一个 “error”,快速排查故障。
-
more:分页查看,仅向下翻页(空格翻页,Enter 逐行),q 退出。-n 指定每页行数,如 more -10 /var/log/messages 每页显示 10 行。
-
head:查看文件开头,默认 10 行。-n 指定行数,head -n -5 file.txt 可查看除最后 5 行外的所有内容。
实例:head -n -10 /var/log/boot.log 排除末尾冗余行,快速获取系统启动概况。
-
tail:查看文件末尾,默认 10 行。-f 实时监控文件增长,-F(大写)更稳健:文件被删除重建后仍会继续监控,适合日志切割场景。
实例:tail -F /var/log/nginx/access.log 持续跟踪访问日志。
-
wc:统计行数、单词数、字符数。-l 仅行数,-w 仅单词数,-c 仅字符数。
实例:wc -l /var/log/access.log 统计请求量;wc -c test.txt 确认文件字符大小。
-
du:查看文件或目录占用空间。-h 人类可读,-s 汇总目录总大小。
实例:du -sh /data/* 快速定位占用空间较大的子目录;du -ah /data 可列出所有文件及隐藏文件大小。
-
df:查看磁盘整体使用情况。-h 直观显示空间,-i 查看 inode 用量(inode 耗尽将无法创建新文件),-T 显示分区类型。
实例:df -hT 同时获取各分区使用率、剩余空间及文件系统类型。
-
file:识别文件类型,区分文本、二进制、压缩等。-b 只显示类型不显示文件名。
实例:file -b /usr/bin/ls 输出 “ELF 64-bit LSB executable”;file -b test.tar.gz 输出 “gzip compressed data”。
注意事项
rm -rf 强制删除且不可恢复,执行前务必用 ls 确认路径,重要数据建议先备份。
- 查看 GB 级日志时,优先使用
less 或 tail,避免 cat 导致终端卡顿或内存激增。
- Shell 命令严格区分大小写,
LS 与 ls 结果不同,参数亦需注意大小写。
- 使用
cp、mv 操作重要文件前最好备份;跨磁盘操作需确认目标空间充足。
- 创建软链接推荐使用绝对路径,避免目录切换后失效;硬链接不能跨文件系统。
find 在根目录等大范围查找时,建议用 -maxdepth 限制深度,如 find / -maxdepth 3 -name "*.log",减少系统开销。
掌握这些 Shell 基础命令与进阶技巧,无论是日常运维还是故障排查都能事半功倍。更多技术文档与避坑指南,欢迎前往 云栈社区 查阅。
|