pwd指令与linux文件结构
pwd指令
指令:pwd
功能:查看别人所处工作目录
bash
-bash-4.2# pwd
/root
-bash-4.2#
linux文件结构
Linux的文件是一颗多叉树
非叶子节点:非空目录。
叶子节点:空目录或者普通文件

ls指令与常用选项以及linux中的文件
1.1ls指令
**语法:**ls 选项 目录或文件
**功能:**对于目录,该命令列出该目录下的所有子目录与文件,对于文件,将列出文件名以及其它信息
常用选项:
-a列出目录下所有文件,包括以 . 开头的隐含文件
-d将目录像文件一样显示,而不是显示其下的文件,如:ls -d 指定目录
-l 列出当前工作目录下的文件的详细信息
选项组合效果查表:(选项可以连用,连用选项没有固定格式要求,可以是 -a -l;或者是-l -a;-al;-la)

bash
-bash-4.2# ls -a
. .. .bash_history .cache .config .lesshst mulu01 test01.c test.c
bash
-bash-4.2# ls -l
total 12
drwxr-xr-x 4 root root 4096 Mar 31 20:24 mulu01
-rw-r--r-- 1 root root 48 Mar 31 20:05 test01.c
-rw-r--r-- 1 root root 13 Mar 31 20:06 test.c
-bash-4.2#
bash
-bash-4.2# ls -al
total 36
drwxr-xr-x 5 root root 4096 Mar 31 20:24 .
dr-xr-xr-x. 19 root root 4096 Apr 6 15:59 ..
-rw------- 1 root root 1430 Apr 5 21:19 .bash_history
drwxr-xr-x 3 root root 4096 Mar 30 17:27 .cache
drwxr-xr-x 3 root root 4096 Mar 30 17:27 .config
-rw------- 1 root root 51 Mar 31 20:34 .lesshst
drwxr-xr-x 4 root root 4096 Mar 31 20:24 mulu01
-rw-r--r-- 1 root root 48 Mar 31 20:05 test01.c
-rw-r--r-- 1 root root 13 Mar 31 20:06 test.c
bash
-bash-4.2# cd /root/mulu01
-bash-4.2# ls -d
.
-bash-4.2# ls -ld
drwxr-xr-x 4 root root 4096 Mar 31 20:24 .
-bash-4.2# ls -ald
drwxr-xr-x 4 root root 4096 Mar 31 20:24 .
ls -d为什么只显示一个点,其意思是列出当前目录本身,所以就只有一个点
-a和-d在同一条指令时,只会发挥-d不会发挥-a的作用,看似冲突了,但其实它们并不冲突,而是作用的对象和层级完全不同,-a管的是范围就是进行扫描时,是否要扫描隐藏文件,-d管的是行为,是否要把目录本身当作普通文件,有了-d时就会只扫描当前目录
bash
-bash-4.2# cd /root/mulu01
-bash-4.2# ls -d
.
-bash-4.2# ls -ld
drwxr-xr-x 4 root root 4096 Mar 31 20:24 .
-bash-4.2# ls -ald
drwxr-xr-x 4 root root 4096 Mar 31 20:24 .
-bash-4.2# ls -al /root/mulu01
total 32
drwxr-xr-x 4 root root 4096 Mar 31 20:24 .
drwxr-xr-x 5 root root 4096 Mar 31 20:24 ..
drwxr-xr-x 3 root root 4096 Mar 31 20:02 mulu03
drwxr-xr-x 2 root root 4096 Mar 30 17:33 nihao01
-rw-r--r-- 1 root root 3257 Mar 31 20:17 test01
-rw-r--r-- 1 root root 4495 Mar 31 20:23 test02
-rw-r--r-- 1 root root 297 Mar 31 20:24 test03
-bash-4.2#
ls可以指定目录
1.2linux中的文件初步介绍
首先,目录就是文件夹。文件夹有文件名和文件属性。文件属性有文件的名称,文件的各种时间(如修改时间,创建时间)。我们学习文件是学习堆文件内容的操作和对文件属性的操作。
这里ls指令就是显示文件信息,ls只显示文件的名称,ls-l显示的是文件的详细信息(文件属性):
bash
-bash-4.2# ls -l
total 8
drwxr-xr-x 2 root root 4096 Apr 6 16:29 mulu07
drwxr-xr-x 2 root root 4096 Mar 31 20:02 nihao01
-rw-r--r-- 1 root root 0 Mar 31 20:02 test01
其中 -开头就是普通文件,d开头就是目录,除此之外,文件名以.和..开头的就是隐藏文件,需要ls-a才能显示出来,任何目录下都会有这两个文件(即使目录是空的),具体作用后续讲解
如果我们想要查找一个文件的详细状态信息,可以使用stat指令+文件名解决
bash
-bash-4.2# stat /root/mulu01/mulu03/mulu01/test01
File: '/root/mulu01/mulu03/mulu01/test01'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd01h/64769d Inode: 786450 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2026-03-31 20:02:36.075569579 +0800
Modify: 2026-03-31 20:02:36.075569579 +0800
Change: 2026-03-31 20:02:36.075569579 +0800
Birth: -
-bash-4.2#
科普内容
这里的三个时间都是什么意思?
Access: 2026-03-31 20:02:36 (访问时间),最后一次读取文件内容的时间。
Modify: 2026-03-31 20:02:36 (修改时间),最后一次修改文件内容的时间。
Change: 2026-03-31 20:02:36 (状态改变时间),最后一次修改文件**元数据(属性)**的时间。
mkdir指令---创建文件夹
3.1mkdir指令的使用
功能:创建新的工作目录
指令语法:mkdir+新的工作目录名称
bash
-bash-4.2# tree
.
|-- nihao01
| `-- test789.txt
`-- test01
1 directory, 2 files
-bash-4.2# mkdir mulu07
-bash-4.2# tree
.
|-- mulu07//多了一个目录
|-- nihao01
| `-- test789.txt
`-- test01
2 directories, 2 files
-bash-4.2#
3.2mkdir的常用选项

