Linux --- 常见的基本指令

一. 前言

本篇博客使用的 Linux 操作系统是 centos ,用来学习Linux 的 Linux 系统的内核版本和系统架构信息版本如下所示:



上图的主要结构为:主版本号-次版本号 修正次数,3.10.0 是操作系统的主版本号;当我们在维护一段Linux源代码时,它的修正次数足够多时,次版本号就会递增一次;当次版本号修正足够多时,主版本号就会递增一次。

当次版本号为偶数时,代表着这是稳定版本;当次版本号为奇数时,代表着这是测试版本。

二. 常见的基本指令

1. whoami 指令

whoami 指令的功能是查看自己的云服务器账号名



输出 root 表示当前是以 超级管理员(root用户) 身份操作系统。若想要为自己的云服务器添加用户,可以使用 adduser 指令,语法格式为:adduser 要添加的用户名;为新添加的云服务器用户设置密码,可以使用 passwd 指令,语法格式为:passwd 用户名,之后便是输入密码,需要注意的是输入的密码并不会在显示器上显示出来,如下所示:



以 wangwu 的身份来访问云服务器,如下图所示:



若想禁止某些用户使用自己的云服务器,可以删除该用户,使用的指令为 userdel ,语法格式为:userdel -r 要删除的云服务器用户,如下所示:



当 wangwu 想访问该云服务器的时,输入访问密码,会出现如下图所示的弹窗:



2. pwd 指令

pwd 指令的功能:查看用户当前所在的目录/路径,如下图所示:



上图所示的 / 称之为 Linux 中的根目录。在 Linux 系统中,标识文件唯一性是通过路径标识的,无论是 windows 还是 Linux 系统,我们登陆成功后都会默认处在一个默认的路径下。

3. mkdir 和 touch 指令

mkdir 指令的语法格式为:mkdir 文件夹/目录,功能为:在当前路径下新建一个空文件夹/目录。怎么知道这个文件夹/目录新建好了呢?可以使用 ls 指令查看当前路径下所存在的文件和文件夹,如下图所示:



若我们想要新建文件,可以使用 touch 指令,该指令的语法格式为:touch 文件名,功能为:在当前路径下新建一个文件,如下所示:



4. ls 指令

ls 指令的功能是:查看当前目录下所存在的文件或文件夹。接下来讲解文件相关的基本知识 --- 若在 Windows 系统中新建一个空文件,这个文件会不会占据磁盘空间?不管是什么文件,文件的属性信息是不是数据?是的,既然是数据,那也就意味着需要空间来存储,所以一个空文件会占据磁盘空间。特别需要注意的是,文件不等于文件内容,文件 = 文件的内容 + 文件的属性(元数据),空文件代表文件的内容为空,文件的属性信息需要空间来存储,所以今后对文件的操作无非是两种操作 —— 对文件的内容操作,对文件的属性操作。那么使用 ls 指令显示的是文件的属性还是内容呢?显示的是文件的文件名,文件名是文件属性,所以 ls 显示的是文件的属性。只不过 ls 默认只显示文件的文件名这一个属性,若想要显示文件的其它属性,使用 ls -l 指令查看一个文件更详细的属性,如下图所示:



0 表示文件的大小 后面的表示文件的创建时间.

除了 -l 选项之外,还有 -l -a,也可以写成 -la 或者 -al ,ls -l -a 指令的功能为:列出当前目录下的所有文件包括以 . 开头的隐含文件,如下图所示:



上图所示的 . 和 .. 表示的两个隐藏文件,文件名为 . 和 .. 。Linux系统中可以存在隐藏文件,隐藏文件往往以 . 开头;Windows系统中也存在隐藏文件,隐藏文件的图标颜色会浅一些。接下来验证确实存在隐藏文件:创建一个以 . 开头的文件,观察 ls 指令是否能将这个新建的文件显示出来,如下图所示:



在Linux系统当中,文件的类型不由文件的后缀决定。文件的类型由属性的第一个字符决定;文件属性中,以 d 开头的表示该文件为目录文件;以 – 开头的表示该文件为普通文件(普通文件:二进制可执行程序,图片,视频音频等,动静态库)。若想要详细的查看指定文件对应的文件类型,可以输入 file 文件名 指令,如下图所示:



虽然在Linux操作系统当中,文件的类型不由文件的后缀决定,但是不代表Linux不用后缀,文件带上后缀,可读性更强,同时操作系统中的一些工具关心文件的后缀。

5. cd 指令

在了解 cd 指令之前,需要知道 Linux 系统中路径的相关知识 --- 在Linux系统中,磁盘上的文件和目录被组成⼀棵目录树,每个节点都是目录或文件,其中普通文件⼀定是目录树的叶子节点,目录可能是叶子(空目录),也可能是路径上的节点。以前曾提到标识文件唯一性是通过路径标识的,那么为什么路径具有唯一性?因为在多叉树的结构下,任何一个结点只有的一个父结点,所以从根目录到目标文件定位时,路径就是唯一的。路径有两种:一种是绝对路径,一种是相对路径 --- 绝对路径:从根目录开始定位目标文件的路径方式;相对路径:从当前所处的目录为参照点,定位目标文件的路径方式,一旦当前所处的目录发生变化,相对路径可能会失效。那么对于一个确定/具体的相对路径,相对路径能不能保持唯一性?答案是相对路径能唯一标识。绝对路径和相对路径都能对指定的文件进行唯一的路径标识,绝对路径可以理解为是一个确定位置的相对路径,绝对路径是特殊的相对路径在实践中,对于配置文件,要配置各种路径,建议使用绝对路径;否则,常规操作统一使用相对路径Linux系统中,一个 . 通常表示当前路径,两个 . 通常表示上级路径。

