在 Linux 系统的学习过程中,文件系统与基本操作指令是必须熟练掌握的核心内容。本文将系统整理 Linux 基础第二天的学习笔记,涵盖文件系统结构、目录与文件操作指令等关键知识点,帮助读者建立完整的 Linux 操作知识体系。
一、Linux 文件系统结构解析
Linux 系统的本质是一个层级式的文件系统,采用倒状树型目录结构,这种设计使得系统文件组织清晰且便于管理。理解文件系统的基本结构是掌握 Linux 操作的基础。
1.1 根目录与核心目录功能
- 根目录(/):Linux 文件系统的绝对路径起点,所有文件和目录都从这里延伸。
- /bin:存放系统普通指令,如 ls、cd 等,所有用户均可执行。
- /boot:存储系统引导程序,包括内核和启动配置文件。
- /dev:存放硬件设备对应的文件,如硬盘、U 盘等设备文件。
- /etc:保存系统和应用程序的配置文件,如网络配置、用户权限配置等。
- /home:用户家目录,每个用户都有独立的子目录。
- /lib:存放系统和应用程序的依赖库文件。
- /proc:存储系统运行时的动态信息,如进程状态、内存使用等。
- /usr:软件的默认安装路径,类似 Windows 的 Program Files。
- /var:存放缓存、日志和备份文件,内容会随系统运行动态变化。
- /cdrom:光驱挂载点(通常用于挂载光盘)
- /mnt:用于系统文件系统的挂载目录,举例:/mnt/hgfs可用于挂载共享目录,/mnt/udisk可用于挂载U盘.
- /sbin::用于存放一些特权指令,通常只有系统管理员(root)才能执行。
1.2 路径表示方法
绝对路径
以根目录(/)为起点描述的路径,具有唯一性。例如:
/mnt/hgfs/linuxc/demo01.c // Linux系统绝对路径
D:\\YQ\\Code\\demo01.c // Windows系统绝对路径
相对路径
以当前目录(./)为参考点描述的路径,常用于简化操作。例如:
cd ./st // 切换到当前目录下的st子目录
cd st // 等价写法,推荐使用
cd ../ // 切换到上一级目录
cd ../../ // 切换到上两级目录
二、Linux 文件类型识别
通过ls -l
命令可以查看文件的详细信息,其中第一个字符表示文件类型:
# 示例输出
lrwxrwxrwx 1 root root 76 Jun 29 22:03 bin -> usr/bin
drwxr-xr-x 19 root root 4096 Jun 29 22:32 boot
-rw-r--r-- 1 root root 968110080 Jun 29 22:03 swapfile
- d:目录,类似 Windows 的文件夹。
- -:普通文件,包含文本、二进制等文件。
- l:符号链接,相当于 Windows 的快捷方式。
- c:字符设备文件,用于串口、终端等字符设备交互。
- b:块设备文件,用于硬盘、U 盘等块设备交互。
- s:套接字文件,用于进程间通信。
- p:管道文件,也用于进程间通信。
三、目录操作核心指令
3.1 查看当前目录:pwd
- 功能:显示当前所在目录的绝对路径。
- 语法:指令 [选项] [操作的文件或者目录]
- 示例:
st@st-vm:~$ pwd /home/st
注意:语法中加入[ ],就表示方括号括起来的内容可选。
3.2 列出目录内容:ls
- 功能:显示指定路径下的文件或目录(默认当前路径)。
常用选项:
-a
:显示所有文件(包括隐藏文件,以。开头)。
-l
:长格式显示详细信息(权限、所有者、大小、时间等)。
-r
:反向排序(默认按字母顺序)。
-t
:按修改时间排序。
说明:多个参数可以共同出现,如:
ls -l -t -r -a 等价于
ls -ltra
说明:我们也可以指定具体的目录路径,如:
ls ./ 等价于
ls
ls /mnt/hgfs/linux
3.3 切换目录:cd
- 功能:切换工作目录。
- 常用写法:
cd ~
:切换倒当前登录用户的家目录,比如:若当前登录用户为 st , cd ~ 就会切
换到 /home/st 下,等价于 cd /home/st 。
cd -
:返回上一次操作的工作目录(类似于windows中的返回上一步)
cd /home/st
cd /mnt/hgfs
cd -
结果:返回 /home/st/
cd /
:切换到根目录下。cd ../
:切换到上一级目录,等价于 cd ..。
cd /home/st
cd /mnt/hgfs
cd ../
结果:返回 /mnt/
- cd ../../ :切换到上两级目录,等价于 cd ../.. ,可以根据需要增加 ../ 来切换。
到更上级的目录。
3.4 创建目录:mkdir
- 功能:创建空目录。
- 选项:
-p
:可以创建多层目录(嵌套目录),若中间的目录不存在,会自动创建。
mkdir test_dir # 创建单个目录
mkdir dir1 dir2 dir3 # 批量创建多个目录
mkdir -p a/b/c/d # 递归创建多层目录
3.5 删除空目录:rmdir
- 功能:仅删除空目录,支持批量删除。
删除目录:需要借助选项 -r 递归删除,目录可以是空目录,也可以是非空目录
删除文件:无需借助选项 -r ,如果加了 -r ,也没事。
rmdir test_dir # 删除单个空目录
rmdir dir1 dir2 dir3 # 批量删除多个空目录
rmdir * # 删除当前路径下所有空目录(通配符)
四、文件操作实用指令
4.1 创建文件:touch
- 功能:创建新文件,若文件存在则更新访问和修改时间。
touch test.txt # 在当前目录创建文件
touch dir1/file1.txt dir2/file2.txt # 批量创建文件
4.2 删除文件 / 目录:rm
- 功能:删除文件或目录。
- 选项:
-r
:递归删除目录(包括子目录和文件)。-f
:强制删除,不提示确认。
rm test.txt # 删除单个文件
rm -r dir1 # 递归删除目录
rm -f *.txt # 强制删除所有txt文件
解释: * 是通配符,通配0到多个字符。 test* 就是匹配以test开头的。 *test 就是匹配以test的。
说明:
① 查找:从外层逐步向内层查找
② 删除:从内层逐步向外层删除
说明:
文件删除,直接删除就可以了,目录删除或者目录 + 文件删除,需要使用选项 -r 进行
递归删除。另外,使用 rm -f 可以强制删除文件或目录,不进行确认提示,但使用时需
谨慎,因为删除后数据无法恢复。
4.3 复制文件 / 目录:cp
- 功能:复制文件或目录,可实现重命名。
- 选项:
-r
:递归复制目录及内容。-i
:如果目的地路径下已经存在同名的目录或者文件,会交互提示(YES:完成替换,NO:取消拷贝)。
cp source.txt dest/ # 复制文件到目录
cp -r dir1 dir2 # 复制目录
cp file.txt new_name.txt # 复制并重命名
4.4 移动 / 重命名:mv
- 功能:移动文件 / 目录或重命名。
mv file.txt dir/ # 移动文件到目录
mv file1.txt file2.txt # 重命名文件
mv dir1 new_dir/ # 移动目录并重命名
mv aa.txt ../b
解释:移动,将aa.txt移动到../b目录下
mv aa.txt ../b/bb.txt
解释:移动+重命名,将aa.txt移动到../b目录下并重命名为bb.txt(注意:不能将一
个文件移入另一个文件)
mv aa.txt bb.txt
解释:重命名,将同一路径下的aa.txt重命名为bb.txt
mv aa.txt ../b/cc.txt
解释:移动 + 重命名(重命名的是目的地文件)
cp -r aa.txt ../b/cc.txt
解释:拷贝 + 重命名(重命名的是目的地文件)
五、文件内容查看与搜索
5.1 查看全部内容:cat
- 功能:显示文件内容,适合小文件。
- 选项:
-n
:显示行号。
cat /proc/cpuinfo # 查看CPU信息
cat -n file.txt # 显示文件并带行号
5.2 分页查看:more/less
- more:简单分页查看,只能向下翻页。
- 操作:空格(下一页)、回车(下一行)、Q(退出)。
- less:高级分页查看,支持前后翻页。
- 选项:-
M
显示当前行范围。 - 操作:空格(下一页)、B(上一页)、方向键(逐行)、Q(退出)。
- 选项:-
less -M /proc/cpuinfo
5.3 查看首尾内容:head/tail
- head:查看文件头部(默认 10 行)。
- 选项:
n 5
查看前 5 行。
- 选项:
- tail:查看文件尾部(默认 10 行)。
- 选项:
n 5
查看后 5 行。
- 选项:
head [选项] 文件路径
head -n 5 /proc/cpuinfo -- 等价于
head -5 /proc/cpuinfo
tail [选项] 文件路径
tail -n 5 /proc/cpuinfo -- 等价于
tail -5 /proc/cpuinfo
5.4 内容搜索:grep
- 功能:在文件中搜索指定字符串。
- 选项:
-n
:显示行号。-c
:统计匹配行数。-i
:忽略大小写。
grep [选项] 要查找的字符序列 文件路径 -- 等价于
grep [选项] '要查找的字符序列' 文件路径
grep "apicid" /proc/cpuinfo # 搜索关键词
grep -ni "APICID" /proc/cpuinfo # 忽略大小写并显示行号
grep -c "apicid" /proc/cpuinfo # 统计匹配次数
grep -ni apicid /proc/cpuinfo
解释:显示行号和忽略大小写,在文件cpuinfo中查找apicid 等价于
grep -ni 'apicid' /proc/cpuinfo
grep -c 'apicid' /proc/cpuinfo
解释:显示搜索到的数量,和-n不能混合使用,因为两者冲突
5.5 文件查找:find/locate
- find:递归查找文件(精确但慢)。
- 说明:查找文件或目录(递归查找),从磁盘查找,精确性高,性能低。适合在需要精确查找文件时使用,但由于是遍历磁盘,所以速度较慢。
- 选项:
-name
:按名称查找(区分大小写)。-iname
:按名称查找(不区分大小写)。-size
:按照文件大小搜索,默认1个单位(注意:1个单位 = 512字节),可使用 k (KB)、 M (MB)、 G (GB) 等单位。-type
:按照文件类型查找(d:目录,f:普通文件,l:符号链接,p:管道文件 等)。
- 选项:
find ./ -iname test1.txt
解释:在当前路径下包括其子目录中查找文件名为test1.txt的文件,
文件名忽略大小写,以路径列表呈现
find / -size +3M
解释:在/目录下包括其子目录中查找文件大小超过3MB的文件,
这里的 “ + ” 表示超过(字节数:1024 * 3 * 1024)
find / -size +3
解释:在/目录下包括其子目录中查找文件大小超过3个单位的文件,
这里的 “ + ” 表示超过 (字节数:512 * 3)
find / -size -3M
解释:在/目录下包括其子目录中查找文件大小不超过3MB的文件,
这里的 “ - ” 表示不超过 (字节数:1024 * 3 * 1024)
- locate:快速查找
-
说明:快速查找文件或目录,从数据库查找,准确性低,性能高。该指令是从文件系统的数据库中查找,新创建的文件还没有在数据库中建立索引,用该指令是找不到的。
find ./ -iname "test.txt" # 当前目录查找test.txt(不区分大小写)
locate -i "test.c" # 查找test.c(忽略大小写)
sudo updatedb # 手动更新数据库
六、其他实用指令
6.1 指令定位:which
- 功能:查找指令的存储位置。
which ls # 查找ls指令的位置
6.2 输出重定向:echo
echo "字符串" > | >> 文件路径
- 功能:输出字符串到终端或文件。
- 操作符:
>
:覆盖写入文件。>>
:追加写入文件。
echo "Hello Linux" > file.txt # 覆盖写入
echo "World" >> file.txt # 追加内容
6.3 管道操作:|
- 功能:将前一指令的输出作为后一指令的输入。
ls -l | grep ".txt$" # 显示详细信息并过滤txt文件
find /dev -type c | grep "2$" # 查找/dev下类型为c且以2结尾的文件
七、计算机存储单位转换
在 Linux 操作中,了解存储单位转换至关重要:
1 Byte = 8 bit
1 KB = 1024 Byte
1 MB = 1024 KB
1 GB = 1024 MB
1 TB = 1024 GB
总结与实践建议
通过第二天的学习,我们深入了解了 Linux 文件系统的结构,掌握了目录与文件操作的核心指令。这些知识是 Linux 系统管理和开发的基础,建议通过大量实践巩固所学内容。
Linux 的学习需要循序渐进,通过不断实践和总结,逐步提升操作熟练度和系统理解深度。