0.首先介绍一下接下来会用到的核心指令:(后面还会回忆的)
clear:清屏
pwd:打印当前用户所在路径
cd:进入某个文件夹中
mkdir:创建一个文件夹在当前文件夹或指定文件夹
ll:打印当前文件夹下文件的具体信息
ls:打印当前文件夹下文件的名字
ls -l:打印当前文件夹下文件的具体信息(ls -l本质和ll是一个东西后面会将)
whoami:显示用户名
下面开始讲解:
1.即使只是建立一个空文件,该文件也会占据磁盘空间,因为文件有属性
mkdir:创建一个新的空文件
ll:展现文件的属性(ctrl+shift+c可以复制linux中的代码)
ubuntu@VM-0-2-ubuntu:~/lesson2$ mkdir test
ubuntu@VM-0-2-ubuntu:~/lesson2$ ll
total 12
drwxrwxr-x 3 ubuntu ubuntu 4096 Mar 21 14:01 ./
drwxr-x--- 10 ubuntu ubuntu 4096 Mar 21 14:01 ../
drwxrwxr-x 2 ubuntu ubuntu 4096 Mar 21 14:01 test/
如上图:test是空文件,但依旧有4096的bit大小。
原因:文件的属性也是数据,要进磁盘空间的,因此文件空间大小=内容+属性。
学习文件的本质就是对文件内容操作或对文件属性操作。
目录的别名也叫文件夹,以后我们都叫文件夹为目录,文本文件为文件。(非特殊情况都这样)
2.ll中文件的属性的第一个英文是该文件的后缀,如上图的test就是d后缀。(目录的后缀)
touch:创建一个文本文件
ubuntu@VM-0-2-ubuntu:~/lesson2$ touch test.vpp
ubuntu@VM-0-2-ubuntu:~/lesson2$ ll
total 12
drwxrwxr-x 3 ubuntu ubuntu 4096 Mar 21 14:26 ./
drwxr-x--- 10 ubuntu ubuntu 4096 Mar 21 14:01 ../
drwxrwxr-x 2 ubuntu ubuntu 4096 Mar 21 14:01 test/
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 14:25 test.cpp
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 14:26 test.vpp
如上图:-开头的文件就是文本文件。
3.隐藏文件
linux中以.开头的就叫隐藏文件,-a就用于显示隐藏文件。(-叫作命令行选项,相当于打补丁)
ubuntu@VM-0-2-ubuntu:~/lesson2$ ls
test test.cpp test.vpp
ubuntu@VM-0-2-ubuntu:~/lesson2$ ls -a//加了-a后.galgame才显示出来
. .. .galgame test test.cpp test.vpp
补充:命令行选项的顺序不会影响结果
ubuntu@VM-0-2-ubuntu:~/lesson2$ ls -l -a
total 12
drwxrwxr-x 3 ubuntu ubuntu 4096 Mar 21 14:33 .
drwxr-x--- 10 ubuntu ubuntu 4096 Mar 21 14:01 ..
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 14:33 .galgame
drwxrwxr-x 2 ubuntu ubuntu 4096 Mar 21 14:01 test
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 14:25 test.cpp
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 14:26 test.vpp
ubuntu@VM-0-2-ubuntu:~/lesson2$ ls -a -l
total 12
drwxrwxr-x 3 ubuntu ubuntu 4096 Mar 21 14:33 .
drwxr-x--- 10 ubuntu ubuntu 4096 Mar 21 14:01 ..
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 14:33 .galgame
drwxrwxr-x 2 ubuntu ubuntu 4096 Mar 21 14:01 test
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 14:25 test.cpp
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 14:26 test.vpp
ubuntu@VM-0-2-ubuntu:~/lesson2$ ls -al
total 12
drwxrwxr-x 3 ubuntu ubuntu 4096 Mar 21 14:33 .
drwxr-x--- 10 ubuntu ubuntu 4096 Mar 21 14:01 ..
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 14:33 .galgame
drwxrwxr-x 2 ubuntu ubuntu 4096 Mar 21 14:01 test
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 14:25 test.cpp
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 14:26 test.vpp
ubuntu@VM-0-2-ubuntu:~/lesson2$ ls -la
total 12
drwxrwxr-x 3 ubuntu ubuntu 4096 Mar 21 14:33 .
drwxr-x--- 10 ubuntu ubuntu 4096 Mar 21 14:01 ..
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 14:33 .galgame
drwxrwxr-x 2 ubuntu ubuntu 4096 Mar 21 14:01 test
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 14:25 test.cpp
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 14:26 test.vpp
4.路径的本质
pwd:显示当前用户当前所在的目录的路径
windows:将\作为路径分割符
linux:将/作为路径分隔符
ubuntu@VM-0-2-ubuntu:~/lesson2$ pwd
/home/ubuntu/lesson2
因此路径的本质是一连串目录组成的,但最后的文件可能是目录,也可能是普通文件。
5.隐藏文件中的.和..文件本质
cd:将用户移动到指定目录中去。
.实际上就是当前目录。
..实际上是包含当前目录的目录。(也就当前目录的父亲)
ubuntu@VM-0-2-ubuntu:~/lesson2$ pwd
/home/ubuntu/lesson2
ubuntu@VM-0-2-ubuntu:~/lesson2$ cd .
//可以发现移动到.文件时位置没有发生改变
ubuntu@VM-0-2-ubuntu:~/lesson2$ pwd
/home/ubuntu/lesson2
ubuntu@VM-0-2-ubuntu:~/lesson2$ cd ..
//移动到..文件时位置就去到上一个文件中了
ubuntu@VM-0-2-ubuntu:~$ pwd
/home/ubuntu
移动到/处时在移动也不会再回退了
ubuntu@VM-0-2-ubuntu:/home$ pwd
/home
ubuntu@VM-0-2-ubuntu:/home$ cd ..
ubuntu@VM-0-2-ubuntu:/$ pwd
/
ubuntu@VM-0-2-ubuntu:/$ cd ..
ubuntu@VM-0-2-ubuntu:/$ pwd
/
最开始的/有着特殊的名字:根目录。
ls -d:-d是查找当前目录的信息
ubuntu@VM-0-2-ubuntu:~/lesson2$ ls -d
.
//此处也很好的说明了.就是当前目录
ubuntu@VM-0-2-ubuntu:~/lesson2$ ls -dl
drwxrwxr-x 3 ubuntu ubuntu 4096 Mar 21 14:33 .
ls 后面也可以加指定的路径
ubuntu@VM-0-2-ubuntu:~/lesson2$ ls -lda /home/ubuntu/lesson2
//使用-d来找该目录信息
drwxrwxr-x 3 ubuntu ubuntu 4096 Mar 21 14:33 /home/ubuntu/lesson2
ubuntu@VM-0-2-ubuntu:~/lesson2$ ls -la /home/ubuntu/lesson2
//去掉-d来查找该目录内部的信息
total 12
drwxrwxr-x 3 ubuntu ubuntu 4096 Mar 21 14:33 .
drwxr-x--- 10 ubuntu ubuntu 4096 Mar 21 14:01 ..
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 14:33 .galgame
drwxrwxr-x 2 ubuntu ubuntu 4096 Mar 21 14:01 test
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 14:25 test.cpp
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 14:26 test.vpp
6.linux的文件结构
linux的文件结构是一颗从根目录/开始的多叉树。
1.叶子节点一定是普通文件或空目录
2.非叶子节点一定是一个非空目录
绝对路径:从根目录开始找一个文件的路径的过程,且具有唯一性。
相对路径:从一个叶子结点的位置找到另一个文件的过程,叶子节点不唯一,但确定叶子节点后的路径有唯一性。
因此pwd也算是从/到当前文件的绝对路径。
同为找C,从/找到C叫绝对路径。从test找到C叫相对路径。
ubuntu@VM-0-2-ubuntu:~/lesson2$ pwd
/home/ubuntu/lesson2
ubuntu@VM-0-2-ubuntu:~/lesson2$ cd ../lesson
//相对路径
ubuntu@VM-0-2-ubuntu:/home$ pwd
/home
ubuntu@VM-0-2-ubuntu:/home$ cd /home/ubuntu/lesson2
ubuntu@VM-0-2-ubuntu:~/lesson2$ pwd
/home/ubuntu/lesson2
//绝对路径
对路径有认识后,对ls进行再一次的分析:
ubuntu@VM-0-2-ubuntu:~/lesson2$ ls -l .galgame
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 14:33 .galgame
//.说明后才能找到隐藏文件
ubuntu@VM-0-2-ubuntu:~/lesson2$ ls test.cpp
test.cpp
//普通文件只会打印他的名字
ubuntu@VM-0-2-ubuntu:~/lesson2$ ls /home/ubuntu
fg gh hh.txt lesson lesson2 test.txt text
//目录就打印该目录下的文件
//同时我们可以使用绝对路径来查找文件
ubuntu@VM-0-2-ubuntu:~/lesson2$ ls -l test
total 0
//这里是隐藏了开始路径,这种情况下,linux是默认将路径开始设为当前目录了。
ubuntu@VM-0-2-ubuntu:~/lesson2$ ls -l ../lesson
total 8
drwxrwxr-x 3 ubuntu ubuntu 4096 Mar 20 19:28 mkdir1
drwxrwxr-x 3 ubuntu ubuntu 4096 Mar 20 19:28 mkdir2
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 19 14:06 test.cpp
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 19 14:05 test.jpp
//这里就是显示的相对路径调用了,以上一个目录为起点。
总结:绝对路径常用于配置文件时使用。
相对路径常用于日常使用。
一个目录中的.隐藏文件就是用于表示该目录的位置的。
..的隐藏文件适用于找该目录的父亲目录的。
任何目录,即使是空目录,系统也会为该目录生成.和..的隐藏文件。
补充:C/D等盘的本质都是文件夹,此电脑才是真正的根目录。
7.windows桌面的本质
普通用户的家目录是/home/用户名这里的目录。
~ 到当前用户的家目录去。(任何一个用户在刚开始登录系统时,默认都是在家目录下的)
ubuntu@VM-0-2-ubuntu:~$ pwd
/home/ubuntu
ubuntu@VM-0-2-ubuntu:~$ ls
fg gh hh.txt lesson lesson2 test.txt text
ubuntu@VM-0-2-ubuntu:~$ ls ~
fg gh hh.txt lesson lesson2 test.txt text
//~的目录于home下的目录一样
windows桌面的本质:
windows和linux的本质没有不同,windows的用户中于用户名相同的文件就是windows下的家目录。
加载桌面的本质就是将桌面这个文件夹里面的内容用图标的形式展现出来。每一个用户都用自己的桌面文件夹,因此不同用户的桌面文件夹不同(在同一台电脑上)。