cd 指令的语法:cd 目录名,功能为:改变工作目录,将当前工作目录改变到指定的目录下。如下图所示:



cd . 指令的功能为:显示当前路径,其中 . 的意义是执行当前路径下的指定程序,如下图所示:



cd .. 指令的作用为:回退到上级路径,如下图所示:



cd 绝对路径 该指令的功能为:切换到目标路径下,如下图所示:



cd ~ 指令的功能为:进入到当前用户的家目录,命令中的 ~ 表示用户的家目录,如下所示:



在centos系统中,root账号的家目录为 /root;普通用户账号的家目录为 /home/xxx。

cd - 指令的功能为:回退到上次所处的路径,如下图所示:



6. tree 指令

tree 路径 的功能为:查看指定路径下文件的树状结构,如下所示:



若发现 tree 指令使用不了,那可能是应为用户的操作系统没有安装 tree 命令,tree 命令系统是默认没有安装的,安装指令为:centos:yum install -y tree;ubantu:apt install -y tree

7. stat 指令

stat 文件名 指令的功能为:显示指定文件的更多信息,比 ls 指令显示的信息还要多,包括三种时间,简称acm时间,这三种时间分别为访问(access),修改(modify),改变(change),如下图所示:



touch 文件名(已经在当前目录下存在)指令的功能为:更改指定文件的时间,如下图所示:



mkdir -p 要创建的一串目录 指令的功能为:在当前路径下创建一串目录,如下图所示:



8. rm 指令

rm 普通文件的文件名 指令的功能为:删除指定的普通文件对于管理员,删除文件时会弹出选项,让你选择是否删除,Y/y表示yes,N/n表示no;普通用户不会),如下图所示:



若觉得每次删除文件时都需要自己同意有些麻烦,可以使用 rm -f 普通文件的文件名 指令,该指令的功能为:强制删除指定普通文件(不会弹出选项,让你选择是否删除)。需要注意的是 Linux 中没有回收站,删除的文件不能还原

以上是删除普通文件的指令,删除文件夹也有对应的指令。rm -r 文件夹的文件名 指令的功能为:删除指定的文件夹(这里的 r 是递归单词的首字母 --- recursion),与使用 rm 普通文件的文件名 指令相同,对于管理员,删除文件时会弹出选项,让你选择是否删除,Y/y表示yes,N/n表示no;普通用户不会,如下图所示:



一个一个同意也太麻烦了吧,有一次性删除指定文件夹的指令吗?rm -rf 文件夹的文件名 指令,该指令的功能为:强制删除指定的文件夹,如下图所示:



知道 rm -rf 指令可以强制删除指定的文件后,有人可能会想可不可以删除根目录呢?当然可以,rm -rf / --- 强制删除根目录(对于云服务器删除根目录之后,可以重装系统)。

总结:删除普通文件时,使用 rm命令;删除文件夹,使用 rm -rf命令

9. man 指令

Linux的命令有很多参数,我们不可能全记住,可以通过查看联机手册获取帮助。man 指令就是用来帮助用户查找开发手册的,语法为:man 选项,若想要查找 tree 指令和 ls 指令,可以使用 man tree 和 man ls 指令,查找结果如下图所示:



按Q键可以退出开发手册。在Linux中 printf 也是一个指令,使用 man printf 指令可以查找到 printf 指令的相关信息,如下图所示:



printf 指令可以格式化显示我们对应的数据,如下图所示:



倘若不清楚 man 指令本身,可以查找开发手册,输入 man man 指令,输入之后可以发现如下图所示的内容:



图中的1~9数字是开发手册的章节编号,输入 man 指令默认从第一章开始查找,第一章找不到会依次往下去查找,输入 man printf 指令时,实际上是就是从第一章找到的 ;输入 man 3 printf 指令时,就从第三章查找,查找的部分内容如下图所示:



最多用到的是第1,2,3章,可能会用到第7章。若有些指令查找不到,可能是系统未安装 man ,安装指令为:Centos版本:yum install -y man-pages;Ubantu版本:apt install -y man-pages

10. 其它指令

之前曾提到 Linux 系统下一切皆文件,那么理解一下以下两种操作:向显示器打印 和 从键盘读取数据,基于 Linux 系统下一切皆文件来理解,(1)向显示器打印 -- 既然Linux系统下一切皆文件,那么显示器可以理解为是文件,所以向显示器打印可以理解为向显示器文件进行写入;(2)从键盘读取数据 既然Linux系统下一切皆文件,那么键盘可以理解为键盘文件,所以从键盘读取数据可以理解为从键盘文件中读取数据。

1. echo 指令

echo 待打印的数据 指令的功能为:默认往显示器上打印对应的数据,如下图所示:



