一、Linux的目录结构

        Linux的目录结构是一个树型结构,没有盘符这个概念, 只有一个根目录 /, 所有文件都在它下面,而不像Windows 可以拥有多个盘符, 如 C盘、D盘、E盘。

常见的目录结构:

二、基础命令:目录相关命令

        终端说明:Linux的终端(Terminal)是用户与操作系统进行命令行交互的文本界面程序,用于输入指令并接收系统输出。

1.目录导航命令

1)定位与查看

命令 作用 语法格式 参数 案例
pwd
Print Working
Directory显示当前所
在目录的绝对路径
pwd
显示当前路径: pwd
ls
list show的简写, 其功 能为列出目录的内容
ls [选项][路径]
-a: all 所有, 显示指定目录下所有子目录与文件, 包含隐藏文件
-l: list 以列表方式显示文件的详细信息,可简写为ll
-h: 配合 -l 以人性化的方式显示文件大小(文件大 小+单位)
显示当前所有目录: ls -a
以列表的形式展示根目录: ls -l / 或者 ll /

2)切换与目录结构

2.目录管理命令

1)创建目录

2)删除目录

3.文件相关命令

1) 文件操作命令

2) 文件查找命令

find命令:文件查找命令
格式:find 路径范围 选项1 选项1的值 [选项2 选项2的值......]
选项说明:

3)文件操作案例

案例一: 日志文件管理与备份
某服务器日志目录 /var/log/app 需要定期清理和备份。要求:
  •  创建 6 个不同日期的日志文件(如 access_20250225.log、access_20250302.log ...)
                说明: 如何修改文件的最后时间
                        通过 touch -d 设置
                        touch -d "2023-10-01 12:34:56" example.txt
                        说明: 表示将example.txt文件的最后修改时间为 2023-10-01 12:34:56
  • 将 3 天前的日志文件复制到 /backup/old_logs 目录
  • 删除 5 天前的日志文件
# 1.创建6个日志文件
# 创建日志目录
mkdir -p /var/log/app
# 进入该目录
cd /var/log/app
# 创建6个不同日期的日志文件
touch -d "2025-06-10 12:10:10" access_20250610.log
touch -d "2025-06-11 13:10:10" access_20250611.log
touch -d "2025-06-12 11:10:10" access_20250612.log
touch -d "2025-06-13 13:10:10" access_20250613.log
touch -d "2025-06-15 12:10:10" access_20250615.log
touch -d "2025-06-16 12:10:10" access_20250616.log

# 2.复制文件到 /backup/old_logs 目录
# 创建目录/backup/old_logs
mkdir -p /backup/old_logs
#寻找三天前的日志文件
find /var/log/app -mtime +3 type f -exec cp {} /backup/old_logs/ \;

# 3.删除5天前的日志
find /var/log/app -mtime +5 type f -exec rm -rf {} \;

练习:

# 查找所有 24 小时内修改过的 tmp_* 文件并移动到 /tmp/recent
find /tmp/userdata -mtime -1 -name temp_* -type f -exec mv {} /tmp/recent/ \;

# 删除超过 30 天未修改的 tmp_* 文件
find /tmp/userdata -mtime +30 -name tmp_* -type f -exec rm -rf {} \;

# 查找所有大小超过 100MB 的文件
find /usr/lib -size +100M -type f

# 将这些文件的路径记录到 /var/log/large_files.list
mkdir -p /var/log/large_files.list
find /usr/lib -size +100M -type f -print | tee /var/log/large_files.list


# 将这些文件复制到 /archive/large_files 目录
find /usr/lib -size +100M -type f -exec cp {} /archive/large_files/ \;

4)文件编辑命令

vi:经典的文本编辑器,功能较基础,适用于简单编辑任务。

vim (Vi IMproved):vi 的升级版,支持更多高级功能,如:

  • 语法高亮
  • 多级撤销(vi 仅支持单步撤销)
  • 代码折叠
  • 插件支持
  • 更好的跨平台兼容性

在 RHEL 9 中,vi 通常是 vim 的符号链接,即运行 vi 实际启动的是 vim 的兼容模式。

安装vim:dnf install -y vim

1-打开文件

vi a.txt                   # 直接打开文件

vim a.txt                # vim是vi的增强版

vim +10 a.txt        # 直接打开文件,并定位到第10行 

vi/vim三种工作模式: 命令模式、插入模式(编辑模式)、末行模式(底行模式)

  • 命令模式:复制、粘贴、移动光标、撤销与恢复
  • 插入模式(编辑模式):只能编辑文件内容(写字)
  • 底行模式(末行模式):保存文件、退出文件、显示行号、搜索关键词

2-命令模式

        当我们通过vi/vim命令打开文件时,默认就处于命令模式。小技巧:进入vim编辑器,先查看左下角有没有提示信息,如果没有任何信息,代表你当前位于命令模式!

3-编辑模式

如何进入编辑模式呢?

 答:i:在当前光标的前面插入内容

        a:在当前光标的后面插入内容

        o:在光标的后一行插入内容

        O:在光标的前一行插入内容

如何从编辑模式回到命令模式?

答:按Esc键

4-底行模式

在Linux操作系统中,文件必须先保存后退出!
!叹号代表强制,强制保存、强制退出、强制保存并退出!

:wq和:x区别?

答:如果文件内容有改变,两者的效果是一样的。如果文件内容没有改变,:x不会改变文件的最后修改时间,但是:wq会更新文件的最后修改时间。运维工程师,强烈推荐使用:x

5) 编辑常见问题

        如果在打开某个文件时,弹出以上提示, 那代表你这个文件之前没有保存就强制退 出了,触发了Vim的备份机制,产生了一个.文件名称.swp交换文件。