学习命令行的意义:帮助我们理解电脑的本质,接近真相。
cd - 也可以回到当前目录的上一个目录。
ubuntu@VM-0-2-ubuntu:~$ cd -
/home/ubuntu/lesson2
ubuntu@VM-0-2-ubuntu:~/lesson2$ cd -
/home/ubuntu
8.touch的使用
1.用于创建一个新的普通文件
ubuntu@VM-0-2-ubuntu:~/lesson2$ ll
total 12
drwxrwxr-x 3 ubuntu ubuntu 4096 Mar 21 15:26 ./
drwxr-x--- 10 ubuntu ubuntu 4096 Mar 21 14:01 ../
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 14:33 .galgame
drwxrwxr-x 2 ubuntu ubuntu 4096 Mar 21 14:01 test/
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 15:26 test.bpp
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 14:25 test.cpp
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 14:26 test.vpp
ubuntu@VM-0-2-ubuntu:~/lesson2$ touch gal.love
ubuntu@VM-0-2-ubuntu:~/lesson2$ ll
total 12
drwxrwxr-x 3 ubuntu ubuntu 4096 Mar 21 16:04 ./
drwxr-x--- 10 ubuntu ubuntu 4096 Mar 21 14:01 ../
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 14:33 .galgame
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 16:04 gal.love//
drwxrwxr-x 2 ubuntu ubuntu 4096 Mar 21 14:01 test/
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 15:26 test.bpp
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 14:25 test.cpp
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 14:26 test.vpp
2.更新普通文件的时间
ubuntu@VM-0-2-ubuntu:~/lesson2$ ll gal.love
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 16:04 gal.love
ubuntu@VM-0-2-ubuntu:~/lesson2$ touch gal.love
ubuntu@VM-0-2-ubuntu:~/lesson2$ ll gal.love
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 21 16:06 gal.love
//时间不同了
stat展现一个文件的所有时间属性
ubuntu@VM-0-2-ubuntu:~/lesson2$ stat gal.love
File: gal.love
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 253,2 Inode: 524351 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ ubuntu) Gid: ( 1001/ ubuntu)
Access: 2026-03-21 16:06:55.228439694 +0800
Modify: 2026-03-21 16:06:55.228439694 +0800
Change: 2026-03-21 16:06:55.228439694 +0800
Birth: 2026-03-21 16:04:31.254926264 +0800
Access 文件最近被访问的时间
Modify 文件内容被修改的最近时间
change 只要文件属性改了就更新时间
mkdir -p 创建一串目录(tree 打印目录里面的所有文件且以树的形式)
ubuntu@VM-0-2-ubuntu:~/lesson2$ mkdir -p gal1/gal2/gal3/gal4
ubuntu@VM-0-2-ubuntu:~/lesson2$ tree
.
├── a
│ └── b
│ └── c
│ └── d
│ └── e
├── gal1
│ └── gal2
│ └── gal3
│ └── gal4
├── gal.love
├── test
├── test.bpp
├── test.cpp
└── test.vpp
ubuntu安装tree:apt install -y tree。
9.命令的本质
which查找一个文件所在的路径
ubuntu@VM-0-2-ubuntu:~$ which ls
/usr/bin/ls
这里很好的说明了命令的本质就是文件,调用命令的本质就是调用相应的文件,因此调用相应的文件路径也是可以调用相应指令的。
ubuntu@VM-0-2-ubuntu:~$ /usr/bin/ls -l
total 20
drwxrwxr-x 2 ubuntu ubuntu 4096 Mar 19 18:32 fg
drwxrwxr-x 3 ubuntu ubuntu 4096 Mar 19 19:05 gh
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 19 17:10 hh.txt
drwxrwxr-x 4 ubuntu ubuntu 4096 Mar 20 19:33 lesson
drwxrwxr-x 5 ubuntu ubuntu 4096 Mar 21 16:13 lesson2
-rw-rw-r-- 1 ubuntu ubuntu 0 Mar 20 15:32 test.txt
drwxrwxr-x 2 ubuntu ubuntu 4096 Mar 19 18:27 text
ubuntu@VM-0-2-ubuntu:~$
有了:命令==可执行文件==平时的c/c++程序。
自设计的文件一般要显式写路径才能调用,想要想系统文件那样直接调用需要将自设计文件拷贝一份到/usr/bin/路径下才能直接调用,这里也能说明程序命令的本质只是调用文件中的代码而已。
alias 给一个命令起别名
ubuntu@VM-0-2-ubuntu:~$ alias galgame=pwd
ubuntu@VM-0-2-ubuntu:~$ galgame
/home/ubuntu
用户起的别名是临时的,关了Xshell就没了。
nano是linux中的临时记事本
ubuntu@VM-0-2-ubuntu:~/lesson2$ nano test.cpp
ubuntu@VM-0-2-ubuntu:~/lesson2$
ctrl + c可以强行停止代码运行。
总结:命令的本质是可执行文件
ll就是ls -l的别名(我的linux which下看不见)
ctrl + C中止代码运行