echo 指令与 printf 指令差不多,只不过 printf 指令支持格式化输出,按照用户的需求去输出对应的数据。既然 echo 指令是默认往显示器上打印数据,那么是否可以控制它往其他文件中打印数据呢?当然可以,对应指令为 echo 数据 > 文件名,功能为:将对应的数据打印至对应的文件中。需要注意的是:若在当前路径下文件不存在,那么会在此路径下新建该文件,并将对应的数据写入至该文件中,如下图所示:



如何知道数据写入至该文件中了呢?使用 cat 指令即可,cat 文件名 功能为:显示指定文件中的内容,如下图所示:



对于 echo 数据 > 文件 指令中的 > ,这里的 > 称之为 输出重定向

若再次往该文件中写入数据,会发生什么呢?如下图所示:



由上图可以发现,文件中的内容发生了改变,由此我们可以知道,若文件中存在数据,再次往该文件中写入数据时,先将原数据清空,再写入新数据清空数据后光标会回到起始位置。若只想将文件中的内容清空,该怎么做呢? 输入 >文件名 指令即可。如下图所示:



若想要保留文件中的原数据,向文件中新增内容,该怎么办呢?可以使用  echo 数据 >> 文件名 指令,该指令的功能为:往指定文件中新增数据(会自动将新增数据写入下一行),如下图所示:



echo 数据 >> 文件名 中的 >> 称之为 追加重定向,需要注意的是没有 >>>

当我们通过 Xshell 软件登陆我们的云服务器时,我们就会得到终端。既然 Linux 系统下一切皆文件,那么终端也是一个文件,终端文件一般放在 /dev/pts 路径下,如下图所示:



上图只是我们打开了一个终端,若再打开一个终端,结果如下图所示:



若将打开的终端关闭一个,结果如下图所示:



接下来我们再次打开两个终端文件,结果如下图所示:



