操作系统命令:Linux与Shell(Operating System & Command Line, OS/CLI)目录导航、文件操作与日志查看命令实践

操作系统命令:Linux与Shell(Operating System & Command Line, OS/CLI)目录导航、文件操作与日志查看命令实践

摘要

掌握常用Shell命令是高效使用Linux的核心能力 。本文系统梳理 pwd / ls / cd / cp / mv / rm / mkdir / mount|umount / touch / vi|vim / cat / more / tail / head / diff / echo / gedit 等基础命令,配合逐行注释的可直接执行示例、术语表与流程图,帮助你在日常开发与运维中快速定位问题与稳定复现操作。

概述

Shell是命令行解释器(Command-Line Interpreter, CLI),用于与内核交互并驱动系统工具执行 。命令既有状态返回码 (0=成功,非0=失败)也有标准输出/错误输出的行为区别;理解这些基本规则,有助于在脚本与终端中做出可预测、可恢复的操作决策。常见名词示意如下表:

名称 英文全拼(缩写) 说明
操作系统 Operating System(OS) 资源管理与程序调度的基础软件
命令行界面 Command Line Interface(CLI) 通过文本命令与系统交互的方式
图形用户界面 Graphical User Interface(GUI) 通过窗口与控件与系统交互
网络文件系统 Network File System(NFS) 使远端目录像本地盘一样挂载访问
统一Diff Unified Diff(无缩写) diff -u 的标准补丁格式

结论先行:把"路径语义、权限模型、I/O重定向、退出码"四件事吃透,你的Linux操作将更快更稳


一、命令速查与场景映射

目标 首选命令 常用选项/补充
查看当前位置 pwd -L(逻辑路径,默认)、-P(物理路径)
列目录与属性 ls -l/-a/-h/-R/-t/-S--color=auto
切换目录 cd 绝对/相对路径、~..--P 物理
复制 cp 文件:直接;目录:-r;保留属性:-a;更新:-u
移动/重命名 mv 覆盖互斥:-i/-f/-n-t 指定目标目录
删除 rm 文件:直删;目录:-r;强制:-f;组合:-rf
建目录 mkdir 递归父目录:-p;权限:-m MODE
挂载/卸载 mount / umount ISO:-o loop;NFS:-t nfs
时间戳或空文件 touch -c 不创建、-t/-d 指定时间、-r 引用
文本编辑 vi/vim :wq / :q! / :set number
显示/拼接 cat -n/-A/-s;与管道联动
分页查看 more -d/+NUM/管道
尾部追踪 tail -n/-f/-F
头部预览 head -n/-c
差异比较 diff -u/-y/-r/-w
打印文本 echo -n/-e/-E;重定向 > >>
GUI编辑 gedit --new-window / --wait

二、目录定位与查看

1.1 pwd:打印工作目录

在脚本中经常需要"锁定现场",尤其是涉及相对路径时。

bash 复制代码
pwd               # 打印当前工作目录(逻辑路径,默认等同 -L)
pwd -P            # 打印"物理路径",不解析符号链接
echo $?           # 打印上一条命令的退出状态码(0=成功,非0=失败)

-P 能规避符号链接带来的路径混淆,有利于排查真实目录位置

1.2 ls:列出文件与属性

先观察再操作,能明显降低误删与误覆盖的概率

bash 复制代码
ls -lah           # 以长格式、含隐藏项、可读单位显示当前目录内容
ls -lt            # 按修改时间倒序列出(最新在前)
ls -R /etc        # 递归列出 /etc 下的层级与文件

-l/-a/-h 是通用三件套,-t/-S 让你按时间或大小快速定位目标


三、目录切换与路径规则

2.1 cd:绝对/相对/快捷定位

路径的三种前缀决定解析起点/=根、~=家目录、相对路径=当前工作目录。

bash 复制代码
cd /etc           # 切到绝对路径 /etc
cd -              # 切回"上一次所在目录"
cd ../..          # 向上两级
cd ~/Documents    # 切到家目录下的 Documents