touch指令与时间戳
4.1touch指令的使用
功能:1.创建新文件2.修改文件时间
语法:touch +文件名
bash
-bash-4.2# tree
.
0 directories, 0 files
-bash-4.2# touch file01.txt
-bash-4.2# tree
.
`-- file01.txt
0 directories, 1 file
-bash-4.2#
修改文件时间
bash
-bash-4.2# stat file01.txt
File: 'file01.txt'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd01h/64769d Inode: 786456 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2026-04-07 08:18:36.851113831 +0800
Modify: 2026-04-07 08:18:36.851113831 +0800
Change: 2026-04-07 08:18:36.851113831 +0800
Birth: -
-bash-4.2# touch file01.txt
-bash-4.2# stat file01.txt
File: 'file01.txt'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd01h/64769d Inode: 786456 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2026-04-07 08:23:02.769923455 +0800
Modify: 2026-04-07 08:23:02.769923455 +0800
Change: 2026-04-07 08:23:02.769923455 +0800
Birth: -
-bash-4.2#
touch后面的文件名如果存在,那就是修改文件时间(Access,Modify,Change)
如果不存在,就是创建新文件
4.2时间戳的概念补充
时间戳(Timestamp)是计算机记录特定事件(如文件创建、数据修改或交易发生)发生时刻的一组数字,它像是一把数字刻度尺,通常以从"格林威治时间 1970 年 1 月 1 日 0 时"开始计算的总秒数(即 Unix 时间戳)来表示,从而确保在不同系统、不同时区之间都能拥有一个统一、唯一且可精确比较的时间参照。
格林威治时间 1970 年 1 月 1 日 0 时------东八区1月1日上午8点。时间戳为0,我写这篇博客的时候的时间戳为1775527771。
cd指令与linux中的路径
功能:切换工作目录
语法:cd+空格+路径
bash
-bash-4.2# tree
.
|-- mulu01
| |-- mulu03
| | `-- mulu01
| | |-- nihao01
| | | `-- test789.txt
| | `-- test01
| |-- nihao01
| | `-- test789.txt
| |-- test01
| |-- test02
| `-- test03
|-- test01.c
`-- test.c
5 directories, 8 files
-bash-4.2# cd /root/mulu01
-bash-4.2# pwd
/root/mulu01
Linux终端的路径分为绝对路径和相对路径
绝对路径:从根目录root开始向下查找的路径,配置文件中用的多一些
相对路径:从任何目录开始查找得到的路径,在日常使用的多
cd和相对路径有关的其他用法和一一演示
cd -:切回到你上一次所在的目录。 cd ~:直接飞回root目录。 cd . .:到上级目录
rm删除指令与rmdir指令与通配符
rm指令
功能:删除任何可以被删除的文件/目录
语法:rm + 要删除的文件目录
常用指令组合

rmdir指令----删除空目录
功能:删除一个空目录
语法:rm + 要删除的空目录
bash
-bash-4.2# tree
.
|-- mulu01
| |-- nihao01
| | `-- test789.txt
| |-- test01
| |-- test02
| `-- test03
`-- test.c
2 directories, 5 files
-bash-4.2# rmdir /root/mulu01
rmdir: failed to remove '/root/mulu01': Directory not empty
-bash-4.2# mkdir mulu02
-bash-4.2# tree
.
|-- mulu01
| |-- nihao01
| | `-- test789.txt
| |-- test01
| |-- test02
| `-- test03
|-- mulu02
`-- test.c
3 directories, 5 files
-bash-4.2# rmdir mulu02
-bash-4.2# tree
.
|-- mulu01
| |-- nihao01
| | `-- test789.txt
| |-- test01
| |-- test02
| `-- test03
`-- test.c
2 directories, 5 files
-bash-4.2#
模糊操作---*通配符
含义:匹配任意长度的任何字符
ls *.txt:找所有以.txt结尾的文件
ls mulu*:找所有以mulu开头的文件
ls test:找出所有文件里面带test的文件
rm -rf *:删除当前目录下所有非隐藏内容
除了隐藏文件,* 还不能通配什么?
通配符 * 的设计原则是匹配文件名中的字符,但为了安全和结构上的考虑,它有两个明确的"禁区":
路径分隔符 /
* 不能匹配目录分隔符。它只能在同一个目录层级内匹配文件名,无法跨目录匹配。
例如:在 /home/user 目录下执行 ls *,它会列出该目录下的所有文件,但不会列出 /home/user/subfolder/file.txt 这样的深层文件。如果你要匹配深层文件,需要使用 ls **(需要先通过 shopt -s globstar 开启 globstar 选项)。
路径起始的 . 和 ..
* 永远不会匹配当前目录 . 和上级目录 ..。即使你使用专门匹配隐藏文件的 .*,Shell 也会在内部安全地处理,避免对这两个特殊目录进行操作。