Linux是一个强大、灵活且广泛使用的操作系统内核,它为用户提供了稳定性、安全性和自由度,成为了许多领域的首选操作系统。

Linux目录结构

基本介绍

  1. linux的文件系统是采用级层式的树状目录机构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录。
  2. 深刻理解linux树状文件目录是非常重要的。(框架需要背)
  3. 记住一句经典的话:在Linux世界里,一切皆文件。(linux会将硬件映射成文件来进行管理)


具体的目录结构

  • /bin [常用] (/usr/bin、/usr/local/bin):
    是Binary的缩写,这个目录存放着最经常使用的指令,如cd指令。
  • /sbin (/usr/sbin、/usr/local/sbin):
    s是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
  • /home [常用]:
    存放普通用户的根目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名。可以在终端用下面命令创建和删除linux用户:
1
2
3
useradd jack # 创建名为jack的用户,同时在/home目录下会创建jack目录
userdel -r jack # 移除jack用户,同时在/home目录下会移除jack目录
12
  • /root [常用]:
    该目录为系统管理员,也称作超级权限者的用户主目录
  • /lib:系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
  • /lost+found这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件(lost+found目录一般是隐藏的,通过在终端,在根目录输入ls可以查看到)
  • /etc [常用]:所有的系统管理所需要的配置文件和子目录,比如安装mysql数据库,则数据库的配置文件会默认放在etc下面。当然etc也有系统的一些配置文件。
  • /usr [常用]: 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录(windows下安装的程序默认的目录)。
  • /boot [常用]:存放的是启动Linux时的一些核心文件,包括一些连接文件以及镜像文件。
  • /proc [不能动]:这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息。
  • /srv [不能动]: service缩写,该目录存放一些服务启动之后需要提取的数据。
  • /sys [不能动]: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs。
  • /tmp: 这个目录是用来存放一些临时文件的。
  • /dev:类似于windows的设备管理器,把所有的硬件用文件的形式存储,如cpu,硬盘等
  • /media [常用]:linux系统会自动识别一些设备,如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
  • /mnt [常用]:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里面的内容了。如共享文件夹。
  • /opt:这是给主机额外安装软件所存放的目录。如安装ORACLE数据库就可以放到该目录下。默认为空。
  • /usr/local [常用]:这是另一个给主机额外安装软件安装的目录。(软件安装好存放的目录)一般是通过编译源码方式安装的程序。
  • /var [常用]:这个目录中存放着不断扩充着的东西,习惯将经常被修改的目录放在该目录下。包括各种日志文件。
  • /selinux [security-enhanced linux]: SELinux是一种安全子系统,它能控制程序只访问呢特定文件,有三种工作模式,可自行设置。


远程登录到Linux服务器

远程登陆Linux-Xshell7

  1. Xshell是目前最好的远程登录到Linux操作系统的软件,流畅的速度并且完美解决了中文乱码的问题,是目前程序员首选的软件。
  2. Xshell是一个强大的安全终端模拟软件,它支持SSH1,SSH2,以及Microsoft Windows平台的TELNET协议。
  3. Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。

xshell7的下载地址:https://www.xshell.com/zh/free-for-home-school/


远程上传下载文件-Xftp7

Xftp7是一个基于windows平台的功能强大的SFTP、FTP文件传输软件。使用Xftp以后,windows用户能安全地在UNIX/Linux的和Windows PC之间传输文件。

如何处理Xftp中文乱码问题?
答:点击文件-当前会话属性-选项,在编码方式中选择UTF-8则可以处理乱码问题。


Vi和Vim编辑器

Linux系统会内置vi文本编辑器。

Vim具有程序编程的能力,可以看作是Vi的增强版本,可以主动地以字体颜色辨别语法的正确性,方便程序设计。代码补全、编译及错误跳转等方便编程的功能特别丰富,再程序员中被广泛使用。

vi和vim常用的三种模式

正常模式:

以vim打开一个档案就直接进入一般模式(默认模式)。在这个模式中,你可以使用[上下左右]按键来移动光标,你可以使用[删除字符]或[删除整行]来处理档案内容,也可以使用[复制、粘贴]来处理你的文件数据。

插入模式:

