Linux 基础学习第 2 天:Linux文件、目录

        在 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:高级分页查看,支持前后翻页。
    • 选项:-显示当前行范围。
    • 操作:空格(下一页)、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 的学习需要循序渐进,通过不断实践和总结,逐步提升操作熟练度和系统理解深度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值