Bootstrap

Linux入门指令、常用快捷键以及常用指令详细讲解

Linux常用指令

Linux指令起步

常用快捷键

  • ctrl + alt + t:打开linux终端(命令窗口)
  • ctrl + shift + +:对Linux终端的显示字体进行放大。
  • ctrl + -:对Linux终端的显示字体进行缩小。
  • ctrl + l:清理Linux终端屏幕上的内容,会保留之前的内容,需要翻页。

终端指令入门

  • st@st-virtual-machine:~$:

  • st:当前登录的用户名,这个用户名一般是安装系统的时候设置

  • @:没有意义,作为分隔符

  • st-virtual-machine:主机名,安装的时候设置的。

  • ~:当前登录用户的家目录:(/home/st)

  • $:用来区分用户角色的,$表示普通用户,#表示ROOT用户。

文件系统

Linux本质上就是一个文件系统,Linux文件系统是操作系统组织、存取、保存数据的一种手段。整体采用层级式倒状态目录结构。

倒状树结构中的目录

在这里插入图片描述

在这里插入图片描述
/:根目录,Linux中的绝对路径就是由这个开始的。

/bin:主要存放系统普通指令。列如: cd mkdir ls

/boot:主要存放系统的引导程序。

/dev:存放硬件设备对应的文件(二阶段学习重点)。

/etc:存放系统和应用程序的配置文件(环境变量(profile))

/home:家目录,存放当前系统下所有用户对应的目录。

/lib:存放系统和应用程序的依赖库(二阶段以后使用)。

/proc:存放系统运行时的运行信息。

/usr:是软件的默认安装路径。

/var:存放缓存,备份文件。

/cdrom:光驱(安装镜像文件)。

/mnt:用于系统文件系统的挂载目录。/mnt/hgfs

/sbin:用于存放特权指令。

路径的概念【重点】

  • 绝对路径:以根路径(/)为参考点描述的路径,称之为绝对路径。

举例

cd /home/st       --切换到 根路径下的 home路径下的st目录 类似于windows D://home/st
  • 相对路径:以当前目录(./)为参考点描述的路径,称之为相对路径。

举例:

cd /home          -- 绝对路径,切换到根路径下的home文件
cd ./st           -- 相对路径,切换到当前路径下的st文件夹
cd st             -- 相对路径,等价于上面的写法,一般推荐这种写法,因为简单

在这里插入图片描述

Linux系统文件类型

在这里插入图片描述
说明:

d:目录(文件夹)

-:普通文件

l:文件的快捷方式

c:字符设备文件

b:块设备文件(大容量磁盘)

s:表示套接字文件

p:表示管道文件

目录(文件夹)操作

指令

语法:

指令  [选项][操作的文件或者目录]  Dir

注意:语法中加[],就代表内容可选(可有可无)

pwd查看当前所在目录的绝对路径

说明:查看当前所在目录的绝对路径
在这里插入图片描述

ls显示指定路径下的文件或者目录

说明:显示指定路径(默认是当前路径)下的文件或者目录

常用选项:

  • -a:显示所有(包含隐藏文件或目录,Linux中的隐藏目录或者文件一般以.开头的,如.vimrc )文件或目录
  • -l:显示所有的文件或目录的详细列表(不含隐藏文件或目录)
  • -r:将文件以相反次序显示(默认依照英文字母次序显示)【名称】
  • -t:将文件以创建时间的先后次序显示【时间】

说明:多个参数可以同时出现,如:

ls -l -t -r -a    //等价于 ls -ltra  文件或目录以列表的方式按照名称时间和时间反序显示

将所有文件或者目录按照时间倒序排序并以列表的形式显示(时间越小越靠前)

注意:

​ 我们也可以指定具体的目录进行访问,如:

ls /mnt/hgfs/linux      //指定具体的访问路径

cd切换目录

说明:切换目录

语法:

cd  目录

注意:

cd后不能跟文件路径,应该跟文件夹(目录)路径

cd中的特殊写法:

cd ~:切换到当前登录的家目录下的用户目录下,比如:cd ~,就会切换到/home/st,等价于cd /home/st

cd -:返回上一次操作的工作目录(类似于上一步)

1.	cd /home/st
    cd /mnt/hgfs
    cd linux
