基本指令
1、初识
指令,是控制Linux操作系统的基本方法。
但是,我们只学习指令,可能会一头雾水。所以我们在学习指令的同时,也要学习Linux的一些基本知识,来帮助我们更好地使用指令。
2、ls指令
ls,意为list ,有罗列的意思。
ls的作用是:罗列当前路径下所有文件。

那么在这里,文件指的是什么?
2.1、对于文件的理解
文件并不等于文件的内容,文件是文件内容,和文件属性的结合。
(Linux中提及的)文件 == 文件的内容 + 文件的属性
其中,文件的属性,包括文件的名称、日期、类型、大小,等等,这些文件的属性数据 ,又叫作元信息。
和文件的内容数据一样,文件的属性数据,也有大小,也需要占据磁盘的空间。所以电脑就可以通过文件的属性数据,找到对应的文件。
我们学习文件的本质,就是两点:
学习对文件内容的操作
学习对文件属性的操作
所以,我们结合上面的图片,明白ls罗列的本质是:罗列文件的属性。
当然,我们只使用ls,只能看到文件名,使用ls -l可以看到更多属性:

我们在讲解ls作用的时候,提及了当前路径,那么,什么是路径?
2.2、路径
为什么系统要有路径?
我们要想访问一个文件,必须知道这个文件在哪;而路径是具有唯一性的,所以我们知道了文件所处的路径,就能顺着路径,访问文件。

比如,我们访问路径/root/project1,找到了project1目录下的part1文件夹。
路径具有唯一性。
当前路径:系统此时默认所处的环境。
2.3、隐藏文件
在Linux系统中,以.(英文句号)开头的文件,被称为隐藏文件。
我们做一件事:新建一个**.hello**文件,然后访问当前目录。

我们发现,我们找不到.hello文件。
这时,我们用一个指令ls -a:

.hello文件显示了。
所以指令ls -a的作用是:显示当前目录下的所有文件名,包括隐藏文件的文件名。
其实,诸如-l、-a,这些选项,可以组合使用,使指令的编写更灵活:

3、pwd指令
pwd,print working directory,意为打印当前目录的绝对路径 。

这里我们来对比一下windows系统和Linux系统中,路径分隔符的区别:


whidows: (反斜杠)
Linux: /(斜杠)
4、cd指令
cd,change directory,意为路径的切换 。

使用指令cd,可以使用绝对路径:

也可以使用相对路径:

相对路径的使用中,我们用到了我们在学习隐藏文件时出现的. 文件、. .文件。
. 文件:当前目录
. .文件:当前目录的上一级目录
所以cd ..的作用是返回上一级目录。
我们来不断进行cd ..、pwd操作:

当我们不断返回上一级目录时,我们发现,最后一直停在==/==上不动了。
我们把这个/叫做根目录。我们把从根目录开始的路径,叫做绝对路径。
这时我们补充了解Linux管理文件时使用的树状结构。
4.1、树状结构
Linux管理文件,使用的是树状结构。

树,有叶子节点 和路上节点。
叶子节点,一般是普通文件、空目录
路上节点,一定是一个目录
我们能够很自然的想到,Linux中的目录 ,很像windows中的文件夹。
我们知道,对于树,每一个既不是叶子节点也不是根目录的节点,其子节点可能有很多,然而其父节点只有一个。
所以在这种树状结构中,正向、逆向的路径都是唯一的,所以路径具有唯一性。
相对路径,通常用来进行命令行操作。
二进制可执行文件,从磁盘加载到内存中运行,前提是:先得找到这个可执行文件。
此时的可执行文件在当前目录,那么,我们就可以使用相对路径,快速定位文件的位置。
绝对路径,通常会在配置文件中使用。绝对路径,是一种特殊的相对路径。每一个相对路径都是唯一的,只不过相对路径有很多种。
绝对路径,是一种特殊的相对路径。所以下面两个划线指令,效果是相同的:
4.2、剩余指令,和家目录
cd指令中,还有cd /,这个指令是用来直接返回到根目录的 。

还有cd -这个指令是用来返回到上一个路径的 。
由于只能返回到最近一次操作之前的路径,所以我们不停使用cd -,就会导致循环:

还有一个指令cd ~,要想了解这个指令,我们先来了解家目录。
我们一开始进入Linux系统的时候,所处的目录,就是家目录:
对于windows系统,也有一个类似家目录的东西。
windows桌面显示的快捷方式、默认的下载位置,全部放在了C盘的"用户"文件夹下。
所以,指令cd ~的作用是:返回到家目录 。

补充一个指令:
whoami
这条指令,会打印当前用户的用户名。
5、touch指令
touch指令,可以用来创建普通文件。

补充一个命令:
stat。
这个命令,会展开更详细的属性。
这里有三个时间:
Access Time:内容被读取的最后时间。
Modify Time:内容被修改的最后时间。
Change Time:元数据被修改的最后时间。
touch用来创建普通文件,而mkdir用来创建目录。
6、指令mkdir
学习mkdir指令之前,我们先来补充一点知识------Linux的文件类型的讨论。
Linux系统区分文件类型,并不关心文件的后缀。
我们来论证这一点:
这里准备了一个源文件、一个可执行文件。
给这个可执行文件改名,再运行:
正常运行了,所以Linux不关心文件的后缀。
但是,Linux不关心,不代表其他东西不关心,比如gcc编译器。所以我们改了源文件的后缀,就无法编译:
话说回来,Linux区分文件的方法,是利用文件的属性。
首先一提,指令
ll,相当于指令ls -l。我们发现,第一列字符中,有d和**-**,其中:
d开头的是目录
-开头的是普通文件,可以是可执行文件、文本文件、动态库静态库等
说回mkdir。
要想创建一个目录,直接使用mkdir:

而要想创建一串目录,使用mkdir -p:

查看一串目录的生成,除了依次进入查看,还可以使用tree。
指令tree需要手动安装。
centOS版本下的安装指令:
yum install -y treeUbuntu版本下的安装指令:
apt install -y tree

7、rmdir&&rm
它们都是删除指令。
7.1、指令rmdir
rmdir,只能用来删除空目录。

这肯定是不方便的,所以我们看向rm。
7.2、指令rm
rm可以用来删除普通文件 。

rm删除不了有内容有分支的目录,因为在一个树形结构中,需要递归删除。
所以指令rm -r派上了用场。

如果是超级用户,那么使用rm -r指令时会在递归的每一步,进行询问。
但是指令rm -rf就不询问了,直接删除。
这里涉及到一个非常危险的问题。
Linux整体结构是一个多叉的树形结构。
如果我们直接删除根目录,也就是执行语句:
rm -rf /,整个操作系统就被删除了。所以我们使用
rm -rf语句,删除一些绝对路径下的目录,要格外小心。万一不小心执行了这条语句,建议直接全部删除,重新编写语句。要知道,即使执行了删除整个操作系统的语句,有些内容是不会被删除的,比如正在运行的内容。但是,已经被删除的地方,会造成潜在的漏洞。所以,不小心执行了这条语句,直接全部删除。
还有一个指令rm -i,使用了-i,就可以弹出询问:

询问对话中,y就是yes,n就是no。
所以我们进行删除操作时,可以按照以下思路进行:
删除普通文件,用rm
删除目录,用rm -ri,必要时用rm -rf