按下i,I,o,O,a,A,r,R等任何一个字母之后才会进入编辑模式,一般来说按i即可。

命令行模式:

先输入esc,再输入冒号”:”或“/”,就能切换到命令行模式。在这个模式中,可以提供你相关指令,完成读取、写入(w)、替换、离开vim(q)、显示行号、写入并退出(wq)等动作。

各种模式的相互切换

image-20230712101906055


快捷键

  1. 拷贝当前行:在一般模式下输入yy ;拷贝当前行向下的5行:在一般模式下输入5yy ;并粘贴(输入p)
  2. 删除当前行:在一般模式下输入dd ;删除当前行向下的5行:在一般模式下输入5dd
  3. 在文件中查找某个单词:在命令行模式下输入“/单词”,回车就会对单词进行查找,输入n就是查找下一个
  4. 设置文件的行号,取消文件的行号:在命令行模式下,输入“:set nu”和“:set nonu”
  5. 编辑/etc/profile文件,在一般模式下,使用快捷键到该文档的最末行[G]和最首行[gg]
  6. 在一个文件中输入“hello”,然后又撤销这个动作:在一般模式下,输入“u”
  7. 编辑/etc/profile文件,并将光标移动到20行:在一般模式下,输入“20“再输入”shift+g”

vi-vim-cheat-sheet-sch1


开机、重启和用户登录注销

关机&重启命令

  • shutdown -h now : 立刻进行关机
  • shutdown -h 1 “hello, 1分钟后会关机了” :在终端提示“hello,1分钟后会关机了”,并且在1分钟后关机
  • shutdown -r now : 现在重新启动计算机
  • halt :关机,作用和上面一样
  • reboot :现在重新启动计算机
  • sync :把内存的数据同步到磁盘

注意:

1.不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中

2.目前的shutdown/reboot/halt等命令均已经在关机前进行了sync


用户登录和注销

1.登录时尽量少用root账号登录,因为它是系统管理员,最大的权限,要避免使用它导致误操作。可以利用普通用户登录,然后登陆后再用‘su - 用户名’命令来切换成系统管理员身份。

2.在提示符下输入logout即可注销用户

3.logout注销指令在图形运行级别(如终端)无效,在运行级别3(如xshell登录)下有效


用户管理

Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

添加用户

基本语法

useradd 用户名

应用案例

案例1:添加一个用户milan,默认该用户的家目录在/home/milan(登录该用户后会默认切换到其家目录)

说明

1.当创建用户成功后,会自动创建和用户同名的家目录

2.也可以通过useradd -d 指定目录 新的用户名,给新创建的用户指定家目录


指定/修改密码

基本语法

passwd 用户名

注意:如果不写用户名,则只会给当前用户修改密码

应用案例

给milan 指定密码:passwd milan

pwd命令(print working directory):显示当前所在的工作目录


删除用户

基本语法

userdel 用户名

应用案例

1.删除用户milna,但是要保留家目录:userdel milan

2.删除用户以及用户家目录,比如tom:userdel -r tom


查询用户信息指令

基本语法

id 用户名

细节说明

当用户不存在时,返回无此用户


切换用户

在操作LInux中,如果当前用户的权限不够,可以通过su - 指令,切换到高权限用户,比如root

基本语法

su - 切换用户名

或su 切换用户名

注意:su root,只是临时切换到root用户,切换后环境变量不变,取得root的部分权限,不能使用root在path中的独有命令;su - root切换后环境变量改变,几乎可以不受限制做任何事

细节说明

1.从权限高的用户切换到权限低的用户,不需要输入密码,反之需要。

2.当需要返回到原来用户时,使用exit/logout指令

3.也可以使用“su 切换用户名”来切换用户,但这样登录不是通过shell登录,不能通过logout注销,只能通过exit退出登录


查看当前用户/登录用户

基本语法

whoami/ who am i

注意:

1.whoami只显示当前使用的身份(切换后身份会变),显示的信息少,只显示用户名

2.who am i显示的是最初登录的身份,无论后面切换了多少次用户都一样,显示的信息多,还会显示登录时间


用户组

类似于角色,系统可以对有共性(权限)的多个用户进行统一的管理

新增组

指令:groupadd 组名

删除组