2.	cd -

cd /:切换到根目录下

cd ./:切换到当前目录下

cd ../:切换到上一级目录下
在这里插入图片描述

cd ../../:切换到上上一级目录,等价于cd ../..

mkdir创建空文件夹

说明:创建空文件夹(目录)

语法:

mkdir  文件夹路径			 //创建一个文件夹,例如下行
mkdir less01
    
mkdir  文件夹路径列表           //创建多个文件夹,例如下行
mkdir less02 less03 less04

举例:
在这里插入图片描述

说明:mkdir支持批量创建空文件夹(目录)

参数:

-p:可以创建多层文件夹(嵌套目录)

语法:

mkdir -p 文件夹多层路径    //最外层文件夹的路径是可以指定的

举例:

在这里插入图片描述

rmdir删除空目录

说明:删除空目录仅限于删除空目录

语法:

rmdir  空文件夹路径

举例:

在这里插入图片描述

touch创建新文件

说明:创建新文件

语法:

touch  文件路径   //文件路径是可以指定的,默认操作的是当前路径

举例:
在这里插入图片描述

rm删除文件夹

说明:

  • 删除文件夹(目录)
  • 删除文件(需要借助于参数-r

语法:

rm  [选项] 文件/文件夹路径

选项:

-i:给出交互提示,可以输入YES或者NO(优势:防止误删;缺点:需要频繁确认)。

-f:强制删除,不提示(优势:可以快速批量删除;缺点:容易误删)

​ 提示:-i-f不能一起使用,因为他们之间互斥。

-r:递归删除。(删除文件夹必须加-r

在这里插入图片描述
说明:文件删除,直接删除就可以了,目录删除(目录删除指文件夹删除)或者目录(文件夹)+ 文件删除,需要使用选项-r进行递归删除。

cp复制文件或者文件夹

说明:

  • 复制文件或者文件夹(这里的cp同时实现了拷贝+粘贴
  • 实现文件或者文件夹的重命名

语法:

cp  [选项]  被复制的目录/文件路径  目的地地址

选项:

-r:递归复制,复制文件夹中的所有(对文件夹)

-i:如果目的地路径下已经存在同名目录/文件,会交互提示(提示是否替换:YES则完成替换,NO则取消拷贝)

举例:
在这里插入图片描述

mv移动文件/目录

说明:

  • 移动文件/目录(等价于windows中的剪切+粘贴)。
  • 重命名文件/目录

语法:

mv  被移动的文件/目录路径  目的地地址

注意:

  • 被移动文件名于目的地文件名不一致,就相当于重命名了。
  • 如果移动的是文件夹,需要借助于-r

举例:

mv a.txt ../b                --移动,将aa.txt移动到b目录下

mv aa.txt ../b/bb.txt        --移动+重命名,将aa.txt移动到../b目录下并重命名为bb.txt (注意:我们无法

mv aa.txt bb.txt            --重命名将同一文件夹下的aa.txt重命名为bb.txt
    
mv aa.txt ../b/cc.txt        --移动+重命名
cp -ri aa.txt  ../b/cc.txt   --拷贝+重命名

说明:重命名是移动和拷贝在特殊情况下的产物。

文件操作

指令

cat查看文件内容

说明:查看文件内容

执行权限:所有用户

语法:

cat  [选项]  文件路径

选项:

-n:显示行号

范例:

cat  /proc/cpuinfo
cat  -n  /proc/cpuinfo

在这里插入图片描述

more分页查看文件内容

说明:分页查看文件内容

执行权限:所有用户

语法:

more  文件路径

操作:

  • 空格键:向下翻一页
  • 回车键:向下翻一行
  • Q/q键:推出查看
  • (不可以向上翻)

范例:

more  /proc/cpuinfo

less分页查看文件内容

说明:分页查看文件内容

执行权限:所有用户

语法:

less  [选项]  文件路径

选项:

-M:显示当前行的范围。

操作:

  • 空格键:向下翻一页
  • B/b键:向上翻一页
  • 方向上下键:向上向下翻一行
  • Q/q键:退出(quit)

范例:

less  -M /proc/cpuinfo

head查看文件的头部内容(默认是10行)

说明:查看文件的头部内容(默认是10行)

执行权限:所有用户

语法:

head  [选项]  文件路径

选项:

-n:从头开始显示n行内容(识别换行符(识别空格))

范例:

head  -n 5  /proc/cpuinfo       --等价于下面一行
head  -5  /proc/cpuinfo         

tail查看文件的尾部内容(默认是10行)

说明:查看文件的尾部内容(默认是10行)

执行权限:所有用户

语法:

tail  [选项]  文件路径

选项:

-n:从头开始显示n行内容(识别换行符(识别空格))

范例:

tail  -n 5  /proc/cpuinfo       --等价于下面一行
tail  -5  /proc/cpuinfo         

grep在文件中查找指定的字符序列

说明:搜索文件内容,在文件中查找指定的字符序列(字符串)

执行权限:所有用户

语法:

grep  [选项]  要查找的字符序列  文件路径       --等价于下面一行
grep  [选项]  ‘要查找的字符序列’ 文件路径      --推荐

选项:

-n:显示行号(number)

-c:统计搜索到的行的数量(count)

-i:忽略大小写搜索。(这个主要针对于英文,什么叫忽略大小写,比如有两个单词:MAIN,main)

范例:

grep  -ni apicid /proc/cpuinfo        --显示行号和忽略大小写,在文件cpuinfo中查找apicid   等价于
grep  -ni 'apicid'  /proc/cpuinfo     --显示行号和忽略大小写,在文件cpuinfo中查找apicid   推荐
    
grep  -c 'apicid' /proc/cpuinfo       --显示搜索到的数量,和-n不能混合使用,因为没有意义

在这里插入图片描述

特殊匹配:

  • ^:行首匹配:匹配以什么什么开头的

范例:

grep  -n  '^cp'  /proc/cpuinfo
  • $:行尾匹配:匹配以什么什么结尾的

范例:

grep  -n  '[0-9]$'  /proc/cpuinfo

find查找文件或目录

说明:查找文件或目录(递归查找),从(位存储器)磁盘(硬盘)查找,精确性高,性能低。

执行权限:所有用户

语法:

find  检索路径  [选项]  参数

选项:

-name:按照名称查找

-iname:对于英文的名称忽略大小写查找

-size:按照文件大小搜索,默认是1个单位(1个单位 = 512Bytes(字节))

-type:按照文件类型查找(d,f,l,p,s…)

范例:

find  ./  -iname  test.c      --在当前目录中查找文件名称位test.c的文件,文件名忽略大小写
find  ./  -size  +3M          --在当前目录中查找大小超过3M(1024 * 1024 * 3(Byte))的文件,这里的“+”表示大于
find  ./  -size  -3M          --在当前目录中查找文件大小不超过3M的文件,这里的“-”表示小于
find  ./  -size  +3           --在当前目录中查找文件大小超过3个单位(3 * 512(Bytes)的文件,这里的“+”表示大于

locate快速查找文件或目录

说明:快速查找文件或目录,从数据库查找,准确性低,性能高。

​ 该指令是从文件系统的数据库中查找,新创建的文件还没有在数据库中建立索引,用该指令找不到。

执行权限:所有用户

语法:

locate  [选项]  文件或目录

选项:

-c:统计(count)返回的是一个数字

-i:忽略大小写

范例:

locate  -i  test.c

注意:默认情况下updatedb每天更新一次,我们可以手动更新。指令:

updatedb

which快速检索指令位置

说明:快速检索指令位置

执行权限:所有用户

语法:

which  ls

echo将指定字符串输出到设备上

说明:将指定字符串输出到设备上

执行权限:所有用户

语法

echo  字符串  > | >>  文件路径

说明:|是或者的意思

范例:

echo  "yueqian is good" > yueqian.txt  //将yueqian is good 输入到yueqian.txt文件中
echo  "fuhao is good" >> yueqian.txt   //将fuhao is good 追加到yueqian.txt

解释:

>:覆盖式写入,就是新写入的文本会覆盖掉文件中原有的文本(不保留原文本)

>>:追加式写入,就是在文本文件内容的末尾追加新写入的文本(保留原文本)

|(管道)

说明:将前一个指令执行的结果作为后一个指令执行的条件

执行权限:所有用户

范例:

ls  -l | grep "demo01.c"             //以详细列表的形式显示文件名称为demo01.c的文件
find  /dev -type c | grep "2$"       //查找/dev下文件类型为c的以2结尾的所有文件

计算机存储单位

计算机中最小存储单位叫做bit(位),只能存储0或1叫做二进制,内存中数据就是以二进制形式存储的

转换关系

1Byte(字节)= 8Bit(位)

1KB = 1024Bytes

1MB = 1024KB

1GB = 1024MB

1TB = 1024GB

用户和用户组

1.计算机通过用户名和密码识别用户。

2.Linux中新建用户后,需要设置密码(很多时候需要远程访问,为了安全,必须设置密码)。

3.系统中有一个特殊的用户root,这个被称作为超级用户,一般会默认。(普通用户无法执行的可以加sudosudo解决不了的用root

4.用户组:把几个用户归在一起,这样的组被称之为用户组,规定文件所属用户组的权限可以使该组成员拥有这些权限。

普通用户和超级用户

一台电脑可以有且仅有一个超级用户以及若干个普通用户

  • 普通用户:安装系统时我们创建的用户(st),这个也可以由超级用户进行分配,如:st

  • 超级用户:又被称作为最高管理员,用户名使root,Linux系统内置,第一次使用root用户的时候,需要修改密码。

修改超级用户root的密码

sudo passwd           --然后按照提示输入密码即可,这里的密码输入是不可见的(修改超级管理员的密码)

​注意:终端输入密码的时候没有提示,如果输入错误回车键后会提示重新输入。

关于用户、文件以及权限的关系:用户对文件拥有权限(读、写、执行、无权限)

普通用户和超级用户的切换

  • 普通用户切换到ROOT用户:
sudo  -i              --没有设置密码的时候,使用这个进入
----------------------------------------------------------
su root               --设置密码之后,可以通过这个命令进入
  • ROOT用户切换到普通用户:
su 用户名

whoami查看当前登录的用户

解释:查看当前登录的用户

whoami

团队共享文件

问题抛出

企业开发中,我们一般是团队式开发。团队成员需要在一台服务器上共同完成一行任务(开发一套应用软件)团队成员在服务器上用户是lucy,lewis,mike,peter,他们都属于workgroup这个用户组。(lucy,lewis,mike,peter:指用户)

在/home目录下新建一个名为work的目录,作为这个小组的工作目录。
workgroup组成员拥有这个目录的读写权限,并禁止其他无关用户操作这个目录。

如何解决以上问题?

①新建组workgoup并添加四个用户,分别为其设置密码。

②建立工作目录/home/work

③把这个新建目录/home/work

④组成员对其拥有读写权限,其他人不具有任何权限。(r-读,w-写,x-执行,--无权限)

⑤把这个工作目录交给lewis(用户)

用户相关操作

指令

添加新用户

执行权限:ROOT权限

语法:

[sudo] useradd [选项] 用户名        --sodu:临时提升到ROOT,并不完全等价于ROOT用户,一般适用于普通用户下使用ROOT权限

范例:

[sudo] useradd -d /home/lucy -m lucy       --创建一个用户lucy,并在家目录下为其分配一个同名目录(此时会创建一个默认组:lucy)
以上指令做了三件事:
1.在数据库创建了一个名为lucy的用户(用户)
2.在/home目录下创建了一个名为lucy的文件夹(用户文件夹)
3.在数据库针对用户lucy创建了一个同名的用户组lucy(用户组)

注意:如果在新建用户的时候没有指定用户组,就会创建要给与用户名相同的组名,并让新用户属于这个组。

[sudo] useradd -d /home/peter -mg lucy peter    --创建一个peter用户,并在家目录下为其分配一个同名目录peter,同时将peter用户添加到已有的组lucy组。

查看用户所属的组

执行权限:ROOT权限

语法:

[sudo] groups 用户名

范例:

sudo groups st

在这里插入图片描述

删除用户

执行权限:ROOT权限

语法:

[sudo] uerdel [选项] 用户名

选项:

-f:强制删除用户,即使用户当前已登录(强制删除)

-r:删除用户的同时,删除与用户相关的所有文件(递归删除)

范例:

sudo userdel -rf peter       --删除用户peter,并在不提示任何信息的情况下递归删除peter对应的用户文件夹(/home/peter)

给用户添加口令(密码)

执行权限:ROOT权限

语法:

[sudo] passwd [选项] 用户名

选项:

-l:锁定口令,也就是禁用账户

-u:解锁口令

-d:使账号无口令(强烈建议不要这么做)

-e:强制用户下次登录时修改密码

如果缺省选项(即不写选项),则修改/设置当前用户的口令

说明:

  • ROOT用户下:给用户设置初始密码(这个密码复杂度没有要求,因为初始密码都比较简单)
sudo passwd lucy       --这里对密码的复杂度没有要求
  • 普通用户下:修改自己的密码(这里的密码都是用户的专属密码,对于密码的复杂度有要求)
passwd

修改用户

执行权限:BOOT用户

语法:

[sudo] usermod [选项] 用户名

选项:

-c:备注,修改用户的备注文字

-g:用户组,修改用户所属的用户组

-G:群组,修改用户所属的附加群组

-s:shell,修改用户登入后所使用的shell

-u:uid,修改用户的uid

范例:

sudo usermod -g root lucy              --将lucy用户所属的组改成root组
sudo usermod -g lucy -G root,st lucy   --将lucy用户所属的组改成lucy组,并且设置附属组root,st,多个附属组可以使用逗号分隔

在这里插入图片描述

用户组相关操作

指令

添加用户组

执行权限:ROOT

语法:

[sudo] groupadd [选项] 组名

选项:

-g:GID,指定新用户组的标识(唯一编号),如果不指定,系统会自动编号

范例:

sudo groupadd workgroup         --创建一个工作组

查看所有用户组

语法:

方式1: cat /etc/group
方式2:[sudo] cat /etc/gshadow

删除用户组

执行权限:ROOT用户

语法:

[sudo] groupdel [选项] 组名

范例:

sudo groupdel workgroup       --删除我们添加的workgroup这个组

修改用户组

执行权限:ROOT用户

语法:

[sudo] groupmod [选项] 新组名 旧组名

选项:

-g:GID,组编号(唯一编号)

-o:和-g同时使用,允许用户组新的GID和系统已有用户组的GID相同

-n将用户组的名字改为新名字(new)

范例:

sudo groupmod -n YQ lucy               --将lucy组名改成YQ
sudo groupmod -n lucy YQ -g 1002 -o    --将YQ组改名为lucy,并且将GID改成跟系统已有组相同的GID

权限管理

所谓的权限管理,就是说让某个用户拥有某个文件或者目录,让用户对文件是否拥有读写执行的权限。

指令

修改文件/目录的拥有者或者组

执行权限:ROOT用户

语法:

[sudo] chown [选项] ... [所有者][[:组名]] 文件或者目录的路径

选项:

-c:显示更改部分的信息

-f:忽略错误信息

-h:修复符号链接

-R处理指定目录以及其子目录中的所有文件

-v:显示详细的处理信息

范例:

sudo chown lucy /home/work/demo01.c     --指定demo01.c文件的所有者为用户lucy(直接作用域单个用户)
sudo chown :lucy/home/work/demo02.c     --指定demo01.c文件的所有者为用户组lucy(直接作用域同一组下多个用户)
sudo chown -R mike:lucy /work/demo02    --将demo02目录所有文件与子文件的所有者都设置为mike用户以及lucy用户组

举例:
在这里插入图片描述

修改文件或目录的权限

这里提到的权限:r(读)w(写)x(执行)-(无权限)

执行权限:ROOT用户

语法:

[sudo] chmod [选项] 权限 文件或目录的路径

选项:
-c:显示更改部分

-f:忽略提示信息

-R递归指定目录及其子目录中的所有文件

-v:显示详细信息

文字设定法(方式1)

语法:

sudo chmod [参数1] [参数2] 权限名 文件或目录的路径

参数:

  • 参数1:给谁添加权限
    • a:all,所有用户
    • u:user,当前用户
    • g:group,当前用户组
    • o:other,其他用户或者用户组
  • 参数2:操作权限
    • +:增加权限
    • -:删除权限
    • =:设置权限
  • 权限名:
    • r:readonly,只读
    • w:write,写
    • x:执行,一般只对的是可执行程序
    • -:无权限(针对rwx对应位置进行设置)

范例:

sudo chmod u=rwx,g=rx,o=- /home/work/demo01.c     --针对demo01.c,当前用户拥有读写执行权限,用户组拥有读和执行权限,其他用户或者用户组无权限

举例:

在这里插入图片描述

数字设定法(方法2)

语法:

[sudo] chmod 权限数字 文件或目录的路径

权限数字:
r:4
w:2
x:1
-:0

解释:
权限数组的表示:777,三个数字:
提示:

4 + 2 + 1 = 7 :rwx
4 + 2 = 6 :rw-;
4 + 1 = 5 :r-x;
4 :r--;
0 :---;
以此类推...

①第1个数字表示当前用户(4 + 2 + 1 = 7: rwx
②第2个数字表示用户组(4 + 2 + 1 = 7: rwx
③第3个数字表示其他用户或用户组(4 + 2 + 1 = 7: rwx
每个数字都是权限累加的和。

范例:

sudo chmod 750 /home/work/demo01.c           --针对demo01.c,当前用户拥有读写执行权限,用户组拥有读和执行权限,其他用户或者用户组无权限。

通配符

  • *:匹配任意一个或多个字符

举例:

在这里插入图片描述

  • ?:匹配任意单个字符

举例

在这里插入图片描述

  • [..]:匹配[]范围中的任意单个字符

举例:

在这里插入图片描述

权限说明

权限的类型权限的数字普通文件目录/文件夹
r:读4cat,less,more,head,taills
w:写2>(覆盖写入),>>(追加写入),touch,rmmkdir,rmdir,mv(重命名)
x:执行1./文件名(此文件必须时可执行文件)cd,cp,mv(移动)
-:无权限0无操作无操作

750:当前用户读写执行(4+2+1),用户组读执行(4+1),其他用户或用户组无权限(0)

注意:对于文件和目录我们具有增删改查的操作,这里的查就是r,这里的增删改就是w

压缩与解压缩

指令

压缩指令:gzip

说明:Linux压缩文件尾.gzgzip)格式

执行权限:所有用户

语法:

gzip [选项] 文件/目录

选项:

-r可以将目录下的文件递归压缩(绕过文件目录找文件进行压缩)

-l:显示已经压缩文件的压缩信息

-d:解压缩

范例:

gzip demo01.c            --压缩demo01.c文件,压缩后的名称默认为:demo01.c.gz(.gz是后缀),压缩后源文件(.c)不保留
gzip -d demo01.c.gz      --解压缩demo01.c.gz,解压后源文件(.gz)不保留
--------------------------------------------------------------
gzip -r chapter01        --压缩chapter01文件夹(chapter01包含demo01.c)压缩后的名称默认为:chapter01/demo01.c.gz
gzip -d chapter01/demo01.c.gz    --解压缩chapter01/demo01.c.gz
---------------------------------------------------------------
gzip *.txt *.c           --批量压缩多个文件,压缩后会产生多个压缩包

注意:只能压缩文件,不能压缩文件夹,只能压缩,不能打包。

在这里插入图片描述

更高的压缩效率指令:bzip2

说明:压缩文件尾.bz2的格式,同样这种压缩也不提供打包功能。

执行权限:所有用户

语法:

bzip2 [选项] 文件路径

选项:

-k:保留源文件,支持保留源文件

-d:解压缩

-f:覆盖式压缩/解压(文件夹中有同名文件,用解压出来的文件覆盖同名文件,压缩的时候新的压缩包覆盖旧的同名压缩包)

范例:

bzip2 -k demo02.c             --压缩demo02.c,压缩后保留源文件,压缩后的名称默认:demo02.c.bz2
bzip2 -df demo02.c.bz2        --解压demo02.c.bz2,当前是覆盖解压
-----------------------------------------------------------------
bzip2 -kf demo01.c demo02.c    --批量压缩多个文件,压缩后的名称为:demo01.c.bz2和demo02.c.bz2,针对每个文件单独压缩
bzip2 -df demo01.c.bz2 demo02.c.bz2 --批量解压多个文件,每个压缩包都会产生一个解压后的文件,解压后的demo01.c和demo02.c

另一种解压:

语法:

bunzip2 [选项] 文件名

选项:
-f :如果压缩时保留了源文件,覆盖解压

范例:

总结:

  • gzipbzip2的区别:

    • gzip可以压缩文件夹中的所有文件,bzip2不可以
    • gzip相比,bzip2有更高的压缩效率
  • gzipbzip2压缩指令不能混合使用,主要通过压缩文件的扩展名区分

压缩文件或目录:zip

说明:文件的后缀名是.zip

执行权限:所有用户

压缩语法:

zip [选项] 压缩后的文件名 文件/目录

解压语法:

unzip [选项] 压缩文件的文件名

选项:

-r:递归压缩,用于对文件夹的操作(体现在压缩算法上,并不是生成多个压缩包)

​ 注意:不带选项会保留源文件(默认保留源文件)

范例:

zip demo03.zip demo03.c            --压缩demo03.c,压缩后的文件名是demo03.zip
unzip demo03.zip                 --解压缩demo03.zip

zip demo01.zip chapter01         --压缩chapter01文件夹,压缩后的名字是chapter01.zip(仅仅从外层进行压缩,说的是压缩算法)

zip -r demo02.zip chapter02         --压缩chapter02文件夹,压缩后的名字是chapter02.zip(仅仅从外层进行压缩,说的是压缩算法)
unzip chapter02.zip                --解压缩chapter02.zip

zip love/love.zip demo02.c demo03.c --将demo02.c和demo03.c统一压缩至love目录下,压缩后的文件名:love.zip
zip all.zip love/love.zip chapter01.zip chapter02.zip   --将多个文件(夹)打包并压缩,压缩后文件名是:all.zip
解压时出现同名文件

在这里插入图片描述

注意:

当解压缩时,如果有同名文件或文件夹,会有提示让用户进行选择处

理:

[y]es :输入 y,表示覆盖文件,进行替换(单文件一个个交互处

理)

[n]o:输入n,表示不覆盖文件(单文件一个个交互处理)

[A]ll :输入A,表示覆盖文件夹(多文件,统一处理)

[N]one :输入N,表示不覆盖文件夹(多文件,统一处理)

[r]ename :输入r,重命名解压后的文件

打包指令:tar

执行权限:所有用户

说明:打包一般结合压缩使用

语法:

tar [选项] 产生的文件名称 被压缩的文件或者目录 (有多个,用空格隔开)

选项:

-c打包

-v:显示命令执行的过程

-f用于指定打包文件的名称

-z:打包时压缩/解包时解压缩,操作的文件扩展名为.gz,使用gzip的压缩算法

-x解包,需要注意的是-c-x不能同时使用

-j打包时压缩/解包时解压缩,操作的文件扩展名为.bz2,使用bzip2的算法,注意-z-j不能同时使用

范例:

--打包
tar -cvf all.tar chapter01 chapter02 demo03.c    --打包chapter01,chapter02,demo03.c文件到all.tar,未经过压缩,保留原文件
tar -xvf all.tar                                  --解包all.tar中的chapter01,chapter02,demo03.c

--打包 + 压缩
tar -zcvf all.tar.gz  chapter01 chapter02 demo03.c  --打包并压缩chapter01 chapter02 demo03.c文件到all.tar.gz
tar -zxvf all.tar.gz

tar -jcvf all.tar.bz2  chapter01 chapter02 demo03.c  --打包并压缩chapter01 chapter02 demo03.c文件到all.tar.bz2
tar -jxvf all.tar.bz2

总结:

  1. *.tar :用tar -xvf 解包
  2. *.gz : 用gzip -d解压缩
  3. *.tar.gz :和*.tgztar -zxvf解压
  4. *.bz2 :用bzip2 -d解压
  5. *.tar.bz2 :用tar -jxvf解包
  6. *.zip:用unzip解压

总结:

​ 实现打包压缩目前我们接触了三种用法:

​ ① zip:打包并压缩

​ ② tar + gzip:先打包,再压缩

​ ③ tar + bzip2:先打包,再压缩

​ 关于 targzipbzip2实现混合使用的时候,一定是先打包,再压缩。

tar结合gzipbzip2

自动调用gzip/bzip2程序完成相关操作

  • 打包时,tar自动在最后调用gzip/bzip2对包进行压缩。

  • 解包时,tar首先调用gzip/bzip2解压缩,然后再解开被 gzip/bzip2处理过的.tar文件

;