以后每次打开之前的文件就会产生上面的提示,解决方案:

①之前的修改不重要,可以直接删除的情况:rm.源文件名称.swp

②之前的修改很重要,需要先恢复内容,然后再解决报错问题

  •  第一步:直接回车,切换到错误的底部,找到回复菜单,一般是R,恢复文件内容
  •  第二步:针对找回的内容进行:x保存并退出
  •  第三步:删除刚才产生的交换文件

6) 文件查看命令

综合案例

日志文件分析

1. 使用 cat 查看 /var/log/messages 的内容。

2. 使用 head 查看该日志文件的前20行。

3. 使用 tail 查看该日志文件的最新50行。

4. 使用 less 浏览该日志文件,查找 "error" 关键字。

5. 使用 wc 统计 /var/log/syslog 文件的行数、单词数和字符数。

# 1.使用 cat 查看 /var/log/messages 的内容。
cat /var/log/message

# 2. 使用 head 查看该日志文件的前20行。
head -20 /var/log/message

# 3. 使用 tail 查看该日志文件的最新50行。
tail -50 /var/log/message

# 4. 使用 less 浏览该日志文件,查找 "error" 关键字。
less /var/log/message  # 进入 less 后按 /,输入 error 回车即可搜索。

# 5. 使用 wc 统计 /var/log/syslog 文件的行数、单词数和字符数。
wc -lwm /var/log/syslog # 行数、单词数、字符数

练习:查找和统计文件中的特定内容

在 /var/log 目录中找到一个大文件(如 messages)
        1. 使用 grep 命令查找所有包含 "timeout" 的行
        2. 使用 wc -l 统计包含 "timeout" 的行数
        3. 使用 less 浏览包含 "timeout" 的日志,确保能查看到整个内容
# 1.使用 grep 命令查找所有包含 "timeout" 的行
grep timeout /var/log/messages

# ll | grep 可以将上一个执行结果运行到下一个应用
# 2.使用 wc -l 统计包含 "timeout" 的行数
grep timeout /var/log/messages | wc -l

# 3.使用 less 浏览包含 "timeout" 的日志,确保能查看到整个内容
grep "timeout" /var/log/messages | less

7) 文件解压缩

        tar(tape archive)是一个用于打包和压缩文件的命令行工具。它可以将多个文件和目录打包成一个文件,也可 以 对这些文件进行压缩,减少存储空间。tar 命令广泛用于 Unix 和类 Unix 系统,包括 Linux 和 macOS。

tar命令:
格式:tar [选项] 文件 ...

关于使用tar命令, 如何进行解压缩操作?

答:    解压: tar -xzvf 需解压的文件 [-C 解压目的地路径]

        压缩: tar -czvf 压缩后的文件名字 需要压缩的文件或者目录列表...

关于 zip压缩包, 如何进行解压缩操作?

答:    解压: unzip 归档文件名.zip [-d 解压目录]

        压缩: zip [-r] 归档文件名.zip 需要归档的文件列表

zip和unzip命令

        作用: zip用于压缩, unzip进行解压 针对是zip压缩包

        格式:

                zip [-r] 归档文件名.zip 需要归档的文件列表

                        -r : 递归压缩

                unzip 归档文件名.zip [-d 解压目录]

                        -d: 如果不指定, 表示解压到当前路径

练习:创建项目目录与日志管理

1- 创建目录结构:
# 1-创建目录结构
mkdir -p /opt/web_project/src    #存放代码
mkdir -p /opt/web_project/logs    # 存放日志(保留最近7天日志)
mkdir -p /opt/web_project/backup    # 存放备份
mkdir -p /opt/web_project/config    # 存放配置文件

2-生成模拟日志

        需求一:在logs/目录下创建3个日志文件,命名格式为access_2023-08- 0{1..3}.log
        需求二:在每个日志文件中写入5行文本,内容为"[INFO]Requestprocessedat日期"
# 2-生成模拟日志
# 需求一:在logs/目录下创建3个日志文件,命名格式为access_2025-04-0{1..3}.log
cd /opt/web_project/logs
touch -d"2025-04-01 12:34:56" access_2025-04-01.log
touch -d"2025-04-03 12:34:56" access_2025-04-03.log
touch -d"2025-04-04 12:34:56" access_2025-04-04.log
# 需求二:在每个日志文件中写入5行文本,内容为"[INFO]Requestprocessedat 日期"
# 以写入access_2025-04-01.log为例
echo "[INFO] Request processed at 2025-04-01" >> access_2025-04-01.log
echo "[INFO] Request processed at 2025-04-01" >> access_2025-04-01.log
echo "[INFO] Request processed at 2025-04-01" >> access_2025-04-01.log
echo "[INFO] Request processed at 2025-04-01" >> access_2025-04-01.log
echo "[INFO] Request processed at 2025-04-01" >> access_2025-04-01.log

3-备份与清理

        需求一:将logs/目录下所有以2023-08-0开头的日志文件,复制到backup/目录
        需求二:保留logs/目录中仅最近1天的日志(文件名日期最大的3个文件),其余删除(rm直接删除即可)
# 3- 备份与清理
# 需求一: 将logs/目录下所有以 2025-04-0 开头的日志文件,复制到backup/目录
cp /opt/web_project/logs/access_2023-08-0*.log /opt/web_project/backup/
# 需求二: 保留logs/目录中仅最近1天的日志(文件名日期最大的3个文件),其余删除 (rm直接删除即可)
find -mtime +1 -type f -exec rm -f {} \;

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