第六章:文件与目录操作:命令行中的“瑞士军刀”
第六章:文件与目录操作:命令行中的“瑞士军刀”
Prorise第六章:文件与目录操作:命令行中的“瑞士军刀”
本章将聚焦于 Linux 命令行中最核心、最频繁使用的文件与目录操作命令。掌握这些工具是高效进行系统管理和开发的基础。我们将从文件系统的基本导航开始,逐步深入到文件的创建、删除、复制、移动,并最终学习如何在庞大的文件系统中高效、精确地查找所需的文件和命令。
6.1. 导航三剑客:pwd
, ls
, cd
在文件系统的“大树”中自由穿梭是所有操作的前提。pwd
、ls
和 cd
这三个命令构成了命令行导航的基石。
pwd
(Print Working Directory)
此命令用于显示您当前所在的完整、绝对路径。当您在复杂的目录结构中感到迷失时,pwd
是您定位自身位置最可靠的工具。
1 | $ pwd |
ls
(List)
ls
命令用于列出当前目录下的文件和子目录。它是您观察环境、获取信息的“眼睛”。ls
的强大之处在于其丰富的选项,可以组合使用以获得不同维度的信息。
ls -l
(Long Format): 以长格式(详细信息)列出内容。1
2$ ls -l
-rw-r--r-- 1 prorise prorise 0 Sep 17 10:24 index.html输出解读(从左到右):
- 文件类型与权限: 第一个字符(
-
代表文件,d
代表目录)。后面九个字符代表所有者、所属组、其他人的读®写(w)执行(x)权限。 - 硬链接数: 指向此文件的硬链接数量。
- 所有者: 文件或目录的拥有者。
- 所属组: 文件或目录所属的用户组。
- 大小: 文件大小(默认为字节)。
- 最后修改时间: 文件内容的最后修改日期和时间。
- 名称: 文件或目录的名称。
- 文件类型与权限: 第一个字符(
ls -a
(All): 显示所有文件,包括以.
开头的隐藏文件(通常是配置文件)。ls -h
(Human-readable): 必须与-l
配合使用 (ls -lh
),它会将文件大小以更易读的单位(如 K, M, G)显示。ls -t
(Time): 按最后修改时间排序,最新的文件会显示在最前面。ls -r
(Reverse): 反转当前的排序顺序。
常用组合: ls -alhtr
是一个非常实用的组合,它会以详细、易读的格式,列出所有文件(包括隐藏文件),并按时间从最旧到最新排序,让您能快速定位最近发生变化的文件。
cd
(Change Directory)
cd
命令用于在目录之间切换。它有一些特殊的快捷方式,极大提升了导航效率。
cd <目录路径>
: 切换到指定目录,如cd /var/log
。cd .
: 切换到当前目录(.
代表当前目录),这在某些脚本场景中有用。cd ..
: 切换到上一级(父)目录(..
代表父目录)。cd ~
或直接cd
: 快速返回当前用户的家目录 (/home/<username>
)。cd -
: 切换到 上一次 所在的目录。这是一个非常高效的快捷方式,用于在两个目录间来回跳转。
6.2. 增删改查:touch
, mkdir
, rm
, cp
, mv
这是文件系统的基本“CRUD”(Create, Read, Update, Delete)操作在命令行中的体现。
touch <文件名>
:
主要有两个功能:1. 如果文件不存在,则创建一个空的文本文件。 2. 如果文件已存在,则更新其访问和修改时间为当前时间。mkdir <目录名>
:
创建一个新的目录。-p
(parents): 这是一个极其有用的选项,允许您一次性创建多层嵌套的目录,即使父目录不存在也会被自动创建。例如:mkdir -p new_project/src/components
。
rm <文件名>
:
删除文件。-r
(recursive): 递归删除。要删除一个目录及其内部所有内容,必须使用此选项。-f
(force): 强制删除,忽略不存在的文件并且从不提示。
删库跑路警告: rm -rf /
是 Linux 中最危险的命令之一。rm -rf
会无提示地强制递归删除指定目录下的所有内容。在使用 rm -rf
时,请务必再三确认您所在的路径和要删除的目标,一旦执行,数据恢复将极其困难甚至不可能。
cp <源> <目标>
:
复制文件或目录。-r
(recursive): 复制目录时必须使用此选项,它会复制整个目录及其内容。示例:cp -r ~/projects/app1 /var/www/
将app1
整个目录复制到/var/www/
下。
mv <源> <目标>
:
移动或重命名文件/目录。mv
命令有两个核心用途:- 移动: 如果“目标”是一个已存在的目录,
mv
会将“源”移动到该目录下。mv server.js ./config/
- 重命名: 如果“目标”是一个不存在的文件名(且在同一目录下),
mv
会将“源”重命名。mv server.js app.js
- 移动: 如果“目标”是一个已存在的目录,
6.3. 搜索利器 find
find
是一个功能极其强大的文件搜索工具,它通过遍历文件系统来根据指定的条件进行实时查找。基本语法为:find [起始路径] [表达式选项] [操作]
- 按名称查找 (
-name
):
支持通配符*
。-iname
为不区分大小写的版本。find /home/your_username -name "*.js"
- 按类型查找 (
-type
):find . -type d
(查找所有目录)find . -type f
(查找所有普通文件) - 按大小查找 (
-size
):+
表示大于,-
表示小于。单位:c
(字节),k
(KB),M
(MB),G
(GB)。find /var/log -type f -size +100M
(查找/var/log
目录下大于 100MB 的文件) - 按修改时间查找 (
-mtime
):-n
(n 天内修改过),+n
(n 天前修改过)。find . -mtime -7
(查找 7 天内被修改过的文件)
6.4 核心速查总结
分类 | 关键命令 | 核心描述 |
---|---|---|
文件系统导航 | pwd | 显示当前工作目录的绝对路径,用于精确定位。 |
ls (及 -l , -a , -h , -t , -r 选项) | 列出目录内容。-l 提供详细信息,-a 显示隐藏文件,-h 使大小易读。是观察环境的主要工具。 | |
cd (及 . .. ~ - 特殊符号) | 切换目录。~ 用于快速返回家目录,- 用于在最近两个目录间快速跳转,极大提升效率。 | |
文件/目录管理 | touch <文件名> | 创建空文件或更新已存在文件的时间戳。 |
mkdir <目录名> (及 -p 选项) | 创建目录。-p 选项可以一次性创建多层嵌套目录,非常实用。 | |
rm <文件/目录> (及 -r , -f 选项) | 删除文件或目录。-r 用于递归删除目录,-f 用于强制删除。rm -rf 是高危操作,需谨慎使用。 | |
cp <源> <目标> (及 -r 选项) | 复制文件或目录。复制目录时必须使用 -r 选项。 | |
mv <源> <目标> | 移动或重命名文件/目录。其具体行为取决于“目标”是否存在。 | |
文件内容搜索 | find <路径> <表达式> | 实时、递归地在文件系统中按名称、类型、大小、修改时间等多种条件查找文件,是强大的搜索工具。 |