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,这个被称作为超级用户,一般会默认。(普通用户无法执行的可以加sudo
,sudo
解决不了的用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 :读 | 4 | cat ,less ,more ,head ,tail 等 | ls |
w :写 | 2 | > (覆盖写入),>> (追加写入),touch ,rm | mkdir ,rmdir ,mv (重命名) |
x :执行 | 1 | ./ 文件名(此文件必须时可执行文件) | cd ,cp ,mv (移动) |
- :无权限 | 0 | 无操作 | 无操作 |
750:当前用户读写执行(4+2+1),用户组读执行(4+1),其他用户或用户组无权限(0)
注意:对于文件和目录我们具有增删改查的操作,这里的查就是r,这里的增删改就是w
压缩与解压缩
指令
压缩指令:gzip
说明:Linux压缩文件尾.gz
(gzip
)格式
执行权限:所有用户
语法:
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
:如果压缩时保留了源文件,覆盖解压
范例:
总结:
-
gzip
和bzip2
的区别:gzip
可以压缩文件夹中的所有文件,bzip2
不可以- 与
gzip
相比,bzip2
有更高的压缩效率
-
gzip
和bzip2
压缩指令不能混合使用,主要通过压缩文件的扩展名区分
压缩文件或目录: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
总结:
*.tar
:用tar -xvf
解包*.gz
: 用gzip -d
解压缩*.tar.gz
:和*.tgz
用tar -zxvf
解压*.bz2
:用bzip2 -d
解压*.tar.bz2
:用tar -jxvf
解包*.zip
:用unzip
解压
总结:
实现打包压缩目前我们接触了三种用法:
① zip
:打包并压缩
② tar
+ gzip
:先打包,再压缩
③ tar
+ bzip2
:先打包,再压缩
关于 tar
和gzip
、bzip2
实现混合使用的时候,一定是先打包,再压缩。
tar
结合gzip
、bzip2
自动调用gzip
/bzip2
程序完成相关操作
-
打包时,
tar
自动在最后调用gzip
/bzip2
对包进行压缩。 -
解包时,
tar
首先调用gzip
/bzip2
解压缩,然后再解开被gzip
/bzip2
处理过的.tar
文件