指令(基本语法):groupdel 组名

增加用户时直接加上组

指令(基本语法):useradd -g 用户组 用户名

  • 案例演示
    增加一个用户 zwj, 直接将他指定到wudang
    (前面我们使用useradd 用户名 新增用户时,没有分配组,系统会默认分配该用户到用户名同名的组中去)
1
2
groupadd wudang
useradd -g wudang zwj

修改用户的组

指令(基本语法):usermod -g 用户组 用户名

  • 案例演示
    创建一个组 mojiao
    把zwj放入到mojiao
1
2
groupadd mojiao
usermod -g mojiao zwj


用户和组相关文件

/etc/passwd文件

用户(user)的配置文件,记录用户的各种信息

每行的含义:用户名:口令:用户标识号(uid):组标识号(gid):注释性描述:主目录(家目录):登录Shell

cd指令,linux内核无法识别,要通过shell翻译解释,而shell的种类很多,有bash,tcsh,csh等等

/etc/shadow文件

口令的配置文件

每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

注意:

1.每次输入的口令,会在shadow文件中验证

2.最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志都是用一种特殊的标识表示的

/etc/group文件

组(group)的配置文件,记录Linux包含的组的信息

每行含义:组名:口令:组标识号:组内用户列表

注意:组内用户列表看不到,它隐藏了


实用指令

指定运行级别

基本级别说明:

0:关机

1:单用户【找回丢失密码】

2:多用户状态没有网络服务(用的很少)

3:多用户状态有网络服务(用的最多的,不带图形界面,节省资源;支持多用户且有网络服务-在实际生产环境中使用最多)

4:系统未使用保留给用户(用的比较少)

5:图形界面(启动后默认进入的级别,是多用户的)

6:系统重启

常用运行级别是3和5,也可以指定默认运行级别,后面演示

应用实例

命令:init [0123456]

应用案例:通过init来切换不同的运行级别,比如修改级别为3:则命令为init 3


CentOS7运行级别说明

在centos7以前,我们是在/etc/inittab文件中进行修改,它里面有个数字。

到了centos7,进行了简化,在/etc/inittab文件中有如下:

multi-user.target:analogous to runlevel 3 (多用户,等价于级别3)

graphical.target:analogous to runlevel 5 (图形化,等价于级别5)

# To view current default target, run:(以下指令可以查看当前运行级别)
systemctl get-default

# To set a default target, run:(以下指令可以设置默认运行级别)
systemctl set-default TARGET.target


找回root密码

注意:不同版本找回密码的方式可能有一些小区别

1.首先,启动系统,进入开机界面,在界面中按”e“进入编辑界面。

2.进入编辑界面,使用键盘的上下键将光标往下移动,找到以”Linux16“开头内容所在的行数,在行的最后面输入:init=/bin/sh。

3.接着,输入完成后,直接按快捷键:Ctrl+x进入单用户模式。

4.接着,在光标闪烁的位置中输入:mount -o remount,rw / (注意:各个单词间有空格),完成后按键盘的回车键.

5.在新的一行最后面输入:passwd,完成后按键盘的回车键(Enter)。输入密码,然后再次确认密码即可(密码长度最好是8位以上,但不是必须的),密码修改成功后,会显示passwd。。。的样式,说明密码修改成功。

6.接着,在光标闪烁的位置中(最后一行中)输入:touch /.autorelabel(注意:touch与 /之间有一个空格),完成后按键盘的回车键(Enter)。

7.继续在光标闪烁的位置中,输入:exec /sbin/init(注意: exec与 /之间有一个空格),完成后按键盘的回车键(Enter),等待系统自动修改密码(这个过程时间可能有点长,耐心等待),完成后,系统会自动重启,新的密码生效了。


帮助指令

man获取帮助信息

基本语法:man[命令或配置文件] (功能描述:获取帮助信息)

查看ls命令的帮助信息:man ls

注意:

1.如果帮助信息太长,没有显示完全,那么按空格键,会继续往下显示。

2.ls中常用的选项-a:列出所有文件,包括以”.“开头的隐含文件(在linux中,隐含文件是以”.“开头的,a代表all)。-l:单行输出。

3.按h寻求man指令的帮助,按q退出man指令。

