1 运行级别
-
各种运行级别介绍
级别 级别说明 0 关机 1 单用户状态,一般用户找回(重置)root系统管理员密码 2 多用户状态但无网络服务 3 多用户状态且有网络服务,但无图像界面 4 系统未使用保留给用户 5 基于级别3,用图像界面显示 6 重启 PS:常用的运行级别为3和5,Linux虚拟机中显示桌面界面的是级别5,Xshell客户端中使用的是级别3
-
关于运行级别的操作指令
指令 解释 init 【级别】 切换到指定运行级别,如 init 3
systemctl get-default 查看当前默认的运行级别 systemctl set-default 【运行级别名】 修改默认运行级别,重启后生效 -
修改默认运行级别
-
在/etc/inittab文件(运行级别的配置文件)中,存放了运行级别的相关信息,包括了运行级别对应的名称,如
multi-user.target
(多用户——级别3)、graphical.target
(图形化——级别5)
-
修改默认运行级别时,使用的就是/etc/inittab文件中的级别名,如
systemctl set-default multi-user.target
就是将级别3设置为默认运行级别
PS:centOS7以前,修改默认运行级别需要直接修改/etc/inittab配置文件
-
2 重置root密码
-
概述:如果系统管理员的密码丢失或忘记,可以通过单用户级别(级别1)来重置root密码
-
重置方法
① 在Linux开机时的初始界面输入e
,进入编辑模式(该操作要快一点,因为5秒后初始界面会消失)
② 在编辑模式中找到
Linux16
开头的行,在该行最后(最后以UTF8
结尾)输入init=/bin/sh
,然后在按下【ctrl+x】键,进入单用户级别
③ 进入单用户模式后,在光标闪烁处(sh-4.2#
后)输入mount -o remount.rw /
(注意/
前后空格),然后回车
④ 接着输入
passwd
,再回车,进行密码重置
⑤ 然后再次输入新密码,直到末尾出现passwd…为止
⑥ 接着再输入touch /.autorelabel
(注意/
前后空格),然后回车,最后输入exec /sbin/init
(注意/sbin
前也有空格),然后回车,此时系统会自动修改密码并重启,过程会有点久
3 帮助指令
-
man指令
-
基本语法:
man 命令或配置文件
-
作用:查看某一个命令(包括shell内置命令)或配置文件的帮助信息(使用手册)
-
测试——查看
ls
命令的使用
-
-
help指令
-
基本语法:
help shell内置命令
-
作用:查看shell内置命令的帮助信息(使用手册)
❓shell内置命令
-
shell内置命令是内嵌在shell中的,是shell的一部分,这些命令在shell程序设别并在shell内部完成执行,当系统加载shell时被加载并驻留在内存中
-
常见shell内置命令:
cd
、exit
、pwd
、help
等 -
优点:因为内置命令是构建在shell中,在系统启动时就会被加载到内存,此后就常驻在内存中,因此内置命令的执行速率会很高
-
-
测试——查看
cd
命令的使用
-
4 文件目录相关指令
4.1 操作目录
4.1.1 pwd指令
-
基本语法:
pwd
-
作用:查看当前所在目录的绝对路径
-
测试
4.1.2 ls指令
-
基本语法:
ls [选项] 子目录或文件(可选)
-
作用:查看当前目录下的子目录和文件名信息
-
注意事项:ls指令只能查看目录的子目录和文件基本信息,如名称、容量、创建者等,不能打开或查看文件的内容
-
测试
① 查看当前目录的信息 -->
ls
② 查看指定目录的信息 -->
ls /home
③ 查看指定文件的路径信息 -->
ls /home/key/HelloWord.java
-
拓展
① 查看每个文件更详细的信息 -->
ls -l
或者ll
② 查看所有文件,包括以隐藏文件 -->
ls -a
(Linux系统下,以.
开头的文件都是隐藏文件,如.cache
、.local
)
③
-a
和-l
的组合使用,查看所有文件的详细信息 -->ls -al
或ls -la
④ 以树状结果显示目录结构 -->
tree 指定目录
,如果tree指令无法使用,说明没有安装,需要先使用指令yum install tree
安装tree指令(只有root用户有安装权限)
4.1.3 cd指令
-
基本语法:
cd 目标目录的绝对路径或相对路径
-
作用:跳转到指定目录,与Windows的
cd
类似 -
绝对路径 🆚 相对路径
- 绝对路径:相对于根目录下的路径,简单来说,就是以
/
开头的路径,如/home/key
- 相对路径:相对于当前目录下的路径,即不是以
/
开头的路径,如../home
- 绝对路径:相对于根目录下的路径,简单来说,就是以
-
回退指令:cd指令还有两个特殊用法,用于目录的回退
命令 解释 cd …或cd …/ 回退到上一层目录 cd ~ 回退到家目录(主目录) -
测试
① 使用绝对路径 --> 当前目录为/home/key,跳转到/opt
② 使用相对路径 --> 当前目录为/home/key,跳转到/opt
③ 测试两个回退指令
4.1.4 mkdir指令
-
基本语法:
mkdir [选项] 要创建的目录名或路径
-
作用:在指定位置创建一个目录
PS:mkdir指令只能创建目录,不能创建文件,如果执行命令为
mkdir hello.txt
,则会创建出一个名称为【hello.txt】的目录(文件夹),而不是一个text文本文件 -
创建多级目录:如果需要创建一个多级目录(同时创建父子目录),则需要添加[选项]
-p
-
测试
① 在/home/key下创建一个son目录 -->
mkdir /home/key/son
② 在/home/key下创建一个多级目录 animal/dog -->
mkdir -p /home/key/animal/dog
(必须加上-p
)
PS:如果是在当前目录下创建一个新的子目录,也可以通过相对路径来创建,如在当前目录/home/key下创建一个子目录/boy,可以直接写子目录名,即
mkdir boy
,但推荐写绝对路径
4.1.5 rmdir指令
-
基本语法:
rmdir [选项] 要删除的目录
-
作用:移除/删除一个目录,rmdir中的r就是remove的意思
-
注意事项
- 删除一个空目录:直接执行rmdir指令,不添加选项,只能删除一个空目录,如果目录不为空,则删除失败
- 强制删除一个目录:在rmdir指令后添加[选项]
-rf
(f是force强制的意思),可以强制删除任意目录,即使目录不为空也会被删除,所以需要慎用⚠
-
测试:删除/home/key下的son目录
4.2 操作文件
4.2.1 touch指令
-
基本语法:
touch 文件名
-
作用:在当前目录创建一个空文件
-
注意:touch创建的是一个空文件,不能对文件进行编辑修改,而vim指令实现创建文件同时对文件进行编辑
-
测试
4.2.2 cat指令
-
基本语法:
cat [选项] 文件名
-
作用:查看(输出/打印)某一个文件内容
-
cat指令 🆚 vim指令
- cat指令只能查看文件内容(只读);vim指令不仅能查看文件,还能编辑文件内容(读写)
- cat指令默认打开文件内容后就回到原来的命令行状态,即只将文件内容打印出来,不能做任何处理;vim指令默认打开文件后进入一般模式
- 因为cat指令对文件的权限是只读,因此用cat查看文件比vim更安全
-
拓展
-
如果需要显示文件行号,则需添加[选项]
-n
-->cat -n 文件名
-
如果需要用cat指令打开文件后不立即退出,而是分屏显示,则可以使用管道命令,结合more指令浏览文件 -->
cat [选项] 文件名 | more
(相当于直接用more指令打开对应文件)❓管道命令 -->
第一个命令 | 第二个命令
- 管道符:
|
- 概述:通过管道符
|
连接两个命令得到的命令就是管道命令 - 含义:将第一个命令的输出结果通过管道(管道符)交给第二个命令处理
- 管道符:
-
-
测试:通过cat直接查看/home/key/hello.java文件,并显示行号
4.2.3 more指令
-
概述:more指令是一个基于vim编辑器的文本过滤器
-
基本语法:
more 要查看的文件名
-
作用:全屏幕分页显示文件的内容(分屏显示),查看文件时可以通过交互指令实现额外的操作,如按行查看、翻页、显示行数等
-
交互指令:more指令中内置了一些交互指令,即查看文件时的快捷键
快捷键 解释 空格(space) 向下翻动一页 回车(Enter) 向下翻动一行 q 离开文件,返回原命令行状态 ctrl+F 向下滚动一屏 ctrl+B 返回一屏 = 打印当前行号 :f 打印文件名和当前行号 -
注意事项
- more指令与cat指令类似,只能查看文件内容,不能修改文件内容,只是使用more指令查看会更方便
- 上面介绍的交互指令是基于查看文件的基础上,同样不能对文件内容做任何修改
- 如果查看的文件内容较少,不足一页,则使用more指令与cat指令打开的效果一样,都是一打开就退回到原命令行
-
测试
① 使用more指令打开/etc/profile
② 使用more指令打开/etc/profile后,打印文件名和当前行号 -->
:f
4.2.4 less指令
-
基本语法:
less 要查看的文件
-
作用:与more指令类似,都是分屏查看文件内容,但less指令比more更强大
-
特点(与more指令相比)
① 支持各种终端显示
② 可以根据关键词查询文件内容
③ 显示文件内容时,不是将整个文件都加载完成后才显示到控制台,而是根据显示的需要加载文件(按需加载),对于一些大文件的查看具有较高的效率 -
交互指令:与more指令类似,less中也内置了一些交互指令,即查看文件时的操作快捷键
快捷键 解释 空格(space) 向下翻动一页 下键(pageDown) 向下翻动一行 上键(pageUp) 向上翻动一行 /关键词 向下查找关键词,再敲n表示向下继续查找,敲N表示向上继续查找 ?关键词 向上查找关键词,再敲n表示向上继续查找,敲N表示向下继续查找 q 离开文件,返回原命令行状态
4.2.5 head指令
-
基本语法:
head 文件名
-
作用:查看(输出/打印)文件前面的部分内容,默认显示文件前面10行内容
-
注意事项
-
head还可以指定显示前面多少行内容,需要添加[选项]
-n
-->head -n 指定行数 文件名
-
如果要指定显示多少行,
-n
必须添加,它不是显示行数的作用
-
-
测试
① 直接使用head查看文件内容
② 查看文件前5行内容 -->
head -n 5 /etc/profile
4.2.6 tail指令
-
基本语法:
tail [选项] 文件名
-
作用:查看(输出/打印)文件后面的部分内容,默认显示文件倒数10行的内容
-
注意事项
- 与head指令类似,要指定显示多少行内容时也是需要添加[选项]
-n
-->tail -n 指定行数 文件名
- tail指令还有一个功能就是可以实时监控(追踪)文件内容的所有的更新,需要添加[选项]
-f
-->tail -f 文件名
- 与head指令类似,要指定显示多少行内容时也是需要添加[选项]
-
测试
① 直接使用tail查看文件内容
② 查看文件后面5行内容
4.2.7 grep指令
-
基本语法:
grep [选项] 过滤条件/关键词 文件名
-
作用:根据条件或关键词过滤查看文件,只将带有关键词的内容打印/输出到控制台
PS:grep指令过滤查看不是只打印文件中的关键词,而是打印带有关键词的一整行内容
-
拓展
- 打印行号:添加[选项]
-n
-->grep -n 关键词 文件名
- 忽略大小写:grep指令过滤查找时默认是大小写敏感,如果需要忽略大小写,则要添加[选项]
-i
-->grep -i 关键词 文件名
- 结合管道符
|
使用:与more指令类似,grep指令也可以结合管道符|
,与其他指令形成管道命令,即将第一个打印指令的执行结果交给grep处理,如 -->cat hello.txt | grep -n 关键词
(等价于grep -n 关键词 hello.txt
)
- 打印行号:添加[选项]
-
测试
① 使用grep指令过滤查看/home/key/hello.java,关键词为hello,并显示行号 -->
grep -n hello /home/key/hello.java
② 结合管道符
|
,先使用cat指令打印/home/key/hello.java,再交给grep指令处理,关键词为Key -->cat /home/key/hello.java | grep -n Key
PS:
grep
指令结合管道符|
,还适用其他过滤输出/查看/打印,如ll 指定目录 | grep 关键词
4.3 操作目录&文件
4.3.1 cp指令
-
基本语法:
cp [选项] 源文件或目录 目标位置
-
作用:将某个文件或目录拷贝到指定位置
-
注意事项
-
拷贝文件:拷贝文件到指定位置无需添加[选项] -->
cp 源文件 目标位置
-
拷贝整个目录:拷贝整个目录时需要递归拷贝目录下所有文件以及子目录中的所有文件,所以需要添加[选项]
-r
(r是recursion递归的意思) -->cp -r 要拷贝的目录 目标位置
-
二次拷贝:如果往目标位置中拷贝已有的文件或目录,即二次拷贝,旧的文件或目录会被覆盖
① 覆盖时询问每一个文件是否覆盖 -->cp [-r] 源文件或目录 目标位置
② 直接所有文件都进行覆盖,不再一一询问 -->\cp [-r] 源文件或目录 目标位置
(在cp前面加上一个\
)
-
-
测试
① 拷贝HelloWord.java到/home/key/animal
② 拷贝dog整个目录拷贝到/home/key/pet
4.3.2 rm指令
-
基本语法:
rm [选项] 要删除的文件或目录
-
作用:删除指定文件或目录
-
注意事项
- 删除文件:删除文件时无需添加[选项],直接文件名删除 -->
rm 要删除的文件名或文件所在路径
- 同时删除多个文件或目录:删除多个文件或目录时只需用空格隔开每一个文件即可 -->
rm 文件1 文件2
- 删除整个目录:删除目录时会递归删除目录下所有文件以及子目录所有文件,所以需要添加[选项]
-r
-->rm -r 要删除的目录
- 强制删除整个目录:如果只添加[选项]
-r
,则删除目录时会询问每一个文件是否删除,如果不想它询问,直接强制删除整个目录,则需再添加一个[选项]-f
-->rm -rf 要删除的目录
(两个[选项]一起使用时,可以合在一起)
- 删除文件:删除文件时无需添加[选项],直接文件名删除 -->
-
rm指令 🆚 rmdir指令
- rm指令可以删除文件和目录;rmdir指令只能删除目录
- rm指令不添加[选项]时只能删除文件;rmdir指令不添加[选项]时只能删除空的目录
- rm指令只需添加
-r
就能删除任意目录,包括不为空的目录;rmdir指令必须添加-rf
才能删除任意目录 - 两个删除指令都要慎用⚠
-
测试:删除/home/key下的hello.txt文件
4.3.3 mv指令
-
基本语法:
mv 源文件或目录 目标文件或目录
-
作用
- 对文件或目录重命名
- 剪切文件或目录
-
注意事项
- 文件或文件夹(目录)重命名:如果只是简单对文件或文件夹重命名,则在当前目录下,可以直接通过新旧名称来重命名 -->
mv 文件或目录旧名 文件或目录新名
- 文件或目录剪切:直接剪切文件或目录到目标位置 -->
mv 源文件或目录 目标位置
- 剪切同时重命名:在剪切文件或目录时可以同时对其进行重命名,只需在目标位置后加上新的名称即可 -->
mv 源文件或目录 目标位置/文件或目录的新名称
- 文件或文件夹(目录)重命名:如果只是简单对文件或文件夹重命名,则在当前目录下,可以直接通过新旧名称来重命名 -->
-
测试
① 将/home/key下的HelloWord.java改成Hello.java
② 将/home/key/animal/cat目录剪切到/home/key/pet下
③ 将/home/key/animal/HelloWord.java文件剪切到/home/key/pet,且重命名为hello.java
4.4 其他
4.4.1 echo指令
-
基本语法:
echo [选项] 输出内容
-
作用:输出/打印内容到控制台
-
测试
① 打印“hello,key”到控制台 -->
echo 'hello,key'
② 通过环境变量打印当前主机名(虚拟机名称) -->
echo $HOSTNAME
❓环境变量:Linux中的环境变量前面需要添加
$
,而且变量名一般为大写,除了上面打印的主机名,还有$PATH
4.4.2 > 指令
-
基本语法:
打印指令 > 文件名
-
作用:
>
指令又叫输出重定向,它能将打印指令的执行结果输出(打印/写)到指定的文件中 -
常见打印指令:打印指令即输出/查看指令,常见有
ls
、cat
、echo
等 -
注意事项
>
指令是直接将内容写到指定文件中,会把文件原来的内容覆盖,故也称覆盖写>
指令的作用简单来说,就是将原来打印到控制台的内容写到指定文件中,类似于控制台中的日志信息打印到某个文件中(日志文件)- 如果将内容写到一个不存在的文件中,Linux会自动创建出对应文件,
>>
指令也一样
-
测试
① 查看/home/key的目录信息,并把信息写到/home/key/test.txt文件中
② 使用echo指令直接将内容写到/home/key/test.txt文件中,将原来内容覆盖
4.4.3 >> 指令
-
基本语法:
打印指令 >> 文件名
-
作用:将打印指令的执行结果追加到指定文件中
-
>
🆚>>
:两个指令用法类似,写进文件时作用不同,>
指令的作用是覆盖写,>>
指令的作用是追加写 -
测试
① 查看/home/key/animal目录信息,并把信息追加到/home/key/test.txt文件中
② 使用cat指令,将/home/key/hello.java的内容追加到/home/key/test.txt文件中
4.4.4 ln指令
-
基本语法:
ln -s 源文件或目录(被连接的文件) 软链接名
-
作用:为某个文件或目录(源文件)创建一个软链接,通过该软链接就能快速访问到源文件
❓软链接
- 软链接也称为符号链接、链接文件,类似与Windows中的快捷方式(桌面的图标),通过软链接,用户可以在不同位置访问源文件
- 如果软链接被删除,源文件不受影响,但如果源文件被删除,则软链接就会失效
软链接 🆚 硬链接:参考博文 --> https://blog.csdn.net/stupid56862/article/details/90785420
-
注意事项
- 命令中的
-s
必须添加,如果不添加则会创建出硬链接,不是软链接 - 删除软链接的方式与删除文件的方式一样,都是使用rm指令 -->
rm 软链接名(或路径)
PS:因为直接使用
rm 文件名
命令,只能删除文件,不能删除目录,所以删除软链接时要把它作为文件来删除,所以软链接后面不能添加/
(即rm 软链接/
),加上/
会被当作是目录 - 命令中的
-
测试:在/home/key目录下创建一个软链接myDog,链接到/home/key/animal/dog
4.4.5 history指令
-
基本语法:
history
-
作用:查看已执行过的命令(历史命令)
-
注意事项
- 显示所有历史命令:直接一个history,不用添加其他参数 -->
history
- 显示最近的部分历史命令:在history后面添加数字可以查看指定数量的最近的历史命令 -->
history 数字
- 显示所有历史命令:直接一个history,不用添加其他参数 -->
-
拓展——执行历史命令:通过history指令查出历史命令时会显示每一条命令的序号(编号),在序号前加个
!
可以执行对应的历史命令 -->!序号
-
测试
① 查看所有历史命令
② 查看最近的5条历史命令
② 执行第210条历史命令
4.4.6 统计指令
-
统计指定目录下文件个数(不包括子目录里面的文件):
-
详细指令:
ls -l 指定目录 | grep "^-" | wc -l
-
测试:统计/home/tom目录下的文件个数 -->
ls -l /home/tom/ | grep "^-" | wc -l
-
-
统计指定目录下子目录个数(不包括子目录里面的子目录):
-
详细指令:
ls -l 指定目录 | grep "^d" | wc -l
-
测试:统计/home/tom目录下的子目录个数 -->
ls -l /home/tom/ | grep "^d" | wc -l
-
-
统计指定目录下所有文件个数,包括子目录里面的文件:
- 详细指令:
ls -lR 指定目录 | grep "^-" | wc -l
(多了个R,表示递归,下同) - 例子:统计/home/tom目录下的文件个数 -->
ls -l /home/tom/ | grep "^-" | wc -l
- 详细指令:
-
统计指定目录下所有子目录个数,包括子目录里面的子目录:
- 详细指令:
ls -lR 指定目录 | grep "^d" | wc -l
- 例子:统计/home/tom目录下的文件个数 -->
ls -l /home/tom/ | grep "^d" | wc -l
- 详细指令:
❓指令解释
ls -l 指定目录
:打印/查看指定目录的详细情况,-l
改成-lR
表示递归打印/查看grep "^-"
/grep "^d"
:使用grep
指令过滤查看,"^-"
/"^d"
是过滤的关键词(正则表达式),因为使用ls -l
指令打印的结果中,普通文件都是以-开头,目录都是以d开头,这里涉及权限管理的内容wc -l
:统计指令,统计前面过滤后查询结果的数量
5 时间类指令
5.1 date指令
5.1.1 显示日期
-
基本语法:
date
-
作用:显示系统当前时间/日期
-
拓展
- 显示系统当前年份 -->
date +%Y
- 显示系统当前月份 -->
date +%m
- 显示系统当前是哪一天 -->
date +%d
- 自定义格式显示当前年月时分秒 -->
date '+%Y-%m-%d %H:%M:%S'
PS:显示特定时间的命令中,年月日时分秒对应的字母分别为Y、m、d、H、M、S,不能用其他字母替代,而且命令中的
+
也必须添加 - 显示系统当前年份 -->
-
测试
① 直接显示系统当前时间
② 显示当前年份和月份
③ 自定义格式显示当前年月日时分秒
5.1.2 设置日期
- 基本语法:
date -s '字符串时间格式'
- 作用:修改/设置系统当前时间
- 注意事项
- 设置时间时[选项]
-s
必须添加 - 设置的时间要写成字符串形式,而且要按一定格式书写,如
2020-10-21 10:21:11
- 设置时间时[选项]
- 测试:设置当前时间为2021-12-1 12:27:00 -->
date -s '2021-12-1 12:27:00'
5.2 cal指令
-
基本语法:
cal [选项]
-
作用:显示日历,默认显示当月的日历
-
拓展——显示某一年的全部日历,只需在cal指令后面添加对应年份即可 -->
cal 年份
-
测试
① 显示当月的日历 -->
cal
② 显示2020年的全部日历 -->
cal 2020
6 搜索查找类
6.1 find指令
-
基本语法:
find 搜索范围 [选项]
-
作用:从指定目录(搜索范围)向下递归遍历所有子目录,找到满足条件的目标文件或目录,再输出/打印/显示在控制台
-
搜索条件[选项]
-
根据名称搜索:添加[选项]
-name
-->find 搜索范围 -name 目标文件或目录
-
根据用户名(拥有者)搜索:添加[选项]
-user
-->find 搜索范围 -user 用户名
-
根据文件或目录大小搜索:添加[选项]
-size
- 搜索指定大小的目标文件或目录 -->
find 搜索范围 -size 指定大小
- 搜索比指定大小更大的目标文件或目录:在指定大小前加上
+
-->find 搜索范围 -size +指定大小
- 搜索比指定大小更小的目标文件或目录:在指定大小前加上
-
-->find 搜索范围 -size -指定大小
PS:指定大小是指文件或目录的大小,单位由k、M、G等
- 搜索指定大小的目标文件或目录 -->
-
-
注意事项
- 如果不添加任何[选项],即不带搜索条件,则会把指定目录(搜索范围)下所有子目录及其文件都打印到控制台上
- 如果要查找的目标文件或目录不存在,则不会打印任何信息到控制台,也不会报错
-name
拓展
① 按文件后缀查找:使用通配符*
代替文件名,表示所有文件,如*.txt
② 模糊查询:直接根据关键词模糊查询,结果会打印出所有带有关键词的文件路径
③-name
后面添加的必须是文件名称或目录名称,不能是一个目录,即不能添加/
-
测试
① 在/home目录下查找hello.java文件 -->
find /home/ -name hello.java
② 在/home目录下查找后缀为.txt的文件 -->
find /home/ -name *.txt
③ 查找/home目录下大于800k的文件 -->
find /home/ -size +800k
6.2 locate指令
-
基本语法:
locate 目标文件或目录
-
作用:快速定位目标文件或目录的路径,并输出/打印到控制台
-
特点:locate指令会在事先创建的locate数据库中查找目标文件或目录的路径,而locate数据库中存储的就是系统中所有文件及其路径,因此locate不会遍历Linux中整个文件系统,查询的速度较快
-
locate指令 🆚 find指令
- locate指令直接访问locate数据库,不用遍历文件系统,搜索查询速度更快;find指令需要递归遍历子目录所有文件,搜索查询速度较慢
- locate指令可以直接根据文件名或目录名就能快速定位目标文件或目录的路径;find指令需要指定搜索范围
- locate指令可以搜索到权限更高的文件或目录;find指令不能搜索出权限更高的文件或目录,因为find指令需要遍历整个目录,权限不足时就不允许遍历
-
注意事项
- 因为locate指令是依靠事先创建好的数据库来查询的,因此在第一次指定locate指令前,必须先创建出对应的locate数据库,不然locate指令会失效
- 创建locate数据库命令 -->
updatedb
-
测试:使用locate指令搜索/home目录下的test.txt文件
6.3 which指令
-
基本语法:
which 指令名
-
作用:搜索某一个指令所在位置/目录/路径,并将搜索结果打印到控制台
-
测试
① 查看ls指令所在位置
② 查看halt指令所在位置
PS:由测试结果可以看出,ls在/usr/bin目录下,所有用户都能访问到,而halt指令在/usr/sbin目录下,只有系统管理员才能访问到
7 压缩和解压类
7.1 gzip & gunzip指令
-
基本语法
- 压缩:
gzip 源文件
- 解压:
gunzip 源文件.gz
- 压缩:
-
注意事项
- gzip指令和gunzip指令不能压缩目录(文件夹),只能压缩和解压文件,而且压缩文件后缀为
.gz
- gunzip指令解压文件只能解压到文件原来的位置,不能指定解压位置
- gzip指令压缩后的压缩包会将源文件替代掉,且压缩包名=源文件名+.gz(源文件名包括后缀),如
hello.txt.gz
- gzip和gunzip指令可以同时压缩或解压多个文件,多个文件之间用空格隔开即可 -->
gzip 文件1 文件2
- gzip指令压缩同时多个文件,是对多个文件分别进行压缩,不是将多个文件压缩成一个压缩包
- gzip指令和gunzip指令不能压缩目录(文件夹),只能压缩和解压文件,而且压缩文件后缀为
-
测试
① 将/home/key/animal/dog/eat.txt文件进行压缩 -->
gzip /home/key/animal/dog/eat.txt
② 将/home/key/animal/dog/eat.txt.gz压缩文件进行解压 -->
gunzip /home/key/animal/dog/eat.txt.gz
7.2 zip & unzip指令
-
基本语法
- 压缩:
zip [选项] xxx.zip 源文件或目录
- 解压:
unzip [选项] xxx.zip
- 压缩:
-
注意事项
- zip指令可以压缩文件和目录,压缩后的压缩包后缀为
.zip
- zip指令压缩文件或目录时,必须指定压缩包名(xxx.zip),不然压缩失败
- 使用zip指令压缩目录时,如果源目录使用绝对路径表示,则除了根目录
/
之外,源目录以上的父目录都会被压缩,如执行zip xxx.zip /home/key/animal/
后,/home/key也会被压缩,如果只要压缩animal目录,则使用相对路径即可 - 压缩文件:压缩文件时无需添加[选项] -->
zip xxx.zip 源文件
- 递归压缩目录(文件夹):需要添加[选项]
-r
(r就表示递归),表示递归压缩目录下所有子目录及其文件 -->zip -r xxx.zip 源目录
- 指定解压位置:解压xxx.zip压缩包时,默认不添加[选项],默认解压在源文件所在目录,如果需要指定文件或目录解压后存放的位置,需要添加[选项]
-d
-->unzip -d 解压后存放位置 xxx.zip
- zip指令可以压缩文件和目录,压缩后的压缩包后缀为
-
zip/unzip 🆚 gzip/gunzip
- zip/unzip指令可以压缩和解压文件和目录;gzip/gunzip指令只能压缩和解压文件
- zip指令在压缩时需要指定压缩包的名称;gzip指令压缩时无需指定压缩包名,默认就是源文件+.gz
- unzip指令解压时可以指定解压后文件存放位置;gunzip指令不能指定解压后文件存放位置
- zip指令压缩后的压缩包不会取代源文件,而且使用unzip指令解压后压缩包会保留;gzip指令压缩后的压缩包会取代源文件,使用gunzip解压后,压缩包又会被去掉成原来的文件
- zip压缩多个文件时,是将多个文件压缩成一个压缩包;gzip指令压缩多个文件是对文件分别进行压缩
-
测试
① 在/home/key目录下对hello.java进行压缩,压缩包命名为hello.zip -->
zip hello.zip /home/key/hello.java
② 在/home/key目录下对animal/目录进行递归压缩,压缩包命名为myAnimal.zip -->
zip -r myAnimal.zip /home/key/animal/
③ 将/home/key/animal.zip压缩包解压到/home/key/pet目录下 -->
unzip -d /home/key/pet /home/key/myAnimal.zip
7.3 tar指令
-
概述:与gzip/gunzip指令和zip/unzip指令不同的是,tar指令是打包指令,它可以将文件或目录先打包后压缩,经过tar打包后的文件后缀为.tar,压缩后后缀变为.tar.gz(.tgz)
打包 🆚 压缩(参考博文:https://blog.csdn.net/weixin_44901564/article/details/99682926)
- 打包是将多个文件或目录存放在一起,形成一个总的包,这样便于保存和传输,但总大小没有变化
- 压缩是将多个文件或目录经过压缩算法,使文件体积变小以达到压缩的目的,这样可以节省存储空间
- 一般先对多个文件或目录进行打包后再压缩
-
tar指令的选项
选项 解释 -z 打包同时进行压缩 -c 产生.tar打包文件 -x 解压压缩包/打包文件 -v 显示压缩和解压时的详细信息 -f 指定压缩包名称 -
基本语法
- 压缩:
tar -zcvf xxx.tar.gz 源文件或目录
- 解压:
tar -zxvf xxx.tar.gz [选项]
- 压缩:
-
注意事项
- 使用tar指令指定压缩包的名称,一定要带上后缀
.tar.gz
tar -zcvf xxx.tar.gz 源文件或目录
等价于zip xxx.zip 源文件或目录
,只是压缩后的压缩包后缀不同- tar指令压缩文件或目录时与zip指令类似,注意事项参考zip指令👆
- 使用tar解压时,也可以指定文件解压后的存放位置,需要在压缩包后添加[选项]
-C
(注意是大写的C) -->tar -zxvf xxx.tar.gz -C 解压后的存放位置
- 使用tar指令指定压缩包的名称,一定要带上后缀
-
测试
① 将/home/key/目录下的hello.java和test.txt两个文件压缩成一个压缩包,命名为helloTest.tar.gz -->
tar -zcvf helloTest.tar.gz hello.java test.txt
② 在/home/key下使用tar指令压缩pet目录,压缩包命名为myPet.tar.gz -->
tar -zcvf myPet.tar.gz pet/
③ 将/home/key/myPet.tar.gz解压到/home/key/animal/目录下 -->
tar -zxvf /home/key/myPet.tar.gz -C /home/key/animal/