认识root用户(超级管理员)
root账号:超级管理员账户,在任何地方都有最高权限 其它账户: 是由root权限创建来的.只能在自己的家目录用更大的权限.
su和exit(切换/退出)
su - 用户名 : 切换到其它用. -加载环境变量 exit 登出当前用户. 可以使用ctrl + d 快捷键
在前面,我们接触过su命令切换到root账户。
su命令就是用于账户切换的系统命令,其来源英文单词:Switch User
语法:
- 符号是可选的,表示是否在切换用户后加载环境变量(后续讲解),建议带上
参数:用户名,表示要切换的用户,用户名也可以省略,省略表示切换到root
切换用户后,可以通过exit命令退回上一个用户,也可以使用快捷键:ctrl + d
使用普通用户,切换到其它用户需要输入密码,如切换到root用户
使用root用户切换到其它用户,无需密码,可以直接切换
切换管理员执行权sudo
sudo 命令 : 用管理员权限执行该命令. 注意: 在获得sudo认证的情况下可以使用.
root用户拥有最大的系统操作权限,而普通用户在许多地方的权限是受限的。
演示:
使用普通用户在根目录下创建文件夹
切换到root用户后,继续尝试
普通用户的权限,一般在其HOME目录内是不受限的
一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限
切换到root用户,执行visudo命令,会自动通过vi编辑器打开:/etc/sudoers 在文件的最后添加:
oracle ALL=(ALL) NOPASSWD: ALL
其中最后的NOPASSWD:ALL 表示使用sudo命令,无需输入密码
最后通过 wq 保存
切换回普通用户
sudo mkdir /test
执行的命令,均以root运行
用户和组管理
用户管理命令
groupadd 用户组名 创建组 cat /etc/group 查看用户组 getent group 查看用户组 groupdel 用户组名 删除用户组
以下命令需root用户执行
创建用户组
groupadd 用户组名
查看用户组
cat /etc/group
包含3份信息,组名称:组认证(显示为x):组ID
删除用户组
groupdel 用户组名
用户组grouphello已消失
修改用户组
chgrp 用户组名 指定文件或目录
用户组管理命令
以下命令需root用户执行 创建用户 useradd [-g -d] 用户名 选项:-g指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g 选项:-d指定用户HOME路径,不指定,HOME目录默认在:/home/用户名 删除用户 userdel [-r] 用户名 选项:-r,删除用户的HOME目录,不使用-r,删除用户时,HOME目录保留 查看用户所属组 id [用户名] 参数:用户名,被查看的用户,如果不提供则查看自身 添加用户到指定组 usermod -aG 用户组 用户名,将指定用户加入指定用户组
getent
使用getent命令,可以查看当前系统中有哪些用户 语法: getent passwd
共有7份信息,
分别是: 用户名:密码(x):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)
查看权限控制
通过ls -l 可以以列表形式查看内容,并显示权限细节
序号1,表示文件、文件夹的权限控制信息
序号2,表示文件、文件夹所属用户
序号3,表示文件、文件夹所属用户组
修改文件全新 chmod
字母法: chmod u=rwx,g=rwx,o=rwx 文件名 chmod -R u=rwx,g=rwx,o=rwx 目录名 chmod u-x,g+x 文件名 用户去掉x权限,用户组添加x权限 ------------------------------------------------ 数字法: chmod 777 文件名 7是4+2+1得来的.4表示可读,2表示可以写,1表示可以执行. 数字法底层基于二进制的8421编码(BCD)得来.
我们可以使用chmod命令,修改文件、文件夹的权限信息。
注意,只有文件、文件夹的所属用户或root用户可以修改。
语法:chmod [-R] 权限 文件或文件夹
选项:-R,对文件夹内的全部内容应用同样的操作
示例:
chmod u=rwx,g=rx,o=x a.txt ,将文件权限修改为:rwxr-x--x
其中:u表示user所属用户权限,g表示group组权限,o表示other其它用户权限
chmod -R u=rwx,g=rx,o=x aaa,将文件夹aaa以及文件夹内全部内容权限设置为:rwxr-x--x
除此之外,还有快捷写法:chmod 751 a.txt
将hello.txt的权限修改为751
那么问题来了,751表示什么意思呢?
权限可以用3位数字来代表,第一位数字表示用户权限,第二位表示用户组权限,第三位表示其它用户权限。 数字的细节如下:r记为4,w记为2,x记为1,可以有:
0:无任何权限, 即 ---
1:仅有x权限, 即 --x
2:仅有w权限 即 -w-
3:有w和x权限 即 -wx
4:仅有r权限 即 r--
5:有r和x权限 即 r-x
6:有r和w权限 即 rw-
7:有全部权限 即 rwx
所以751表示: rwx(7) r-x(5) --x(1)
修改文件所属 chown
chown 用户名:组名 文件名 chown -R 用户名:组名 目录名选项,-R,同chmod,对文件夹内全部内容应用相同规则选项,用户,修改所属用户选项,用户组,修改所属用户组:用于分隔用户和用户组
使用chown命令,可以修改文件、文件夹的所属用户和用户组
普通用户无法修改所属为其它用户或组,所以此命令只适用于root用户执行
语法:chown [-R] [用户] [:] [用户组] 文件或文件夹
选项,-R,同chmod,对文件夹内全部内容应用相同规则
选项,用户,修改所属用户
选项,用户组,修改所属用户组
:用于分隔用户和用户组
示例:
chown root a.txt,将hello.txt所属用户修改为root
chown :root a.txt,将hello.txt所属用户组修改为root
chown root :grouphello hello.txt,将hello.txt所属用户修改为root,用户组修改为grouphello
chown -R root test,将文件夹test的所属用户修改为root并对文件夹内全部内容应用同样规则
常用小技巧命令
ctrl + c 强制停止
Linux某些程序的运行,如果想要强制停止它,可以使用快捷键ctrl + c
命令输入错误,也可以通过快捷键ctrl + c,退出当前输入,重新输入
ctrl + d 退出或登出
可以通过快捷键:ctrl + d,退出账户的登录
或者退出某些特定程序的专属页面
ps:不能用于退出vi/vim
history
可以通过history命令,查看历史输入过的命令
!命令前缀
可以通过:!命令前缀,自动执行上一次匹配前缀的命令
ctrl + r
可以通过快捷键:ctrl + r,输入内容去匹配历史命令
如果搜索到的内容是你需要的,那么:
回车键可以直接执行
键盘左右键,可以得到此命令(不执行)
光标移动快捷键
清屏
通过快捷键ctrl + l,可以清空终端内容
或通过命令clear得到同样效果
软件安装
配置yum 镜像源:
1.修改原有的yum仓库文件. 进入操作目录: cd /etc/yum.repos.d mv CentOS-Base.repo CentOS-Base.repo.bak 2.下载阿里云的镜像文件 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo 3.情况缓存yum clean all 4.建立新的缓存yum makecache
使用yum下载安装软件
yum -y install 软件 下载软件 yum -y remove 软件 卸载软件 yum serach 软件 查找软件 yum -y install wget 安装wget工具 yum -y install tree 安装tree工具
systemctl系统控制
systemctl start | stop | status | enable | disable 服务名称start 启动stop 关闭status 查看状态enable 开启开机自启disable 关闭开机自启 systemctl stop firewalld 关闭linux的防火墙 systemctl disable firewalld 禁用linux的防火墙 systemctl status firewalld 查看linux的防火墙状态
软连接 ln
语法:ln -s 绝对路径 连接到的目的地路径 -s选项,创建软连接 参数1:被链接的文件或文件夹 参数2:要链接去的目的地 实例: ln -s /mnt/aaa/bbb/a.txt /a.txt
日期、时区
date -d[操作的时间] [格式化字符串]
date -d"+n day" "+%Y-%m-%d %H:%M:%S"
操作的时间:
year年
month月
day天
hour小时
minute分钟
second秒
格式化时间:
%Y 年
%y 年份后两位数字 (00..99)
%m 月份 (01..12)
%d 日 (01..31)
%H 小时 (00..23)
%M 分钟 (00..59)
%S 秒 (00..60)
%s 自 1970-01-01 00:00:00 UTC 到现在的秒数
安装时间校准服务器ntp
yum -y install ntp
systemctl start ntpd
systemctl enable ntpd
在指定时间会自动校准.
手动校准时间:ntpdate -u ntp.aliyun.com
设置时区:timedatectl set-timezone Asia/Shanghai utc+8 东八区
使用date命令本体,无选项,直接查看时间
可以看到这个格式非常的不习惯。我们可以通过格式化字符串自定义显示格式
按照2022-01-01的格式显示日期
按照2022-01-01 10:00:00的格式显示日期
如上,由于中间带有空格,所以使用双引号包围格式化字符串,作为整体。
-d选项,可以按照给定的字符串显示日期,一般用于日期计算
其中支持的时间标记为:
year年 month月 day天 hour小时 minute分钟 second秒
-d选项可以和 格式化字符串配合一起使用哦
IP地址、主机名和域名
IP地址: IPv4 地址.表示互联网上一个唯一的网络设备.
查看IP :ifconfig
特殊IP: 127.0.0.1 表示访问本机地址
每一台联网的电脑都会有一个地址,用于和其它计算机进行通讯 IP地址主要有2个版本,V4版本和V6版本(V6很少用,课程暂不涉及) IPv4版本的地址格式是:a.b.c.d,其中abcd表示0~255的数字,如192.168.88.101就是一个标准的IP地址 可以通过命令:ifconfig,查看本机的ip地址,如无法使用ifconfig命令,可以安装:yum -y install net-tools
除了标准的IP地址以外,还有几个特殊的IP地址需要我们了解:
127.0.0.1,这个IP地址用于指代本机
127.0.0.1,特殊IP地址
可以用于指代本机
在一些IP地址限制中,表示所有IP的意思,如放行规则设置为0.0.0.0,表示允许任意IP访问
主机名: 电脑的唯一标识,表示电脑的硬件名称.
查看主机名: hostname
修改主机名: hostnamectl set-hostname 主机名
每一台电脑除了对外联络地址(IP地址)以外,也可以有一个名字,称之为主机名 无论是Windows或Linux系统,都可以给系统设置主机名
Linux系统主机名
可以使用命令:hostnamectl set-hostname 主机名,修改主机名(需root)
重新登录FinalShell即可看到主机名已经正确显示
域名: 表示一个IP地址的名字.可以在本地hosts文件映射.也可以在网上DNS服务器映射.
特殊域名: localhost 表示访问本机地址 .
DNS常用解析地址: 114.114.114.114 -- 国内的解析器(移动,电信,联动)
8.8.8.8 -- 全球解析器(google在维护)
IP地址实在是难以记忆,有没有什么办法可以通过主机名或替代的字符地址去代替数字化的IP地址呢?
实际上,我们一直都是通过字符化的地址去访问服务器,很少指定IP地址
比如,我们在浏览器内打开:www.baidu.com,会打开百度的网址 其中,www.baidu.com,是百度的网址,我们称之为:域名
不是说通过IP地址才能访问服务器吗?
为什么域名这一串好记的字符,也可以呢?
这一切,都是域名解析帮助我们解决的。
访问www.baidu.com的流程如下:
即:
先查看本机的记录(私人地址本)
Windows看:C:\Windows\System32\drivers\etc\hosts
Linux看:/etc/hosts
再联网去DNS服务器(如114.114.114.114,8.8.8.8等)询问
1. 什么是IP地址,有什么作用?
IP地址是联网计算机的网络地址,用于在网络中进行定位
格式是:a.b.c.d,其中abcd是0~255的数字
特殊IP有:127.0.0.1,本地回环IP,表示本机。 0.0.0.0:也可表示本机,也可以在一些白名单中表示任意IP
2. 什么是主机名?
主机名就是主机的名称,用于标识一个计算机
3. 什么是域名解析(主机名映射)
可以通过主机名找到对应计算机的IP地址,这就是主机名映射(域名解析) 先通过系统本地的记录去查找,如果找不到就联网去公开DNS服务器去查找
网络传输ping/wget/curl
可以通过ping命令,检查指定的网络服务器是否是可联通状态 语法: 选项:-c,检查的次数,不使用-c选项,将无限次数持续检查 参数:ip或主机名,被检查的服务器的ip地址或主机名地址
示例:
ping www.baidu.com 检查外网是否通畅 [一直检查可以ctrl+c结束]
ping -c 3 www.baidu.com 检查3次自动结束.
wget是非交互式的文件下载器,可以在命令行内下载网络文件
语法:wget [-b] url
选项:-b,可选,后台下载,会将日志写入到当前工作目录的wget-log文件
参数:url,下载链接
wget url地址 : 下载指定的文件
示例:
下载apache-hadoop 3.3.0版本:wget http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
在后台下载:wget -b http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
通过tail命令可以监控后台下载进度:tail -f wget-log
注意:无论下载是否完成,都会生成要下载的文件,如果下载未完成,请及时清理未完成的不可用文件。
curl url地址: 获取rul地址的内容
curl -O 下载地址: 下载文件
curl可以发送http网络请求,可用于:下载文件、获取信息等
语法:curl [-O] url
选项:-O(大写字母),用于下载文件,当url是下载链接时,可以使用此选项保存文件
参数:url,要发起请求的网络地址
示例:
向cip.cc发起网络请求:curl cip.cc
向www.baidu.com发起网络请求:curl www.baidu.com
通过curl下载hadoop-3.3.0安装包:
curl -O http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
1. 使用ping命令可以测试到某服务器是否可联通
语法:ping [-c num] ip或主机名
选项:-c,测试的次数
2. 使用wget命令可以进行网络文件下载
语法:wget [-b] url
选项:-b,后台下载
3. 使用curl命令可以发起网络请求
语法:curl [-O] url
选项:-O,用于下载使用
端口
端口,是设备与外界通讯交流的出入口。端口可以分为:物理端口和虚拟端口两类
物理端口:又可称之为接口,是可见的端口,如USB接口,RJ45网口,HDMI端口等
虚拟端口:是指计算机内部的端口,是不可见的,是用来操作系统和外部进行交互使用的
端口(虚拟)
物理端口我们日常生活中经常见到,也能知晓它的作用。 但是虚拟端口,有什么用?为什么需要它呢?
计算机程序之间的通讯,通过IP只能锁定计算机,但是无法锁定具体的程序。
通过端口可以锁定计算机上具体的程序,确保程序之间进行沟通
IP地址相当于小区地址,在小区内可以有许多住户(程序),而门牌号(端口)就是各个住户(程序)的联系地址
端口
Linux系统是一个超大号小区,可以支持65535个端口,这6万多个端口分为3类进行使用:
公认端口:1~1023,通常用于一些系统内置或知名程序的预留使用,如SSH服务的22端口,HTTPS服务的443端口 非特殊需要,不要占用这个范围的端口
注册端口:1024~49151,通常可以随意使用,用于松散的绑定一些程序\服务
动态端口:49152~65535,通常不会固定绑定程序,而是当程序对外进行网络链接时,用于临时使用。
如图中,计算机A的微信连接计算机B的微信,A使用的50001即动态端口,临时找一个端口作为出口 计算机B的微信使用端口5678,即注册端口,长期绑定此端口等待别人连接
PS:上述微信的端口仅为演示,具体微信的端口使用非图中示意
查看端口占用
可以通过Linux命令去查看端口的占用情况
使用nmap命令,安装nmap:yum -y install nmap
语法:nmap 被查看的IP地址
可以看到,本机(127.0.0.1)上有5个端口现在被程序占用了。
其中:
22端口,一般是SSH服务使用,即FinalShell远程连接Linux所使用的端口
可以通过netstat命令,查看指定端口的占用情况
语法:netstat -anp | grep 端口号,安装netstat:yum -y install net-tools
如图,可以看到当前系统682端口被程序(进程号932)占用了
其中,0.0.0.0:682,表示端口绑定在0.0.0.0这个IP地址上,表示允许外部访问
可以看到,当前系统12345端口,无人使用哦。
1.什么是端口?
端口是指计算机和外部交互的出入口,可以分为物理端口和虚拟端口
物理端口:USB、HDMI、DP、VGA、RJ45等
虚拟端口:操作系统和外部交互的出入口
IP只能确定计算机,通过端口才能锁定要交互的程序
2. 端口的划分
公认端口:1~1023,用于系统内置或常用知名软件绑定使用
注册端口:1024~49151,用于松散绑定使用(用户自定义)
动态端口:49152~65535,用于临时使用(多用于出口)
3. 查看端口占用
nmap IP地址,查看指定IP的对外暴露端口
netstat -anp | grep 端口号,查看本机指定端口号的占用情况
进程管理ps/kill
ps -ef : 列出当前系统正在运行的进程(一个程序就是一个进程)
如果进程过多可以通过管道交给grep搜索:
ps -ef | grep ssh
-----------------------
kill -9 进程id : 根据进程id杀死该进程(强制关闭程序)
程序运行在操作系统中,是被操作系统所管理的。 为管理运行的程序,每一个程序在运行的时候,便被操作系统注册为系统中的一个:进程 并会为每一个进程都分配一个独有的:进程ID(进程号)
windown的进程
Linux的进程
可以通过ps命令查看Linux系统中的进程信息
语法:ps [-e -f]
选项:-e,显示出全部的进程
选项:-f,以完全格式化的形式展示信息(展示全部信息)
一般来说,固定用法就是: ps -ef 列出全部进程的全部信息
从左到右分别是:
UID:进程所属的用户ID
PID:进程的进程号ID
PPID:进程的父ID(启动此进程的其它进程)
C:此进程的CPU占用率(百分比)
STIME:进程的启动时间
TTY:启动此进程的终端序号,如显示?,表示非终端启动
TIME:进程占用CPU的时间
CMD:进程对应的名称或启动路径或启动命令
查看指定进程
在CRT/FinalShell中,执行命令:tail,可以看到,此命令一直阻塞在那里
在CRT/FinalShell中,复制一个标签页,执行:ps -ef 找出tail这个程序的进程信息
问题:是否会发现,列出的信息太多,无法准确的找到或很麻烦怎么办?
我们可以使用管道符配合grep来进行过滤,如:
ps -ef | grep tail,即可准确的找到tail命令的信息
过滤不仅仅过滤名称,进程号,用户ID等等,都可以被grep过滤哦
如:ps -ef | grep 30001,过滤带有30001关键字的进程信息(一般指代过滤30001进程号)
关闭进程
在Windows系统中,可以通过任务管理器选择进程后,点击结束进程从而关闭它。
同样,在Linux中,可以通过kill命令关闭进程。
语法:kill [-9] 进程ID
选项:-9,表示强制关闭进程。不使用此选项会向进程发送信号要求其关闭,但是否关闭看进程自身的处理机制。
1. 什么是进程?
进程是指程序在操作系统内运行后被注册为系统内的一个进程,并拥有独立的进程
ID(进程号)
2. 管理进程的命令
ps -ef 查看进程信息
ps -ef | grep 关键字 过滤指定关键字进程信息
kill [-9] 进程号 关闭指定进程号的进程
主机磁盘状态 df
df -h : 列出磁盘占用情况
使用df命令,可以查看硬盘的使用情况
语法:df [-h]
选项:-h,以更加人性化的单位显示
环境变量
获取环境变量: $环境名称 或者 ${环境变量名称} 设置环境变量: 用户环境:~/.bashrc文件中 系统环境:/etc/profile文件中 修改方式: export 变量名=变量值 读取环境变量使其立刻生效: source ~/.bashrc source /etc/profile
在讲解which命令的时候,我们知道使用的一系列命令其实本质上就是一个个的可执行程序。
比如,cd命令的本体就是:/usr/bin/cd 这个程序文件。
我们是否会有疑问,为何无论当前工作目录在哪里,都能执行:/usr/bin/cd这个程序呢?
这就是环境变量的作用啦。
环境变量是操作系统(Windows、Linux、Mac)在运行的时候,记录的一些关键性信息,用以辅助系统运行。
在Linux系统中执行:env命令即可查看当前系统中记录的环境变量
环境变量是一种KeyValue型结构,即名称和值,如下图:
如图,图中记录了:
HOME:/home/itheima,用户的HOME路径
USER:itheima,当前的操作用户
PWD:当前工作路径 ......
等等一系列信息,用于辅助系统在运行的时候 从环境变量中获取关键信息
环境变量:PATH
在前面提出的问题中,我们说无论当前工作目录是什么,都能执行/usr/bin/cd这个程序,这个就是借助环境变量中:
PATH这个项目的值来做到的。
PATH记录了系统执行任何命令的搜索路径,如上图记录了(路径之间以:隔开):
/home/app/oracle/product/11.2.0/db_1/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/usr/java/jdk1.8.0_65/bin
/root/bin
当执行任何命令,都会按照顺序,从上述路径中搜索要执行的程序的本体
比如执行cd命令,就从第五个目录/usr/bin中搜索到了cd命令,并执行
$符号
在Linux系统中,$符号被用于取”变量”的值。
环境变量记录的信息,除了给操作系统自己使用外,如果我们想要取用,也可以使用。
取得环境变量的值就可以通过语法:$环境变量名 来取得
比如: echo $PATH
就可以取得PATH这个环境变量的值,并通过echo语句输出出来。
又或者:echo ${PATH}ABC
当和其它内容混合在一起的时候,可以通过{}来标注取的变量是谁
Linux环境变量可以用户自行设置,其中分为:
临时设置,语法:export 变量名=变量值
永久生效
针对当前用户生效,配置在当前用户的: ~/.bashrc文件中
针对所有用户生效,配置在系统的: /etc/profile文件中
并通过语法:source 配置文件,进行立刻生效,或重新登录FinalShell生效
1. 什么是环境变量?
环境变量是一组信息记录,类型是KeyValue型(名称=值),用于操作系统运行的时候记录关键信息
2. 通过env命令可以查看当前系统配置的环境变量信息
3. 通过$符号,可以取出环境变量的值
4. 什么是PATH,作用是?
环境变量PATH会记录一组目录,目录之间用:隔开。这里记录的是命令的搜索路径,当执行命令会从记录中记录的目录中挨个搜索要执行的命令并执行。 可以通过修改这个项目的值,加入自定义的命令搜索路径
如export PATH=$PATH:自定义路径
5. 如何修改环境变量?
临时生效:export 名称=值
永久生效:
针对用户:~/.bashrc文件中配置
针对全部用户:/etc/profile文件中配置
配置完成,可以通过source命令立刻生效
上传、下载
使用rz(上传)和sz(下载)命令: 先下载lrzsz程序: yum -y install lrzsz 上传: rz 会弹出windows文件选择目录.点击选中后上传到linux当前目录(在哪敲) 下载: sz linux文件名 : 会下载到windows桌面上.
我们可以通过FinalShell工具,方便的和虚拟机进行数据交换。
在FinalShell软件的下方窗体中,提供了Linux的文件系统视图,可以方便的:
浏览文件系统,找到合适的文件,右键点击下载,即可传输到本地电脑
浏览文件系统,找到合适的目录,将本地电脑的文件拓展进入,即可方便的上传数据到Linux中
rz、sz命令
当然,除了通过FinalShell的下方窗体进行文件的传输以外,也可以通过rz、sz命令进行文件传输。
rz、sz命令需要安装,可以通过:yum -y install lrzsz,即可安装。
rz命令,进行上传,语法:直接输入rz即可
sz命令进行下载,语法:sz 要下载的文件
文件会自动下载到用户的:下载文件夹中。
注意,rz、sz命令需要终端软件支持才可正常运行
FinalShell、SecureCRT、XShell等常用终端软件均支持此操作
压缩和解压
tar -cvf 压缩文件名.tar 被压缩的文件1 文件2 文件... : 打包不压缩 [了解] tar -xvf 压缩文件名.tar [-C 解压到的路径] :解压.tar文件 [了解] -------------------------------------------------------------------- tar -zcvf 压缩文件名.tar.gz 被压缩的文件1 文件2 文件... : 打包又压缩 tar -zxvf 压缩文件名.tar.gz [-C 解压到的路径] :解压.tar.gz文件 ------------------------------------------------------------------- zip 压缩文件名.zip 被压缩的文件1 文件2 文件... :压缩 unzip 压缩文件名.zip -d 解压到的路径 :解压缩
压缩格式
市面上有非常多的压缩格式 zip格式:
Linux、Windows、MacOS,常用
7zip:Windows系统常用
rar:Windows系统常用
tar:Linux、MacOS常用
gzip:Linux、MacOS常用
在Windows系统中常用的软件如:winrar、bandizip等软件,都支持各类常见的压缩格式,这里不多做讨论。
我们现在要学习,如何在Linux系统中操作:tar、gzip、zip这三种压缩格式
完成文件的压缩、解压操作。
tar命令
Linux和Mac系统常用有2种压缩格式,后缀名分别是:
.tar,称之为tarball,归档文件,即简单的将文件组装到一个.tar的文件内,并没有太多文件体积的减少,仅仅是简单的封装
.gz,也常见为.tar.gz,gzip格式压缩文件,即使用gzip压缩算法将文件压缩到一个文件内,可以极大的减少压缩后的体积
针对这两种格式,使用tar命令均可以进行压缩和解压缩的操作
语法:tar [-c -v -x -f -z -C] 参数1 参数2 ... 参数N
-c,创建压缩文件,用于压缩模式
-v,显示压缩、解压过程,用于查看进度
-x,解压模式
-f,要创建的文件,或要解压的文件,
-f选项必须在所有选项中位置处于最后一个
-z,gzip模式,不使用-z就是普通的tarball格式
-C,选择解压的目的地,用于解压模式
tar 命令压缩
tar的常用组合为:
tar -cvf test.tar 1.txt 2.txt 3.txt
将1.txt 2.txt 3.txt 压缩到test.tar文件内
tar -zcvf test.tar.gz 1.txt 2.txt 3.txt
将1.txt 2.txt 3.txt 压缩到test.tar.gz文件内,使用gzip模式
注意:
-z选项如果使用的话,一般处于选项位第一个
-f选项,必须在选项位最后一个
tar 解压
常用的tar解压组合有
tar -xvf test.tar
解压test.tar,将文件解压至当前目录
tar -xvf test.tar -C /home/software
解压test.tar,将文件解压至指定目录(/home/software)
tar -zxvf test.tar.gz -C /home/software
以gzip模式解压test.tar.gz,将文件解压至指定目录(/home/software)
注意:
-f选项,必须在选项组合体的最后一位
-z选项,建议在开头位置
-C选项单独使用,和解压所需的其它参数分开
zip 命令压缩文件
可以使用zip命令,压缩文件为zip压缩包
语法:zip [-r] 参数1 参数2 .... 参数N
-r,被压缩的包含文件夹的时候,需要使用-r选项,和rm、cp等命令的-r效果一致
示例:
zip test.zip a.txt b.txt c.txt
将a.txt b.txt c.txt 压缩到test.zip文件内
zip -r test.zip test itheima a.txt
将test、itheima两个文件夹和a.txt文件,压缩到test.zip文件内
unzip 命令解压文件
使用unzip命令,可以方便的解压zip压缩包
语法:unzip [-d] 参数
-d,指定要解压去的位置,同tar的-C选项
参数,被解压的zip压缩包文件
示例:
unzip test.zip,将test.zip解压到当前目录
unzip test.zip -d /home/software,将test.zip解压到指定文件夹内(/home/software)
1. Linux系统常用的压缩格式有:
tar格式,归档文件,简单的将文件整合到一个文件内,无压缩效果
gzip格式,gzip压缩文件,不仅能整合到一个文件,同时有体积压缩效果
2. tar命令
tar [-z -x -v -c -f -C] 参数...
-c,创建压缩文件、-v,查看压缩\解压过程、-x,解压模式
-f,指定压缩\解压的文件,-z,gzip模式,-C,指定解压的路径
-z在选项组建议在开头,-f在选项组内必须在尾部,-C单独使用
3. zip命令
zip [-r] 压缩名 要压缩的文件名...
-r,压缩文件夹使用
4. unzip命令
unzip 压缩文件名 [-d] 解压路径
-d,指定解压去的目录