4.选项可以组合使用,如-la(顺序无所谓,也可以是-al),则表示单行输出,且包含所有隐藏文件,如 ls -al /root

5.ls -al默认是查看当前目录的,如果要查看root目录下的文件,则可以用ls -al /root

help指令

基本语法:help命令(功能描述:获得shell内置命令的帮助信息)

注意:

help命令只能显示shell内置命令的帮助信息,而linux系统中绝大多数命令是外部命令。而通过man命令查看其它命令的详细文档。没有内建与外部命令的区分,因为 man 工具是显示系统手册页中的内容,man 得到的内容比 help 更多更详细。

查看shell内置的cd命令的帮助信息: help cd


文件目录类

pwd指令

基本语法:pwd (功能描述:显示当前工作目录的绝对路径)

ls指令

基本语法:ls [选项] [目录或是文件]

常用选项

-a:显示当前目录所有的文件和目录,包括隐藏的

-l:以列表的方式显示信息

cd指令

基本语法:cd[参数] (功能描述:切换到指定目录)

mkdir指令(make directory)

mkdier指令用于创建目录

基本语法:mkdir [选项] 要创建的目录

常用选项

-p:创建多级目录

创建一个目录/home/dog:mkdir /home/dog

创建多级目录/home/animal/tiger:mkdir -p /home/animal/tiger

rmdir指令

rmdir指令删除空目录

基本语法:rmdir [选项] 要删除的空目录

使用细节

rmdir 删除的是空目录,如果目录下有内容时无法删除的。

提示:如果需要删除非空目录,需要使用 ’rm -rf 要删除的目录‘(-rf表示强制递归)

比如:rm -rf /home/animal

注意:

1.使用rm -rf进行删除时,要非常谨慎。

2.rm指令单独只能删除文件,加上参数-r可以删除包含文件的文件夹。但是在删除前shell会询问。

touch指令

touch指令创建空文件

基本语法:touch 文件名称

在/home目录下,创建一个空文件 hello.txt:touch hello.txt

cp指令

cp指令拷贝文件到指定目录

基本语法:cp [选项] source dest

常用选项

-r:递归复制整个文件夹

案例1:将/home/hello.txt拷贝到/home/bbb目录下:在/home目录下,cp hello.txt bbb

案例2:递归复制整个文件夹,比如将/home/bbb整个目录,拷贝到/opt:cp -r /home/bbb /opt(这样拷贝是将整个目录,包括目录bbb本身,都拷贝到/opt下的)

使用细节

强制覆盖不提示的方法:\cp:如上面的指令如果要强制覆盖,则为\cp -r /home/bbb /opt

rm指令

说明:rm指令移除文件或目录

基本语法:rm [选项] 要删除的文件或目录

常用选项

-r:递归删除整个文件夹

-f:强制删除不提示

案例1:将/home/hello.txt删除:rm /home/hello.txt ,在提示中选择y

案例2:递归删除整个目录 /home/bbb:rm -r /home/bbb(删除整个目录,但每删其中的一个文件都会提示)

使用细节:

强制删除不提示的方法:带上-f参数即可

mv指令

mv移动文件与目录或重命名

基本语法

mv oldNameFile newNameFile (功能描述:重命名)

mv /temp/movefile /targetFolder(功能描述:移动文件)

注意:

1.重命名是在同一个目录下

2.移动是在不同的目录下

案例1:将/home/cat.txt文件重新命名为pig.txt:在/home目录下,mv cat.txt pig.txt

案例2:将/home/pig.txt文件移动到/root目录下:在home目录下,mv cat.txt /root

案例3:移动整个目录,比如将/opt/bbb移动到/home下,并重命名为uuu:mv /opt/bbb /home/uuu(/home目录下本来没有/uuu目录)

注意:

对案例3,如果/home目录下本来有/uuu目录,则mv /opt/bbb /home/uuu命令会把/bbb目录移到/home/uuu目录下

cat指令

cat查看文件内容(与vim的区别是,cat只能查看,不能修改,更安全)

基本语法:cat [选项] 要查看的文件

常用选项
-n:显示行号

案例1:/etc/profile 文件内容,并显示行号:cat -n /etc/profile

