从零入门Linux系统篇(二):指令篇·一——基础六大指令与Linux终端操作技巧
目录
一、pwd命令与Linux文件系统结构
1.1 pwd命令——查看当前工作目录
1.2 Linux文件系统结构——一切从根目录开始
二、ls命令与Linux文件基本属性
2.1 ls命令详解与常用选项
2.2 Linux文件类型与文件属性初识
三、mkdir命令——Linux目录创建
3.1 mkdir命令的基本使用
3.2 mkdir常用选项
四、touch命令与Linux文件时间属性
4.1 touch命令的基本使用
4.1.1 使用touch创建文件
4.1.2 使用touch修改文件时间
4.2 Linux时间戳(Timestamp)概念解析
五、cd命令与Linux路径管理
5.1 cd命令——切换工作目录
5.2 Linux路径体系
5.2.1 绝对路径与相对路径
5.2.1.1 绝对路径详解
5.2.1.2 相对路径详解
5.3 Linux路径书写规则与常见问题
六、rm删除命令、rmdir命令与Linux通配符
6.1 rm命令——Linux中的危险删除操作
6.2 rmdir命令——安全删除空目录
6.3 通配符“*”——Linux中的模糊匹配操作
七、Linux终端使用技巧
7.1 使用上下键快速查找历史命令
7.2 终端全屏与退出全屏
7.3 Linux终端复制与粘贴操作
7.4 Linux终端光标操作技巧
一、pwd命令与Linux文件系统结构
在Linux系统中,所有文件和目录都按照一定的层级关系组织起来。用户在终端执行命令时,并不是处于一个“抽象空间”,而是始终位于文件系统中的某一个具体目录,这个目录被称为当前工作目录(Current Working Directory)。
例如,打开终端后,用户可能位于:
/home/user/project此时执行创建文件、查看文件、运行程序等操作,默认都会以这个目录作为参考位置。因此,在学习Linux文件操作之前,首先需要掌握如何查看自己当前所处的位置,这就是pwd指令的作用。
1.1 pwd命令——查看当前工作目录
- 指令名称:pwd,全称Print Working Directory,打印当前工作目录(显示当前所在路径)。
- 使用频率:★★★★★
- 指令作用:查看当前用户所在的工作目录路径。
pwd的使用非常简单,不需要额外参数,直接输入命令即可:
pwd执行结果:
/home/zhao/Linux表示当前用户所在的位置为:Linux目录->/home/zhao/Linux,其中:
- /表示Linux文件系统的根目录;
- /home表示用户家目录所在位置;
- /zhao表示当前用户目录;
- /Linux表示当前所在目录。
1.2 Linux文件系统结构——一切从根目录开始
在上一节中,我们通过pwd指令查看了当前所在的位置。那么Linux中的这些目录到底是如何组织起来的呢?与Windows使用类似:C:\Users\Administrator\Desktop这样的盘符结构不同,Linux没有C盘、D盘的概念,而是采用一种树状文件结构。Linux中所有的文件和目录,都从最顶层的根目录开始:
/这个目录被称为根目录(root directory),它是整个Linux文件系统的起点。Linux文件系统整体类似一棵倒置的树:
其中:
非叶子节点:目录(Directory)目录中还可以继续存放其他目录或文件,例如:
/home /home/user /home/user/project这些都属于目录。
- 叶子节点:普通文件或空目录,例如:
main.c test.txt
这些文件无法继续向下存储其他内容,因此属于叶子节点。空目录虽然也是目录类型,但由于其中没有其他文件或目录,同样可以看作树结构中的叶子节点。
二、ls命令与Linux文件基本属性
在上一节中,我们学习了pwd指令,它可以帮助我们查看当前所处的位置。知道“我在哪里”之后,接下来就需要知道:当前目录下有哪些文件和目录?这就是ls指令的作用。
2.1 ls命令详解与常用选项
- 指令名称:ls,全称list,含义:列出目录中的内容。
- 指令作用:查看当前工作目录下的文件和目录。
- 使用频率:★★★★★
- 使用方式:ls + 空格 + 选项 + 空格 + 目录名
- 选项:用于控制显示内容;
- 目录名:指定查看哪个目录;
- 如果不指定目录,默认查看当前工作目录。
-bash-4.2# ls mulu01 test01.c test.cLinux中的命令通常都会提供不同的选项,用来实现更加丰富的功能。ls常用选项如下:
- -a选项:a = all,显示当前目录下所有文件,包括隐藏文件。
- -l选项:l = list,以详细信息形式列出当前目录中的文件。
- -d选项:d = directory,查看目录本身,而不是查看目录中的内容。
Linux 命令中的选项通常可以组合使用。Linux中选项组合没有固定顺序要求,只要选项之间能够正确解析即可。
选项演示:
-bash-4.2# ls -a . .. .bash_history .cache .config .lesshst mulu01 test01.c test.c -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-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-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可以指定目录:
-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#2.2 Linux文件类型与文件属性初识
在Linux中,目录本质上也是一种文件。简单理解:目录就是我们平时所说的文件夹。Linux中的文件主要包含两个部分:文件名和文件属性。其中,文件属性包含很多信息,例如:文件大小、文件权限、文件所属用户、文件的各种时间信息(如修改时间、访问时间等)。因此,我们学习Linux文件操作时,实际上包含两个方向:
- 对文件内容的操作:查看文件内容、修改文件内容、编辑文件内容。
- 对文件属性的操作:修改文件权限、查看文件时间、修改文件名称等。
前面我们学习了ls指令。ls的作用就是显示当前目录下文件的信息。普通情况下,只能显示文件名称:
-bash-4.2# ls mulu01 test01.c test.c如果想查看文件更加详细的信息,可以使用:
-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相比ls,ls -l显示了文件的详细属性信息。这里最前面的字符表示文件类型:
- -开头:表示普通文件;
- d开头:表示目录。
目前只需要掌握这两个基本类型即可,Linux中还有其他类型的文件,后续文章会继续介绍。除了普通文件和目录之外,Linux中还有一种特殊文件:隐藏文件。Linux规定:文件名以.开头的文件,就是隐藏文件。这些文件默认不会显示。如果想查看隐藏文件,需要使用:ls -a。
-bash-4.2# ls -a . .. mulu07 nihao01 test01可以看到:这两个特殊目录。Linux中,每一个目录下默认都会存在这两个隐藏目录,即使当前目录为空也一样。它们有什么作用?这里暂时不展开,后续学习cd指令和Linux路径时会详细介绍。
如果想查看一个文件更加完整的信息,可以使用:stat 文件名。
-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-05-31 20:02:36.075569579 +0800 Modify: 2026-05-31 20:02:36.075569579 +0800 Change: 2026-05-31 20:02:36.075569579 +0800 Birth: -相比ls -l,stat可以查看更加完整的文件状态信息。例如:文件大小、文件所属用户、文件所属组、文件访问时间、文件修改时间、文件状态变化时间。不过目前阶段只需要了解:ls -l用于快速查看文件基本属性,stat用于查看文件更加详细的状态信息。
科普内容
Linux文件中的三个时间是什么意思?
在使用stat查看文件信息时,我们会看到三个比较重要的时间:
Access: 2026-05-31 20:02:36
Modify: 2026-053-31 20:02:36
Change: 2026-05-31 20:02:36这三个时间分别表示:
Access:最后一次访问文件内容的时间。
Modify:最后一次修改文件内容的时间。
Change:最后一次修改文件元数据(属性)的时间。
Access看过,Modify改过,Change属性变过。
三、mkdir命令——Linux目录创建
在前面的学习中,我们已经掌握了如何查看目录中的文件:
- pwd:查看当前所在目录;
- ls:查看当前目录下有什么文件。
那么,如果我们想在当前目录下创建一个新的文件夹,应该怎么办?这就需要使用mkdir指令。
3.1 mkdir命令的基本使用
- 指令名称:mkdir,全称Make Directory,含义:创建目录。
- 使用频率:★★★★★
- 指令作用:创建新的工作目录(文件夹)。
- 指令操作:mkdir + 新的目录名称
mkdir mulu07表示在当前工作目录下创建一个名为mulu07的目录。例如,首先查看当前目录结构:
tree . |-- nihao01 | `-- test789.txt `-- test01 1 directory, 2 files可以看到当前目录下存在:目录nihao01,文件test01,现在创建一个新的目录:
mkdir mulu07再次查看当前目录:
tree . |-- mulu07 |-- nihao01 | `-- test789.txt `-- test01 2 directories, 2 files可以发现,新的目录mulu07已经出现在当前目录中。同时目录数量由1 directory,变为2 directories,说明目录创建成功。
3.2 mkdir常用选项
最实用的是第一个选项,后面的几个选项如果感兴趣可以自行尝试。在使用mkdir命令创建目录时,如果目标路径中的父目录不存在,可以先自动创建所缺少的父目录,这种方式也可以称为“递归创建”。因此,我们可以这样操作:
-bash-4.2# tree . |-- baggage01.tgz |-- baggage_mulu01.tgz |-- baggage_mulu66.tgz |-- baggage.tgz |-- deep_file.log |-- mulu66.tgz |-- mulu.zip |-- practice_lab | |-- big_file.bin | |-- mulu_deep | | |-- deep_file.log | | `-- inner | | `-- secret.txt | |-- readme.txt | |-- script.sh | |-- test01 | |-- test02 | `-- test03 |-- test.c `-- v 3 directories, 17 files -bash-4.2# mkdir -p mulu01/mulu02/mulu03/mulu04/mulu05 -bash-4.2# tree . |-- baggage01.tgz |-- baggage_mulu01.tgz |-- baggage_mulu66.tgz |-- baggage.tgz |-- deep_file.log |-- mulu01 | `-- mulu02 | `-- mulu03 | `-- mulu04 | `-- mulu05 |-- mulu66.tgz |-- mulu.zip |-- practice_lab | |-- big_file.bin | |-- mulu_deep | | |-- deep_file.log | | `-- inner | | `-- secret.txt | |-- readme.txt | |-- script.sh | |-- test01 | |-- test02 | `-- test03 |-- test.c `-- v 8 directories, 17 files -bash-4.2#四、touch命令与Linux文件时间属性
4.1 touch命令的基本使用
- 指令名称:touch
- 使用频率:★★★★★
- 指令作用:1.创建新的文件、2.修改文件的时间属性。
- 指令操作:touch + 文件名
4.1.1 使用touch创建文件
-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#4.1.2 使用touch修改文件时间
-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-06-07 08:18:36.851113831 +0800 Modify: 2026-06-07 08:18:36.851113831 +0800 Change: 2026-06-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-06-07 08:23:02.769923455 +0800 Modify: 2026-06-07 08:23:02.769923455 +0800 Change: 2026-06-07 08:23:02.769923455 +0800 Birth: - -bash-4.2#总结:
- touch后面跟的文件名如果已经存在:→修改文件的时间属性,包括:Access(访问时间)、Modify(修改时间)、Change(状态改变时间)。
- touch后面跟的文件名如果不存在:→创建一个新的空文件。
4.2 Linux时间戳(Timestamp)概念解析
时间戳(Timestamp)是计算机中用于记录某个事件发生时间的一种方式。例如:文件创建、文件修改、数据更新、交易记录。计算机并不会直接使用我们日常看到的“年月日 时分秒”来存储时间,而是通常将时间转换为一组数字进行记录。在Linux中,时间戳通常指Unix时间戳(Unix Timestamp),它表示从:格林威治时间1970年1月1日0时0分0秒开始,到当前时间经过的总秒数。这样,无论系统处于哪个国家、哪个时区,都可以通过统一的数字表示同一个时间,方便计算机进行存储、比较和处理。需要注意的是:格林威治时间:1970年1月1日0时对应中国东八区时间:1970年1月1日上午8时,此时Unix时间戳为:0,例如,在编写这篇文章时,对应的Unix时间戳为:1785122564。
通过时间戳,计算机可以更加准确地记录和处理文件时间信息。后续在学习touch指令以及文件属性时,会进一步接触时间戳的具体应用。
五、cd命令与Linux路径管理
5.1 cd命令——切换工作目录
- 指令名称:cd,全称Change Directory
- 使用频率:★★★★★
- 指令作用:切换当前工作目录。
- 指令操作:cd + 空格 + 路径
输入目标路径后按回车,即可切换到指定目录。
-bash-4.2# pwd /root -bash-4.2# ls mulu01 test01 test.c -bash-4.2# cd mulu01 -bash-4.2# pwd /root/mulu015.2 Linux路径体系
在Linux 中,如果想访问一个文件,首先需要找到它所在的位置。而找到文件的方法,就是通过路径(Path)进行定位。路径描述了文件或目录在Linux文件系统中的具体位置。
5.2.1 绝对路径与相对路径
Linux 中的路径主要分为两种:
- 绝对路径
- 相对路径
5.2.1.1 绝对路径详解
绝对路径指的是:从Linux文件系统的根目录/开始,一层一层向下查找,最终得到的完整路径。例如:/root/mulu01/test01,其中/表示根目录,后面的目录依次表示文件所在的位置。
绝对路径具有唯一性,无论当前处于哪个目录,都可以通过完整路径找到目标文件。在Linux系统配置文件中,绝对路径使用较多。
-bash-4.2# cd /root/mulu01/mulu03/mulu01/mulu07 -bash-4.2# pwd /root/mulu01/mulu03/mulu01/mulu07 -bash-4.2#5.2.1.2 相对路径详解
相对路径指的是:从当前所在目录开始查找目标文件所得到的路径。它不需要从根目录/开始书写,而是以当前工作目录作为参考。例如当前所在目录:/root,其中存在目录/root/mulu01,那么mulu01就是一个相对路径。相对路径书写更加简洁,在日常Linux操作中使用较多。
补充知识:一个点和两个点,在前面ls指令的讲解中,我们提到过Linux目录中默认存在两个特殊的隐藏目录:
. ...表示当前工作目录;..表示上一级工作目录。
-bash-4.2# cd ./../../../nihao01 -bash-4.2# pwd /root/mulu01/nihao01除了通过路径切换目录之外,cd还提供了一些与路径相关的常用用法。
- cd - 可以快速切换回上一次所在的工作目录。
- cd ~ 表示当前用户的家目录。
- cd .. 表示当前目录的上一级目录。
-bash-4.2# cd ~ -bash-4.2# pwd /root -bash-4.2# cd - /root/mulu01/nihao01 -bash-4.2# pwd /root/mulu01/nihao01 -bash-4.2# cd .. -bash-4.2# pwd /root/mulu01 -bash-4.2#绝对路径和相对路径的区别,本质上在于搜索起点不同。
- 绝对路径:以根目录/作为搜索起点,按照完整路径进行查找;
- 相对路径:以当前工作目录作为搜索起点,根据当前位置进行查找。
简单来说:是否以/开头,是判断绝对路径和相对路径最直接的方法。
5.3 Linux路径书写规则与常见问题
在 Linux 中书写路径时,最容易混淆的就是路径分隔符。很多人总是记不住Linux和Windows中路径的区别,可以用一句话帮助记忆:窗户(Windows)向上看,企鹅(Linux)往下看。
- Windows 使用反斜杠:\ 例如:C:\Users\Admin
- Linux 使用正斜杠:/ 例如:/root/mulu01
那么 Linux中的目录路径到底应该怎么写?
以:/root/mulu01/mulu03/mulu01/mulu07这个路径为例:
- 开头的/:必须存在(除非当前已经位于根目录下),需要注意开头的/不是路径分隔符,而是表示根目录。
- 中间的/:必须存在。它表示目录之间的层级关系。
- 结尾的/:建议不要添加
也就是:开头/表示根目录,中间/表示层级分隔,结尾/通常省略。
六、rm删除命令、rmdir命令与Linux通配符
程序员中有一个经典的玩笑:rm -rf / 从“删库”到“跑路”。虽然这只是一个玩笑,但也侧面说明了 Linux 中 rm 指令的危险性。rm指令功能非常强大,可以删除文件和目录,但同时也具有一定风险。而rmdir指令由于只能删除空目录,相对来说更加安全。
6.1 rm命令——Linux中的危险删除操作
- 指令名称:rm,全称remove
- 使用频率:★★★★★
- 指令作用:删除可以被删除的文件或目录。
- 指令操作:rm + 选项 + 要删除的文件/目录
使用rm时需要特别注意:删除操作通常是不可逆的,因此在执行删除命令前一定要确认目标文件或目录是否正确。
常用指令组合表:
实践尝试:
-bash-4.2# ls test01 -bash-4.2# rm -i test01 rm: remove regular empty file 'test01'? -bash-4.2# y-bash-4.2# rm -f test01 -bash-4.2# rm test02 rm: cannot remove 'test02': No such file or directory 如果删除一个不存在的文件会提示文件不存在。 -bash-4.2# rm -f test02 不会报错。-bash-4.2# rm mulu01 rm: cannot remove 'mulu01': Is a directory -bash-4.2# rm -r mulu01-bash-4.2# rm -ri mulu01 rm: descend into directory 'mulu01'? 确认后: rm: remove regular empty file 'mulu01/test01'?-bash-4.2# rm -rf mulu016.2 rmdir命令——安全删除空目录
- 指令名称:rmdir,全称remove directory
- 使用频率:★★★★★
- 指令作用:删除空目录。
- 指令操作:rmdir + 要删除的空目录
rmdir与 rm都可以用于删除目录,但是两者存在明显区别:
- rm可以删除文件,也可以通过-r选项递归删除目录及目录中的内容;
- rmdir只能删除空目录。
-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 files6.3 通配符“*”——Linux中的模糊匹配操作
在Linux中,有时候我们并不知道文件的完整名称,或者想一次性匹配多个符合条件的文件,这时可以使用通配符(Wildcard)进行模糊匹配。其中,最常用的就是:*,含义是:匹配任意长度(包括零个字符)的任意字符。
- ls *.txt:星号替掉一切,只要尾巴是.txt,通通揪出来。
- ls mulu*:凡是叫mulu开头的东西——mulu01、mulu_backup、哪怕就叫mulu自己——一个都跑不掉。
- ls *test*:不管test藏在开头、中间还是结尾,只要文件名里沾了这四个字母,全给你翻出来。
- rm -rf * —— 死神指令:删光当前目录下所有非隐藏内容。没有确认,没有后悔药。手起刀落之前,先看清楚自己在哪个目录。
七、Linux终端使用技巧
除了通过指令完成各种操作之外,Linux终端中还有一些非常实用的操作技巧,可以提高日常使用效率。Windows系统也支持通过终端进行指令操作,例如:PowerShell,而Linux系统则更加依赖终端和指令操作,这也是Linux作为服务器操作系统的重要特点之一。下面介绍几个Linux使用过程中非常常用的小技巧。
7.1 使用上下键快速查找历史命令
在Linux终端中,只需要将光标停留在命令行位置,然后按键盘上的:↑ ↓方向键,就可以快速调出之前执行过的历史命令。
7.2 终端全屏与退出全屏
如果使用Xshell连接Linux,可以通过快捷键:Alt + Enter实现终端全屏和退出全屏。
7.3 Linux终端复制与粘贴操作
在Linux终端中,复制粘贴快捷键和Windows中有所不同。通常情况下
复制:Ctrl + Shift + C
粘贴:Ctrl + Shift + V
而不是Ctrl + C / Ctrl + V,原因是Linux 终端中Ctrl + C通常代表终止当前正在运行的程序。
7.4 Linux终端光标操作技巧
刚开始接触Linux的同学,可能会觉得终端中的光标使用起来不太习惯。这里分享一个简单技巧:看左不看右。Linux终端输入命令时,真正需要关注的是光标左侧已经输入的内容,而不是右侧的空白区域。只要保持光标位于正确的位置,通过:方向键移动、Backspace 删除、Delete 删除就可以完成命令修改。