相对路径更短,绝对路径更稳,按场景取舍

路径前缀对比

前缀 含义 示例(假设当前 /home/admin,家目录 /home/admin
/ 绝对路径 /var/log/syslog
~ 家目录 ~/work/home/admin/work
./ 当前目录 ./run.sh
.. 父目录 ../assets

四、文件与目录的复制/移动/删除

3.1 cp:复制(文件/目录)

复制目录必须带递归;要保留属性请选择归档模式

bash 复制代码
cp file.txt /tmp/          # 复制文件到 /tmp
cp -r src/ dst/            # 递归复制目录 src 到 dst(dst 不存在会新建)
cp -a app/ /opt/app.bak/   # 归档复制,保留权限/时间/链接等属性

-a 等同 -dR --preserve=all,是做备份时的首选

3.2 mv:移动/重命名

一次动作同时承担"移动"和"改名"

bash 复制代码
mv old.txt new.txt         # 同目录重命名
mv -i *.log /var/log/      # 交互式移动,存在同名目标时询问
mv -n report.csv /tmp/     # 目标存在则"不覆盖"

-i/-f/-n 是互斥语义,最后出现的那个生效

3.3 rm:删除(慎用)

删除不可逆,先 lsrm 是好习惯

bash 复制代码
rm -i file.txt             # 交互式删除,逐一确认
rm -r old_data/            # 递归删除目录(可能大量文件)
rm -rf cache/              # 强制+递归,无提示删除(谨慎)

在生产环境避免滥用 -rf,可通过权限/白名单降低风险


五、目录创建与层级管理

4.1 mkdir:一次性创建多级目录

创建树状目录请使用 -p,可避免"父目录不存在"的报错

bash 复制代码
mkdir -p /data/apps/demo/logs   # 递归创建多级目录
mkdir -m 750 private            # 指定权限创建目录(rwx=7, rx=5, x=1)

-p-m 结合,既稳又安全


六、挂载与卸载:本地/ISO/网络

把"外部文件系统"映射到本地目录称为挂载(mount),断开映射称为卸载(umount)
块设备/镜像/网络共享 mount 挂载到目录 读写像本地目录 umount 卸载

5.1 本地分区与ISO

bash 复制代码
sudo mount /dev/sdb1 /mnt/usb      # 将U盘分区挂载到 /mnt/usb
sudo mount -o loop ubuntu.iso /mnt/iso  # 用loop把ISO当块设备挂载
sudo umount /mnt/usb               # 卸载挂载点

挂载点必须是"已存在且为空"的目录,否则会混淆文件视图

5.2 NFS(Network File System, NFS)

bash 复制代码
sudo mount -t nfs server:/data /mnt/nfs   # 以NFS类型挂载远端共享
sudo umount /mnt/nfs                      # 使用完毕及时卸载

日志/数据共享常用NFS,注意网络与权限策略


七、时间戳与空文件

6.1 touch:创建或更新时间

touch 是脚本初始化与构造测试文件的利器

bash 复制代码
touch demo.log                     # 不存在则创建空文件,存在则更新时间戳
touch -t 202507161200.30 stamp     # 指定时间戳:2025-07-16 12:00:30
touch -c -t 202501010000 report    # 不创建,仅在存在时更新时间戳

-t-c 组合可"只调时,不建文件"


八、文本编辑器与终端编辑工作流

7.1 vi/vim(Visual Editor / Vi IMproved)

vim 以"模式化编辑"著称:普通/插入/可视/命令行四种模式切换自如

bash 复制代码
vim +20 /etc/hosts                # 打开并跳到第20行
# 在 vim 内:i 插入;Esc 返回普通;:wq 保存退出;:q! 强退不保存

掌握 i/Esc/:wq/:q!/pattern 搜索,你已能完成90%的日常编辑

7.2 gedit(GUI编辑)

在桌面环境下,gedit 是轻量易上手的GUI编辑器

bash 复制代码
gedit config.ini &                 # 后台打开文件,不阻塞当前终端
gedit --wait README.md            # 等待编辑完成后再返回(适合脚本)

--wait 便于脚本化:编辑→保存→继续流水线


九、查看/分页/截取与日志追踪

8.1 cat:显示与拼接

bash 复制代码
cat -n app.log                     # 带行号查看
cat a.txt b.txt > all.txt          # 拼接并重定向到新文件

小文件直看,长文件配合分页器更友好

8.2 more:分页

bash 复制代码
ls -l /var/log | more -d           # 长列表分页查看,底部显示按键提示

空格翻页、回车前进一行、q 退出

8.3 tail / head:尾部追踪与头部预览

bash 复制代码
tail -F /var/log/nginx/access.log  # 追踪日志轮换后的新文件
head -n 20 README.md               # 预览前20行

-F-f 更适配"日志切割",可自动重新打开新文件


十、差异比较与补丁格式

9.1 diff:从"对比"到"补丁"

bash 复制代码
diff -u before.conf after.conf > patch.diff   # 生成统一diff补丁
diff -y file1 file2 --width=120               # 并排对比,直观看差异

-u 是代码评审与补丁提交的事实标准


十一、输出文本与重定向

10.1 echo:打印与构造文本

bash 复制代码
echo -e "Line1\nLine2\tTabbed"    # 解析转义:换行与制表
echo "Hello" > hello.txt          # 覆盖写入
echo "World" >> hello.txt         # 追加写入

>>> 分别对应覆盖与追加,脚本里要留心幂等性


十二、实战串联:从创建到查看到清理

把上面命令连成一次"可复现"的小流程,更能加深记忆

bash 复制代码
mkdir -p /tmp/demo/logs            # 1) 创建演示目录树
echo "hello" > /tmp/demo/a.txt     # 2) 生成内容文件(覆盖写入)
cp -a /tmp/demo /tmp/demo.bak      # 3) 做一次属性保留的归档拷贝
ls -lah /tmp/demo                  # 4) 检查结果(长格式+隐藏项+可读单位)
diff -u /tmp/demo /tmp/demo.bak    # 5) 期望无差异(备份一致)
tail -n 1 /tmp/demo/a.txt          # 6) 查看文件尾部一行
rm -rf /tmp/demo /tmp/demo.bak     # 7) 清理演示目录(谨慎使用 -rf)

流程化把控"创建→校验→比较→清理",能让你的日常操作既规范又可回滚


结论或总结

在Linux中,高质量的日常操作来自"路径与权限的准确理解、命令选项的少而精、以及对退出码与重定向的敏感" 。围绕本文的命令族,你可以完成从"定位目录→浏览与编辑→复制/移动/删除→挂载与追踪→对比与产出补丁"的完整闭环。把示例命令直接融入你的常用脚本与速查清单,你的平均定位与处理时间会显著下降

相关推荐
小白勇闯网安圈13 小时前
Vmware的Ubuntu构建极简版Linux发行版
linux
刘某的Cloud13 小时前
shell脚本-read-输入
linux·运维·bash·shell·read
broad-sky14 小时前
Ubuntu上查看USB相机连接的是哪个口,如何查看
linux·数码相机·ubuntu
秋深枫叶红14 小时前
嵌入式第三十七篇——linux系统编程——线程控制
linux·学习·线程·系统编程
shaohui97314 小时前
ARMv7 linux中断路由以及处理
linux·gic·cpsr·armv7
三小尛14 小时前
linux的开发工具vim
linux·运维·vim
陈陈爱java14 小时前
Conda 常用命令行
linux·windows·conda
twdnote14 小时前
dokcer 环境中集成LibreOffice
linux
ChristXlx14 小时前
Linux安装redis(虚拟机适用)
linux·运维·redis
源文雨14 小时前
PVE实现USB硬盘盒在备份前自动上电/结束后自动断电脚本
linux·运维·服务器·备份·perl·pve·usb硬盘盒