使用细节

cat只能浏览文件,而不能修改文件,为了浏览方便,一般会带上 管道命令:| more

补充:管道命令有点类似于,将前面的结果,再交给下一个指令进行处理,管道命令就是一个竖杠,再带一个其他命令

more指令

more指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more指令中内置了若干快捷键(交互的指令),详见操作说明

基本语法:more要查看的文件

操作说明,如图

image-20230712160719325

less指令

less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。

基本语法:less 要查看的文件

操作说明

image-20230712161125766

echo指令

echo输出内容到控制台

基本语法:echo [选项] [输出内容]

案例1:使用echo指令输出环境变量,比如输出环境变量$PATH:echo $PATH ;输出主机名$HOSTNAME: echo $HOSTNAME

案例2:使用echo指令输出hello,world!:echo “hello,world~“(引号可加可不加)

head指令

head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容

基本语法

head 文件(功能描述:查看文件头10行内容)

head -n 5 文件 (功能描述:查看文件头5行内容,5可以是任意行数)

案例:查看/etc/profile的前面5行代码:head -n 5 /etc/profile(去掉-n 5,默认看前10行)

注意:空行也算一行

tail指令

tail用于输出文件中尾部的内容,默认情况下tail指令显示文件的前10行内容。

基本语法

1.tail 文件 (功能描述:查看文件尾10行内容)

2.tail -n 5 文件 (功能描述:查看文件尾5行内容,5可以是任意行数)

3.tail -f 文件 (功能描述:实时追踪该文档的所有更新)

案例1:查看/etc/profile最后5行的代码:tail -n 5 /etc/profile

案例2:实时监控mydate.txt,看看当该文件有变化时,是否看到,实时追加hello,world

>指令和>>指令

>输出重定向和>>追加

基本语法

1.ls -l >文件 (功能描述:列表的内容写入文件a.txt中(覆盖写))

2.ls -al >>文件 (功能描述:列表的内容追加到文件aa.txt的末尾)

3.cat 文件1>文件2 (功能描述:将文件1的内容覆盖到文件2的内容)

4.echo ’内容‘ >> 文件 (功能描述:将内容追加到文件中)

案例1:将/home目录下的文件列表写入/home/info.txt中,覆盖写入:ls -l /home > /home/info.txt(如果没有info.txt,则会创建)

案例2:将当前日历信息追加到/home/mycal文件中:cal >> /home/mycal

ln指令

软链接也称为符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径

基本语法:ln -s [原文件或目录] [软链接名] (功能描述:给原文件创建一个软链接)

案例1:在/home目录下创建一个软链接myroot,连接到/root目录:ln -s /root /home/myroot

案例2:删除软连接myroot:rm /home/myroot(会提示是否删除符号链接)

注意:

如果rm /home/myroot/,会提示无法删除/home/myroot/,是一个目录

细节说明

当我们使用pwd指令查看目录时,仍然看到的是软链接所在目录

history指令

查看已经执行过的历史指令,也可以执行历史指令

基本语法:history(功能描述:查看已经执行过的历史命令)

案例1:显示所有的历史命令:history

案例2:显示最近使用过的10个指令:history 10

案例3:执行历史编号为5的指令:!5 (可以输入负数,表示倒数的指令)


时间日期类

date指令-显示当前日期

基本语法

1.date (功能描述:显示当前时间)

2.date “+%Y” (功能描述:显示当前年份)

3.date “+%m” (功能描述:显示当前月份)

4.date “+%d”(功能描述:显示当前是哪一天)

5.date “+%Y-%m-%d %H:%M:%S”(功能描述:显示年月日时分秒)

案例1:显示当前时间信息:date (2023年 01月 06日 星期五 09:58:54 CST)

案例2:显示当前时间年月日:date “+%Y-%m-%d”

案例3:显示当前时间年月日时分秒:date “+%Y-%m-%d %H:%M:%S”

date指令-设置日期

基本语法:date -s 字符串时间

案例1:设置系统当前时间,比如设置成2021-11-11 11:22:22:date -s “2021-11-11 11:22:22”

cal指令

查看日历指令

基本语法:cal [选项] (功能描述:不加选项,显示本月日历)

案例1:显示当前日历:cal