我们在当前终端中输入 echo “hello Linux” 指令时,是将hello Linux写入至当前终端上,若想将数据写入到其它终端上,可以借助输出重定向,假如想要将数据写入0,1,2号终端,指令可以这样写 --- echo 数据 > /dev/pts/*(数字),分别向 0,1,2号终端写入数据,结果如下图所示:



由此可以知道,不仅可以向普通文件输出重定向,也可以向终端文件输出重定向。

2. cat 指令

cat 文件名 指令的功能为:显示指定文件的内容。如下图所示:



cat -n 普通文件名 指令,功能为:显示查看文件的行数,如下图所示:



cat 指令主要用来查看小文件的内容,倘若查看的内容过长,就会导致刷屏。

cat 指令是正序显示指定文件的内容,与之相对应的是 tac 指令,功能为:逆序显示目标文件中的内容,如下图所示:



在使用 cat 指令时,后面的选项是用户自己输入,倘若不输入,直接按下回车键,那么输入光标会停在该行的开头,等待用户的输入;之后,用户输入什么,就在显示器上输出什么,如下图所示:



这是从键盘文件上读取数据,那么可以从其它文件中获取数据吗?可以,cat < 文件名 指令,该指令的功能为:从指定文件中读取数据,将其输出到显示器上,如下图所示:



cat < 文件名中的 < 称之为 输入重定向

3. cp 指令

cp 指令的语法为:cp [ 选项 ] 源文件或目录 目标文件或目录,功能为:将源头文件中的数据拷贝到目标文件中(可以带路径)

目标文件不存在,则会在当前路径下新建该文件,并将数据拷贝到该文件中,如下图所示:



不指定目标文件,指定一条路径,则会在该路径下,新建与源头文件同名的文件,并将源头文件中的数据拷贝到该文件中,如下图所示:



之前拷贝的是一个普通文件,若拷贝一个目录呢?并且目录不为空呢?则需要指令 --- cp -rf 源目录 目标目录(可以带路径),功能为:(强制将源目录中的内容拷贝到目标目录中)若目标目录不存在,则会新建目标目录,再将源目录中的内容拷贝到目标目录中。如下图所示:



4. mv 指令

mv 指令是 move 的缩写,可以用来移动文件或者将文件改名;语法为:mv [ 选项 ] 源文件或目录 目标文件或目录,功能有多种:

1. 若目标文件/目录为路径,则将源文件/目录,移动到该路径下,如下图所示:



需要注意的是移动目录时,不需要 -rf,这与 cp 和 rm 不一样。

2. 若目标文件/目录为具体的文件/目录的名称,则将源文件/目录的名称重命名为目标文件/目录的名称,如下图所示:



3. 若目标文件为路径+目录名,且该目录并不存在,则将源目录移动至该路径下,并将源目录的文件名重命名,如下图所示:



5. less head tail 指令

在介绍 less head tail 指令之前,先向 test.txt 文件中写入 0~1000 的数字,使用指令:cnt=0; while [ $cnt -le 1000 ]; do echo "hello ${cnt}"; let cnt++; done

1. less 指令

less 文件名 指令的功能为:查看文件内容时,不会加载整个文件;支持上下查看指定文件的内容(按上下键,或者回车键(下翻)),查看内容的同时也支持搜索关键字(搜索方式 -- /关键字),按n键会跳转到具有关键字的下一行。按Q键退出查看状态。

2. head 指令

head -参数 文件名 功能为:查看文件的前参数行的内容,如下图所示:



若不写参数,默认查看文件的前10行的内容,如下图所示:



3. tail 指令

tail -参数 文件名 功能为:查看对应文件的后参数行的内容,如下图所示:



若不写参数,默认查看文件的后10行的内容,如下图所示:



6. 管道 | 

知道如和查看文件的开头和结尾的内容了,那么文件的中间内容怎么查看呢?假设文件中共有1001行内容,想要查看第500行到第510行的内容,应该怎么做?可以先将文件中的0~510行的内容拷贝到另一个文件中,再读取第500行到510行的内容,具体的操作如下图所示:



倘若要查看的内容很多呢?岂不是每次查看这些内容时,都需要一个临时文件,然后再tail一下?实际上不需要这么麻烦,借助管道 | 即可,具体操作如下图所示:



这样一来根本不需要临时文件,就可以查看第500行到510行的内容了。我们将这种可以集联指令的 | 称之为管道管道顾名思义有一个或多个出入口构成,专门用来传送资源的,在计算机中,数据就是资源,之前曾提到在Linux中一切皆为文件,那么head -511 test.txt | tail -11 指令可以理解为将head-511 test.txt 获取的数据写入至管道文件中,然后tail -11 再从管道文件中获取数据根据 | 的功能,我们可以通过 | 集联各种指令来达到用户想要的效果(指令的执行是从左往右),单独的指令看起来功能不怎么行,但是多个指令的联合使用效果就很显著了。

11. 时间相关的指令

1. date 指令

date 指令的功能为:显示Linux系统的当前时间,如下图所示:



用户可以设定想要显示的格式,格式设定为⼀个加号后接数个标记,如:%H:小时(00..23),%M:分钟(00..59),%S:秒(00..61),%X:相当于%H:%M:%S,%d:日(01..31),%m:月份(01..12),%Y:完整年份(0000..9999),%F:相当于%Y-%m-%d(- 换成 / 也可以)。这些都并不常用,最常用的是 date +%s 指令,功能为:获取当前计算机的时间戳,如下图所示:



上图所显示的一串数字 1755176746 就是时间戳,什么是时间戳呢?Unix时间戳是从1970年1月1日的午夜(UTC/GMT的午夜)(0时0分0秒)开始所经过的秒数,不考虑闰秒;时间戳的本质就是一个计数器,每隔1秒就增加1。

若已经获取到了时间戳,如何将其转化为用户所能理解的年月日的形式呢?将时间戳转化为时间的指令为:date 想要显示的时间格式 -d @时间戳,如下图所示:



若将时间戳输入为0,会产生什么结果呢?如下图所示:



咦?时间戳不是从1970年的1月1日0时0分0秒开始计时吗?这里的时为什么是8时?因为这里显示的北京时间,北京位于东八区,这里的8时是时差。

2. cal 指令

cal 指令的功能为:显示公历(阳历)日历,语法格式为: cal 参数;主要用到的参数有:-3,-j,-y,下面分别使用这三个参数。

-3 功能为:显示系统前⼀个月,当前月,下⼀个月的月历;若不添加 -3,单独的 cal 指令显示的结果是当前月份的天数,如下图所示:



-j 功能为:显示在当年中的第几天(⼀年日期按天算,从1月1号算起,默认显示当前月在⼀年中的天数),使用结果如下图所示:



-y 功能为:显示当前年份的日历,使用结果如下图所示:



若想要查看某一年的日历,在 cal 指令的后面加上要查看的年份即可。

12. 查找相关的指令

1. find 指令

find 指令的语法为:find 路径 选项,功能为:用于在文件树中查找文件,并作出相应的处理(可能访问磁盘)。常用选项为:-name ,功能为:按照文件名查找文件,如下图所示:



此外还可以像下图所示使用:



查找的结果都是以 .txt 为后缀的文件,其中*称之为通配符使用通配符时需要用单引号或者双引号将其引用。

find 指令不仅可以用来查文件,也可以查指令。接下来查一下 ls 指令,如下图所示:



一开始查 ls 指令时,会发现很慢,这是因为 find 是在目录树中查找的。观察查看的结果,发现 ls位于 /usr/bin/ls 路径下,那么目录中是否存在该路径呢?



由上图可以发现,目录中确实存在着这么一条路径;这样是否可以说明我们所学习的指令实际上就是文件,所以使用 ls 指令时,也可以写成路径的形式 /usr/bin/ls ,如下图所示:



总结:大部分指令的本质是Linux系统中固定目录下的可执行文件

为什么说是大部分指令,而不是所有指令呢?就目前学习的指令中,cd 指令就不是可执行文件,如下图所示:



2. which 指令

find 指令是广泛查找文件/指令,除此之外 Linux 系统还提供了专门用来查找指令的指令 --- which 指令,该指令语法格式为:which 指令,功能为:搜索系统指定的命令。功能结果如下图所示:



使用 which 指令来查找对应的指令会发现比 find 快许多,因为 which 指令默认在 /usr/bin/ 路径下查找,所以 which 指令相当与 find /usr/bin -name xxx(usr 是 user 用户的意思,bin 是 binary 二进制的意思)。那么之后是否可以将用户自己编写的可执行文件拷贝到 /usr/bin/ 路径下,再在桌面上生成一个快捷方式?可以,但是不建议,因为这样会污染系统的命令池。之后访问自己编写的可执行文件时,在文件的前面加上 ./ 。

3. whereis 指令

除了 find 和 which 指令之外,还有 whereis 指令,它是介于 find 指令和 which 之间,它的功能为:用于找到程序的源、⼆进制文件或手册。功能结果如下图所示:



Whereis 查找的路径范围比 which 广,但是 whereis 指令用得非常少。

4. alias 指令

在使用 which 指令查找 ls 指令时,结果为:



上图中的 /usr/bin/ls 我们见过了,但是 alias ls=’ls –color=auto’ 是什么?alias ls=’ls -color=auto’ 中的 alias 是别名的意思,alias 指令的语法格式为:alias 别名='指令'Linux系统允许给一个指令或者一个指令带若干个选项进行取别名操作。下面实际的使用 alias 指令,给 ls -a -l 取别名为 AY,之后使用 AY ,就能得到与 ls -a -l 指令一样的功能,如下图所示:



接下来对比 ls 和 /usr/bin/ls 之间的区别,如下图所示:



由上图可以发现使用 ls 查看的结果,文件夹显示的彩色;而使用 /usr/bin/ls 查看的结果,文件夹不是彩色,这又是为什么?这是因为使用 ls 指令时,实际上使用的是 alias ls=’ls --color=auto’。



总结:在执行指令时,会优先搜索别名,不会再在/usr/bin/xx

别名设置好了,如何取消别名呢?将别名设置为空即可,如:alias AY=''。如下图所示:



对一条指令取别名之后,那么别名存在哪呢?是以怎样的形式存在呢?是否存在于 /usr/bin/ 路径下呢?接下来进行验证,对 ls –color=auto 起别名为 AY ,验证结果如下图所示:



由上图可以发现 AY 的功能与 ls 的一样,但是 AY 却不存在于 /usr/bin/ 路径下,接下来我们再打开一个终端,使用 AY,会发现如下图所示的结果:



找不到AY指令,这是为什么呢?因为用户取的别名是内存级的,不存在与真实的文件之中,重新登陆之后就没有了。介绍了 alias 指令,那么在实际过程中如何使用它呢?在实际使用中,不要随意的对指令取别名,特殊的情况下使用alias指令。

5. grep 指令

grep 指令的语法格式为:grep [ 选项 ] 搜寻字符串 文件,功能为:功能:用来执行文本处理的命令,它这个工具称之为行文本过滤工具根据提供的关键字,把一个大文本当中包含该关键词的内容,以行数打印出来。接下来来演示其功能,将 test.txt 文件中包含‘55’关键字的内容打印出来,结果如下图所示:



grep 指令也可以和其它的指令搭配使用,如打印10行到100行之间包含5的内容,结果如下图所示:



grep 指令常用的选项有:-v,-n,-i;接下来逐一介绍:

-v 选项其功能为:反向选择,亦即显示出没有'搜寻字符串'内容的那一行,如不打印10行到20行之间包含5的内容,结果如下图所示:



-n 选项其功能为:顺便输出行号,如下图所示:



grep 默认对大小写敏感,若想要忽略大小写的不同,可以使用选项 -i 选项。

grep 指令的世家应用场景:查看日志信息,进程。ps axj 指令的功能为:查看系统的所有进程,部分查看结果如下图所示:



打印进程中包含 ‘ssh’ 关键字的信息,如下图所示:



13. top 指令

top 指令的功能为:查看操作系统当前所执行的任务(与windows系统中的任务管理器一样),部分查看信息如下图所示:



按 Q 键退出查看。top 指令的相关选项:-d: 刷新的时间间隔-n: 刷新的次数,如:top -d 2 -n 4 的意思为每隔2秒刷新一次,总共刷新4次,如下图所示:



此外还有 top 指令的升级版指令 --- htop 指令,该指令系统中默认没有安装该指令,安装指令为:Centos版本:yum install htop    Ubuntu版本:apt install htop。部分查看信息如下图所示:



按 Q 键退出查看。

14. 打包和压缩指令

打包的意思为:把多个文件或文件夹收集到一起,变成一个单一的文件;目的:将许多零散的文件整合成一个单独的文件,便于管理和传输。压缩的意思为:把文件或文件夹的体积变小,以节省存储空间或便于传输;目的:通过特定的算法,减小文件的大小(体积),以节省硬盘空间或减少网络传输时间。

1. zip 和 unzip 指令

zip 指令的语法为: zip 压缩文件.zip 目录或文件,功能为:将目录或文件压缩成zip格式;unzip 指令的语法为:unzip 压缩文件,功能为:将压缩包解压缩。zip 和 unzip 在系统上可能是默认没有安装的,安装指令为:Centos环境:yum install -y zip unzip   Ubuntu 环境:apt install -y zip unzip。接下来讲解打包非空目录,将一个非空目录压缩成 zip 格式,打包压缩单独的文件的方法与非空目录并无二异,如下图所示:



将非空文件 test 打包成 test.zip ,这样在根目录下就生成了 test.zip 压缩包,将该压缩包移动到 8_15 文件夹中,接下来对该压缩包解压缩,解压缩结果如下图所示:



发现解压缩之后只有 test 文件夹,其中的 a,b,c,d 文件夹呢?我们的目的是将 test 文件夹中的内容压缩为一个压缩包,现在由结果来看,简单的 zip test.zip test 操作并没有达到我们的目的,为什么不能呢?因为目录是一个树状结构,要想打包压缩,需要递归式的打包压缩,所以要想将整个test 文件打包压缩需要这样写 zip -r test.zip test,即打包压缩非空文件的指令为 zip -r 压缩文件.zip 非空文件。接下来再次压缩 test 文件,如下图所示:



将 test.zip 文件夹移动到 8_15 文件夹中,下面来解压缩该压缩包,观察是否达到了我们的目的:



若想将多个文件压缩成一个压缩包,指令需要这样写 zip -r 压缩文件.zip 多个文件,将 exp.txt hello.txt linux.txt 压缩为 linux.zip 压缩文件,如下图所示:



我们解压缩 test.zip 时,默认解压到当前的路径下,若想要解压缩到指定文件中,指令需要这样写 unzip 压缩文件 -d 指定的目录/路径,将 linux.zip 解压缩到 8_15 文件夹的 test 文件夹中,如下图所示:



2. rz 和 sz 指令

这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件,系统是默认没有安装这两个指令的,安装指令为:Centos环境:yum install -y lrzsz  Ubuntu环境:apt install -y lrzsz。现在将 windows 机器中的图片通过 Xshell 传输到 Linux 机器上,输入 rz 指令,再回车,就会弹出窗口,要你选择传输的文件,如下图所示:



传输完毕后,会弹出如下图所示的窗口:



之后可以再根目录下查看到我们上传的文件,如下图所示:



若传输的文件中包含文字信息,需要用 rz -E 指令。

除此之外,还可以将要传输的文件拖拽到 XShell 上,Linux 会自动调用 rz -E 指令,如下图所示:



rz 指令介绍完毕后,接下来介绍 sz 指令,先创建一个 hello.c 的文件,再输入 sz hello.c 指令,会弹出一个窗口,如下图所示:



sz 指令是将 Linux 机器上的文件传输到 windows 机器上,弹出的窗口需要你选择将 hello.c 文件传输到哪一路径下,比如我选择传输到桌面上,传输完毕的结果为:



现在在我的桌面上就存在着 hello.c 文件,如下图所示:



在介绍 zip 和 unzip 指令时,生成了 linux.zip 压缩包,现在将该压缩包传输到 windows 机器的桌面上,如下图所示:



之后桌面上就存在着 linux.zip 压缩包,如下图所示:



解压缩该压缩包,其中的内容如下图所示:



3. tar 指令

tar 指令尤其重要,在linux系统下,大部分压缩包的文件形式是 .tar.gz 简写为 tgz 。tar 指令的语法格式为: tar 参数 文件或目录,常用参数及其功能:-c建立⼀个压缩文件(create的意思);-z打包的同时并且压缩-ff 后面紧跟的就是文档名,不能再加参数-v显示压缩过程-x:解压缩文件,以上的参数平常是一起使用的,最常见的组合为:czfxzf,语法格式分别为:tar czf 压缩文件.tgz 文件tar xzf 压缩包。下面将 8_15 文件夹中的 test 文件压缩为 test.tgz压缩包,如下图所示:



使用 tar 指令生成压缩包时,并没有像使用 zip 指令时显示压缩过程,若想要显示压缩过程,选项为 cvzf ,语法格式为:tar cvzf 压缩文件.tgz 文件,如下图所示:



接下来使用 xzf 参数对 test.tgz 压缩包进行解压,如下图所示:



若想要将压缩包解压到指定文件中,需要指令 tar xzf 压缩包 -C 指定文件,如下图所示:



总结:压缩:tar czf target.tgz xxx  解压缩:tar xzf target.tgz

4. 其它

如何确定自己的机器是 Ubuntu 还是 Centos?Centos环境---输入指令:cat /etc/redhat-release;Ubuntu环境---输入指令:cat /etc/lsb*,我的机器输入指令之后的结果如下图所示:



还有其它的指令,如 cat /etc/os-release,这个方法更简洁,我的机器显示的结果如下图所示:



若想要在两台 Linux 机器上进行传输工作,需要用到指令:scp src.tgz 用户名@目标云服务器(ip地址):目标路径,之后会显示 password ,需要你输入目标云服务器特点账号(用户名)的密码,并且密码不回显。

15. bc 指令

bc指令的功能为:计算(浮点数也可以),如下图所示:



输入 quit 或者 ctrl + c 终止该指令。

16. 系统信息查询指令

如果有人问:如何查看你的 Linux 机器的体系结构?这本质上问的是如何查看你的 Linux 机器的CPU 架构,再终端输入 uname -m 指令即可。

1. uname -a 指令

uname -a 指令的功能为:打印当前操作系统的主要信息,我的操作系统的查看结果如下图所示:



Linux含义:表示您使用的操作系统内核是Linux区别于其他系统(如 Windows 的 NT 内核或 macOS 的 Darwin 内核);hcss-exs-3ea8 是这台服务器在网络中的主机名(我的云服务器是华为云的);3.10.0:这是主内核版本号;-1160.119.1:这是发行版(此处是 Red Hat/CentOS)为内核添加的定制和补丁版本号 ;el7 是centos_release7的简写,所以el7就表示该机器为centos环境;.x86_64:表示这是一个为 64 位 x86 架构处理器编译的内核;Tue Jun 4 14:43:51 UTC 2024:这是编译构建该内核的确切时间(2024年6月4日,星期二,UTC时间14:43:51)。

Windows操作系统也可以查看其基本信息,鼠标选择此电脑,点击鼠标右键,点击属性,即可查看。

2. uname -r 指令

uname -r 指令的功能为:显示当前机器的内核版本和架构,如下图所示:



X86 是32位机器,x86_64 是64位机器,有些人的 X86_64 可能会显示为 X64 。

3. 其它指令

查看 cpu 的信息 --- 输入指令:cat /proc/cpuinfo,显示的部分信息如下图所示:



查看内存的信息 --- 输入指令:cat /proc/meminfo,显示的部分信息如下图所示:



lscpu 指令的功能为:显示CPU(中央处理器)架构信息,显示的部分信息如下图所示:



17. shutdown 指令

云服务器的关机指令:shutdown 选项,常见选项: -h --- 将系统的服务停掉后,立即关机;-r ---在将系统的服务停掉之后就重新启动;-t sec --- -t 后面加秒数,即过几秒后关机的意思。但是建议云服务器不要关机,云服务器禁止关机;倘若云服务器被你关机了,可以去相关的云服务器平台上查找,会有网页端的开机操作。

三. 结言

除了常用的指令之外,还有常用的快捷方式,接下来逐一介绍:

ctrl + R 作用为:搜索历史命令,按上下键进行上下搜索;若搜素到了目标指令,按Tab键就会在机器上显示出来,按下回车键,就会执行该指令。

! 在 Shell 中称作历史扩展或事件指示器,它的主要功能为:快速调用、修改或重复之前执行过的命令。主要使用 !指令的开头字母,其功能为:执行以特定字符串开头的最近一条命令,如下图所示:



以及 !! ,其功能为:执行上一条命令,如下图所示:



前文介绍的指令只是我们学习 Linux 系统中的一部分,随着后续的学习,掌握的指令也会越来越多,指令只要多用,用着用着就熟悉了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/96557.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/96557.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序 -开发邮箱注册验证功能

一、前端验证&#xff1a;正则表达式与插件结合正则表达式设计 使用通用邮箱格式校验正则&#xff0c;并允许中文域名&#xff08;如.中国&#xff09;&#xff1a; const emailReg /^[a-zA-Z0-9._%-][a-zA-Z0-9-](?:\.[a-zA-Z0-9-])*\.[a-zA-Z]{2,}(?:\.[a-zA-Z]{2})?$/i;…

docker 部署 code-server

docker 部署 code-servercode-serverError response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headersdocker 配置正确步骤 阿里云源permission de…

网络编程专题:从源码解析网络编程常用方法(基于6.16.3内核)

前言 本文是因为作者在研究下面这个代码时发现的问题&#xff1a; int main() {// 1. 创建 IPv4 专用地址结构体 sockaddr_instruct sockaddr_in ipv4_addr;memset(&ipv4_addr, 0, sizeof(ipv4_addr)); // 初始化清零// 2. 填充 IPv4 专属信息ipv4_addr.sin_family AF_IN…

2025年数字公共治理专业重点学什么内容?(详细指南)

数字公共治理作为一个新兴的跨学科领域&#xff0c;近年来受到越来越多高校和学生的关注。这个专业融合了多个学科的知识体系&#xff0c;旨在培养掌握现代治理理念和技术应用能力的复合型人才。对于在校大学生而言&#xff0c;了解这一专业的学习内容和发展方向&#xff0c;有…

一招解决 win 下 终端打印中文乱码问题

适合所有终端 cmd powershell git bash&#xff0c; 原理&#xff1a;修改电脑的区域设置&#xff0c;勾选使用 UTF-8 1.电脑搜索 区域&#xff0c; 打开区域设置2. 打开相关设置3. 点击更改 日期、时间或数字格式4. 选则管理-点击更改系统区域设置&#xff0c;在弹出框中勾选 …

Elasticsearch面试精讲 Day 13:索引生命周期管理ILM

【Elasticsearch面试精讲 Day 13】索引生命周期管理ILM 在“Elasticsearch面试精讲”系列的第13天&#xff0c;我们将深入探讨 索引生命周期管理&#xff08;Index Lifecycle Management, ILM&#xff09; 这一核心运维机制。作为大规模日志、监控和时序数据场景下的必备功能&…

Python快速入门专业版(二十八):函数参数进阶:默认参数与可变参数(*args/**kwargs)

目录引一、默认参数&#xff1a;给函数参数设置“默认值”1. 基本语法与使用示例示例1&#xff1a;带默认参数的乘法函数2. 默认参数的核心规则&#xff1a;必须放在非默认参数之后示例2&#xff1a;默认参数位置错误&#xff08;报错&#xff09;3. 默认参数的“可变对象陷阱”…

FreeRTOS 知识点

一、配置过程二、基本知识点2.1 抢占优先级和响应优先级在 FreeRTOS 中&#xff0c;任务的调度方式主要有 ​​抢占式&#xff08;Preemptive&#xff09;​​ 和 ​​协作式&#xff08;Cooperative&#xff09;​​ 两种模式&#xff0c;它们的核心区别在于 ​​任务如何释放…

SQL注入漏洞手动测试详细过程

这是一次详细的、基于真实手动测试思维的SQL注入漏洞测试过程记录。我们将以一个假设的Web应用程序为例&#xff0c;进行逐步探测和利用。测试目标假设我们正在测试一个名为 example.com 的电商网站&#xff0c;其有一个查看商品详情的页面&#xff0c;URL 为&#xff1a; http…

机器人控制器开发(通讯——ros话题转为websocket)

1 为什么要实现ROS话题转WebSocket 主要有如下5个优点&#xff1a;跨平台通信需求 WebSocket作为一种标准的Web通信协议&#xff0c;允许任何支持WebSocket的客户端&#xff08;网页、移动应用、其他系统&#xff09;与ROS机器人进行实时通信&#xff0c;打破了ROS传统通信方式…

SQL-字符串函数、数值函数、日期函数

字符串函数1. 字符串拼接concat-- 拼接字符串hello和mysql&#xff0c;结果为hellomysql -- 格式&#xff1a;concat(str1, str2, ...)&#xff1a;拼接多个字符串 select concat(hello, mysql);注意事项&#xff1a;若任一参数为null&#xff0c;结果为null&#xff08;如conc…

JAVA高级工程师--Redis持久化详细版

一、Redis DBRedis 数据库的数量在单机和集群模式下有根本性的区别。1. 单机模式 (Standalone)在单机模式下&#xff0c;Redis 默认提供 16 个逻辑数据库&#xff0c;索引编号为 0 到 15。选择数据库&#xff1a; 使用 SELECT <index> 命令进行切换。例如&#xff0c;SE…

hexo文章

文章目录Tag的使用勾选框图片的组合站内文章引用注意&#xff1a;1、关于中括号的问题目录总结 Tag的使用 在 markdown 中加入如下的代码来使用便签&#xff1a; {% note success %} 文字 或者 markdown 均可 {% endnote %}或者使用 HTML 形式&#xff1a; <p class&quo…

技术面:Spring (bean的生命周期、创建方式、注入方式、作用域)

Spring Bean的生命周期是什么样的&#xff1f; 在Spring容器里一个Bean的从创建到销毁一般都是经历了以下几个阶段&#xff1a; 定义阶段&#xff08;Bean元信息配置&#xff09;>实例化阶段&#xff08;创建Bean对象&#xff09;>初始化阶段&#xff08;执行初始化逻辑&…

SpringSecurity的应用

官方文档 一、核心能力 1.1 身份认证 (Authentication) - “你是谁&#xff1f;” 多种认证方式&#xff1a;支持几乎所有主流认证方案&#xff0c;如表单登录&#xff08;Username/Password&#xff09;、HTTP Basic、HTTP Digest、OAuth 2.0、OIDC (OpenID Connect)、SAML …

跨境云手机与传统手机的不同之处

传统手机主要满足个人日常生活中的通讯、娱乐、办公等基础需求&#xff0c;比如用于日常打电话联系亲朋好友&#xff0c;闲暇时刷短视频、玩本地安装的游戏&#xff0c;或者简单处理一些文档、邮件等办公事务。跨境云手机主要是侧重于跨境业务场景&#xff0c;对于从事跨境电商…

MemGPT: Towards LLMs as Operating Systems

1 MemGPT: Towards LLMs as Operating Systems 论文地址&#xff1a;MemGPT: Towards LLMs as Operating Systems 代码地址&#xff1a;https://github.com/letta-ai/letta 1.1 MemGPT MemGPT&#xff08;MemoryGPT&#xff09;借鉴传统操作系统的分层内存管理思想&#xff08;…

MICAPS:气象信息综合分析与处理系统概述

1.概述 说明:Meteorological Information Comprehensive Analysis and Process System 中文意思:气象信息综合分析处理系统。它是中国气象局开发的一套气象数据分析、处理和可视化系统,用于气象资料的收集、整理、分析和发布。 2.MICAPS 的用途 说明: 数据收集:接收来自…

MySQL-day2_02

MySQL-day2&#xff08;四&#xff09;排序&#xff08;五&#xff09;聚合函数一、count 总记录数二、max 最大值三、min 最小值四、sum 求和五、avg 平均值&#xff08;六&#xff09;数据分组一、分组二、分组后的数据筛选&#xff08;七&#xff09;数据分页显示一、获取部…

HarmonyOS应用开发:深入ArkUI声明式开发范式与最佳实践

HarmonyOS应用开发&#xff1a;深入ArkUI声明式开发范式与最佳实践 引言 随着HarmonyOS 4.0的发布及API 12的推出&#xff0c;华为的分布式操作系统进入了全新的发展阶段。ArkUI作为HarmonyOS应用开发的核心框架&#xff0c;其声明式开发范式&#xff08;Declarative Paradigm&…