案例2:显示2020年日历:cal 2020

搜索查找类

find指令

find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。

基本语法:find [搜索范围] [选项]

选项说明
-name <查询方式> 按照指定的文件名查找模式查找文件

-user <用户名> 查找属于指定用户名所有文件

-size <文件大小> 按照指定的文件大小查找文件

案例1:按文件名:根据名称查找/home目录下的hello.txt文件:find /home -name hello.txt(没找到就没有信息)

案例2:按拥有者:查找/opt目录下,用户名称为nobody的文件:find /opt -user nobody

案例3:查找整个linux系统下大于200M的文件(+n大于 -n小于 n等于,单位有k,M,G):find / -size +200M

补充:ls -lh,h表示人可以看清楚的形式展示,此时显示的文件大小会自动转化为人可以看明白的xx M

locate指令

locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻。

基本语法:locate 搜索文件

由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库

案例1:请使用locate指令快速定位hello.txt文件所在目录

1
2
updatedb
locate hello.txt

which指令,可以查看某个指令在哪个目录下,比如ls指令在哪个目录:which ls

指令和管道符号|

grep过滤查找,管道符,“|”,表示将前一个命令的处理结果传递给后面的命令处理

基本语法:grep [选项] 查找内容 源文件

常用选项

-n 显示匹配行及行号

-i 忽略字母大小写

案例1:请在hello.txt文件中,查找’yes‘所在行,并显示行号

方法1:cat /home/hello.txt | grep -n ’yes‘

方法2:grep -n ’yes‘ /home/hello.txt


压缩和解压类

gzip/gunzip指令

gzip用于压缩文件,gunzip用于解压的

基本语法

gzip文件 (功能描述:压缩文件,只能将文件压缩为*.gz文件)

gunzip文件.gz (功能描述:解压缩文件命令)

案例1:gzip压缩,将/home下的hello.txt文件进行压缩:gzip /home/hello.txt

案例2:gunzip压缩,将/home下的hello.txt.gz文件进行解压缩:gunzip /home/hello.txt.gz

zip/unzip指令

zip用于压缩文件(或目录),unzip用于解压的,这个在项目打包发布中很有用的

基本语法

zip [选项] xxx.zip 将要压缩的内容(功能描述:压缩文件和目录的命令)

unzip [选项] xxx.zip (功能描述:解压缩文件)

zip常用选项

-r:递归压缩,即压缩目录

unzip的常用选项

-d<目录>:指定解压后文件的存放目录

案例1:将/home下的所有文件进行压缩成myhome.zip:zip -r myhome.zip /home(将home目录及其包含的文件和子文件夹都压缩)

案例2:将myhome.zip解压到/opt/tmp目录下

1
2
mkdir /opt/tmp
unzip -d /opt/tmp /home/myhome.zip

tar指令

tar指令是打包指令,最后打包后的文件是.tar.gz的文件

基本语法

tar [选项] xxx.tar.gz 打包的内容 (功能描述:打包目录,压缩后的文件格式.tar.gz)
选项说明

选项 功能
-c 产生.tar打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
-x 解包.tar文件

案例1:压缩多个文件,将/home/pig.txt和/home/cat.txt压缩成pc.tar.gz:

tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt
(压缩时候在绝对路径下压缩,会把/home目录也压缩进去,在相对路径下压缩则不会这样)

案例2:将/home的文件夹压缩成myhome.tar.gz:

tar -zcvf myhome.tar.gz /home

案例3:将pc.tar.gz解压到当前目录tar -zxvf pc.tar.gz

案例4:将myhome.tar.gz解压到/opt/tmp2目录下

1
2
mkdir /opt/tmp2
tar -zxvf /home/myhome.tar.gz -C /opt/tmp2

注意:

1.-C 目标目录表示指定目标目录

2.任何压缩方法,被压缩文件路径最好使用相对路径,否则会自动压缩绝对路径多创文件夹

补充:打包解包是针对.tar文件而言的,.tar文件就是将多个文件合并成一个单文件,解压和压缩是针对.gz文件而言,-c是打包成.tar文件,-x是把.tar包解开,-z会根据带的x还是c来决定解压还是压缩

[目录或是文件]: