目录
压缩和解压缩
zip:既归档又压缩的工具,可以压缩目录
例如:
[root@localhost ~]# zip 11.zip 11.txt
adding: 11.txt (stored 0%)
格式&参数:
zip -9 zipname file
#最大压缩比的压缩
zip -r zipname directory
#-r: 压缩目录,将目录中的子目录及文件也一起压缩
zip -m zipname file:
#-m: 将文件加入到已压缩的压缩包中
zip zipname filelist -x file
#-x: 在压缩的时候将file排除在外,不压缩
unzip
unzip zipname -d directory
#-d:指定解压的目录
unzip -v zipname
#-v:查看压缩包中的内容,不解压
gzip和gunzip命令
例如:
[root@localhost test]# gzip test1.txt
[root@localhost test]# ls test1*
test1.txt.gz test1.zip
参数:-r 压缩过后,原文件删除
-c 压缩过后,原文件依然存在
bzip2和bunzip2命令
bzip2压缩,原文件压缩之后消失
示例&参数:
# bzip2 -z man.config //将man.config以bzip2压缩,此时man.config变成 man.config.bz2
# bzip2 -9 -c man.config > man.config.bz2 //将man.config用最佳的压缩比压缩,并保留原本的档案
# bzip2 -d man.config.bz2 //将man.config.bz2解压缩,可用bunzip2取代bzip2 -d
# bunzip2 man.config.bz2 //将man.config.bz2解压缩
xz、unxz命令
#压缩文件后,源文件消失
实例
1
:压缩文件
[root@localhost test]# xz test1.txt
[root@localhost test]# ls test1.txt.xz
test1.txt.xz
实例2:
[root@localhost test]# xz dir1/*
[root@localhost test]# ls dir1
fstab.xz test3.txt.xz test4.txt.xz test5.txt.xz
tar归档命令
tar归档又叫打包
格式:
tar [
选项
]
打包文件名
被打包的源文件或目录列表
tar [
选项
]
打包文件名
[-C
目标文件夹
]
选项:
选项 功能
c 创建.tar格式的包文件
x 释放.tar格式的包文件
t 查看包中的文件列表
v 表示在命令执行时显示详细的提示信息
f 用于指定包文件名。当与-c选项一起使用时,创建的tar包文件使用该选项指定的文件名;
当与-x选项一起使用时,则释放该选项指定的tar包文件。
p 打包时保留文件及目录的权限。
C 释放包时指定释放的目标的位置。
A 新增压缩文件到已存在的压缩,catenate
k 保留源文件
t 查看包中文件列表
z 调用gzip程序,以gzip格式压缩或解压缩文件。
j 调用bzip2程序,以bzip2格式压缩或解压缩文件。
J 使用xz压缩(.tar.xz)。xz的压缩率通常比bzip2更高。
tar
打包时排除:
--exclude=PATTERN 排除以 PATTERN 指定的文件
-X, --exclude-from=FILE 排除 FILE 中列出的模式串
文件上传下载
sftp命令
ssh+ftp
sftp类似于
ftp
传输协议,属于
ssh,
但它进行加密传输,相对
FTP
来讲有更高的安全性。
sftp root@192.168.233.131, sftp去登录进行文件传输
get: 获取,从远端获取到本地
put: 推送,从本地推送到远端
示例:
将
223.6.6.6
服务器文件下载到
223.5.5.5
的
home
目录
;
sftp> get /var/www/renwole.txt /home/
将
223.5.5.5
服务器文件上传到
223.6.6.6
服务器的
mnt
目录
;
sftp> put /home/renwole.txt /mnt/
scp命令
ssh+copy
scp
可以概括为:
scp -P
端口 文件路径 用户名
@
主机地址
:
远程目录
如果想拷贝本地文件到另外一台
ssh
终端,可以使用以下命令;
# scp /renwole/mariadb.tar.gz root@223.6.6.6:/renwole123/
root@223.6.6.6’s password:【输入密码回车】
mariadb.tar.gz 8% 37MB 1.3MB/s 05:29 ETA
如果你反过来操作,把远程主机的文件拷贝到当前系统,操作命令以下;
# scp root@223.6.6.6:/renwole123/mariadb.tar.gz /renwole
rz命令与sz命令
rz
命令(
Receive ZMODEM
),使用
ZMODEM
协议,将本地文件批量上传到远程
Linux/Unix
服务器,注意不能上传文件夹。
命令格式: rz [选项
]
选项:
-+, --append: 将文件内容追加到已存在的同名文件
-a,--ascii: 以文本方式传输
-b, --binary: 以二进制方式传输,推荐使用
--delay-startup N: 等待N秒
-e, --escape: 对所有控制字符转义,建议使用
-E, --rename: 已存在同名文件则重命名新上传的文件,以点和数字作为后缀
-p, --protect: 对ZMODEM协议有效,如果目标文件已存在则跳过 -
q, --quiet: 安静执行,不输出提示信息
-v, --verbose: 输出传输过程中的提示信息
-y, --overwrite: 存在同名文件则替换
-X, --xmodem: 使用XMODEM协议
--ymodem: 使用YMODEM协议
-Z, --zmodem: 使用ZMODEM协议
--version: 显示版本信息
--h, --help: 显示帮助信息
sz命令
sz
命令(
Send ZMODEM
)通过
ZMODEM
协议,可将多个文件从远程服务器下载到本地。注意不能下载文件夹,如果下载文件夹,请先打包再下载
格式:rz [选项
] [filelist]
选项与rz基本相同,参考上文或者--help查询
下载多个文件:
sz file1 file2 file3
sz
和
rz
命令在实际应用开发中非常实用,有时候我们会经常跑脚本统计数据,需要上传和下载一些大数据量的数据,这时候这两个命令就非常有用了
有的机器可能不能使用
rz/sz
命令,这个时候我们就需要安装
lrzsz
执行以下命令:
yum install lrzsz -y
环境变量
变量可分为两类:环境变量(全局变量)和普通变量(局部变量)
环境变量也可称为全局变量,可以在创建它们的
Shell
及其派生出来的任意子进程
Shell
中使用,环境变量又可分为自定义环境变量和 bash
内置的环境变量。
普通变量
也可称为局部变量,只能在创建它们的
Shell
函数或
Shell
脚本中使用,普通变量一般由开发者在开发脚本程序时创建
设置环境变量:
export 变量名=value
设置环境变量(永久生效)
用户:
[root@www ~]$ ls /root/.bashrc # 推荐再此文件中优先设置
/root/.bashrc
[root@www ~]$ ls /root/.bash_profile
/root/.bash_profile
全局:
[root@www ~]$ /etc/profile
[root@www ~]$ /etc/bashrc
[root@www ~]$ /etc/profile.d/
在登录
Linux
系统并启动一个
bash shell
时,默认情况下
bash
会在若干个文件中查找环境变量的设置, 这些文件可统称为系统环境文件,bash
检查的环境变量文件的情况取决于系统运行
Shell
的方式,系统 运行 Shell
的方式有
3
种
(
1
)通过系统用户登录后默认运行的
Shell
(
2
)非登录交互式运行
Shell
(
3
)执行脚本运行非交互式
She
普通变量
变量的赋值,一般有五种写法:
name=value
name1='value'
name2="value"
name3=`cmd`
name4=$(cmd)
命令别名
别名是
命令
的快捷方式。为那些需要经常执行,但需要很长时间输入的长
命令
创建快捷方式很有用。
格式:alias
别名
=’
原命令
-
选项
/
参数
’
查看设置的别名:
alias
删除别名:
unalias
别名
通配符
字符 含义
* 匹符配任意字
? 匹配单个字符
[] 匹配方括号中的任意一个,不能用于创建目录和文件
[^] 匹配方括号中的任意一个字符或数字后进行取反,等同于[! ],表示范围可以
用".."或"—”,用于查找和删除目录和文件,不用于创建目录和文件
[!] 匹配方括号中的任意一个字符或数字后进行取反, 等同于[^ ],表示范围可以
用".."或"—", 用于查找和删除目录和文件,不用于创建目录和文件
[?-?] 匹配方括号范围内任意一个,用于查询、删除,但不能用于创建目录和文件
{string,string} 匹配括号中的任意一个字符串,表示一个范围时,字符串之间个".."
引号的使用
符号 作用
无引号,
' 单引号,输出时,将单引号内的所有内容都原样输出,这称为强引用
" 双引号,输出双引号内的所有内容,如果内容中有变量,特殊转义符等,会先把变量,转移
符等解析出结果,然后再输出最终内容,这成为强引用
` 反引号,一般用于引用命令,执行的时候命令会被执行,与$()作用相同,
$() 与`作用相同
用户和组的分类
.Linux
下的用户可以分为三类:
超级用户
——
用户名为
root
,它具有一切权限,只有进行系统维护
(
例如:建立用户等
)
或其他必要情形下
才用超级用户登录,以避免系统出现安全问题。
系统用户(伪用户)
——
是
Linux
系统正常工作所必需的内建的用户。
主要是为了满足相应的系统进程对文件属主的要求而建立的,例如:
bin
、
daemon
、
adm
、
lp
等用户。
系统用户不能用来登录
.
普通用户
——
是为了让使用者能够使用
Linux
系统资源而建立的,我们的大多数用户属于此类。
Linux
中的组有以下三种:
基本组
(
私有组
)
:建立账户时
,
若没有指定账户所属的组
,
系统会建立一个和用户名相同的组
,
这个组就是基
本组
,
基本组只容纳一个用户。当把其他用户加入到该组中
,
则基本组就变成了附加组。
附加组
(
公有组
)
:可以容纳多个用户
,
组中的用户都具有组所拥有的权利。
系统组:一般加入一些系统用户。
每个用户都有一个
UID
数值
:
超级用户的
UID——0
系统用户的
UID——1
~
999
普通用户的
UID——
≥
1000
文件功能 文件名称
用户账号文件 /etc/passwd
用户密码文件 /etc/shadow
用户组账号文件 /etc/group
用户组密码文件 /etc/gshadow
用户账号文件——/etc/passwd
passwd
是一个文本文件,用于定义系统的用户账号,由于所有用户都对
passwd
有读权限,所以该文件
中只定义用户账号,而不保存口令。
每行由
7
个字段组成,字段之间用
“:”
分隔,其格式如下:
账号名称
:
密码
:UID:GID:
个人资料
:
主目录
:Shell
字段说明:
账号名称:用户登录
Linux
系统时使用的名称。
密码:以前是以加密格式保存密码的位置
,
现在密码保存在
/etc/shadow
文件中
,
此处只是密码占位符
“x”
或
“*”
。若为
“x”
,说明密码经过了
shadow
的保护
UID
:用户的标识,是一个数值,用它来区分不同的用户
GID
:用户所在基本组的标识,是一个数值,用它来区分不同的组,相同的组具有相同的
GID
。
个人资料:可以记录用户的完整姓名、地址、办公室电话、家庭电话等个人信息。
主目录:类似
Windows
的个人目录,通常是
/home/username
,这里
username
是用户名,用户执行
“cd
~
”
命令时当前目录会切换到个人主目录。
Shell
:定义用户登录后激活的
Shell
,默认是
Bash Shell
用户密码文件——/etc/shadow
每行定义了一个用户信息,行中各字段用
“:”
隔开
,
其格式如下:
登录名
:
加密口令
:
最后一次修改时间
:
最小时间间隔
:
最大时间间隔
:
警告时间
:
不活动时间
:
失效时间
:
标志
字段 含义
登录名 字面意思自己理解
加密口令 使用SHA-512/SHA-256/MD5算法加密后的密码,若为空,表示该用户无需密码即可登录,
若为“*”表示该账号不能用于登录系统,若为“!!”表示该账号密码已被锁定
最后一 最近一次更改密码的日期,以距离1970年1月1日的天数表示
次修改
时间
最小时 密码在多少天内不能被修改。默认值为0,表示不限制
间间隔
最大时 密码在多少天后必须被修改。默认值为99999,表示不进行限制
间间隔
警告时间 提前多少天警告用户密码将过期,默认值为7天,0表示不提供警告
不活动 密码过期多少天后禁用此用户
时间
失效时 密码失效日期,以距离1970年1月1日的天数表示,默认为空,表示永久可用
间
标志 保留未用,以便以后发展之用
用户组账号文件——/etc/group
系统中的每一个文件都有一个用户和一个组的属主。使用
“ls –l”
命令可以看到每一个文件的属主和组。 系统中的每个组,在/etc/group
文件中有一行记录
字段说明
字段 说明
Groupname 组的名字
Passwd 组的加密口令
GID 是系统区分不同组的ID,在/etc/passwd域中的GID字段是用这个数来指定用户的基本组
Userlist 是用“,”分开的用户名,列出的是附加组的成员。
用户管理
1、useradd
添加新用户
命令格式:
useradd [
选项
]
常用选项:
-c 注释信息——设定与用户相关的说明信息(如,真实姓名、邮箱地址等)。
-d 目录——设定用户的家目录(默认为/home/用户名)。
-e YYYY-MM-DD——设置用户的失效日期,此日期后将不能使用该账号。
-f 天数——指定密码到期后多少天账号被禁用,若指定为0,则表示账号到期后被立即禁用;若指定为-1,则表
示账号过期后不被禁用(即密码永不过期)。
-g 组名或GID号——为用户指定所属的基本组,该组在指定时必须已存在。
-G 组名或GID号列表——为用户指定所属的附加组,各组在指定时已存在,附加组可以有多个,组之间用“,”
分隔。
-M 不创建用户家目录。
-N 不创建与用户名同名的基本组。
-p 密码——指定用户的登录密码。
-s shell名——指定用户登录后使用的Shell,默认是bash。
-u 用户号——设置账号的UID,默认是已有用户的最大UID加1。如果同时有-o选项,则可以重复使用其他
用户的标识号。
示例
[root@localhost ~]
# useradd zhang3
[root@localhost ~]
# tail -1 /etc/passwd
zhang3:x:1001:1001::/home/zhang3:/bin/bash
为用户账号设置密码——passwd命令
Linux的账户必须设置密码后,才能登录系统
命令格式:
passwd [
账户名
]
常用选项:
-d 清空指定用户的口令。这与未设置口令的账户不同,未设置口令的账户无法登录系统,而口令为空的
账户可以。
-f 强迫用户下次登录时必须修改口令。
-i 口令过期后多少天停用账户。
-l 锁定(停用)用户账户。
-n 指定口令的最短存活期。
-S 显示账户口令的简短状态信息(是否被锁定)。
-u 解锁用户账户。
修改用户属性——usermod命令
命令格式:
usermod [
选项
] username
常用选项:
-c:改个人信息
-d:改用户家目录
-m:移动家目录
-g:改gid(基本组)
-G:改gid(附加组)
-u:改uid
-s:修改shell类型
-o:可以修改用户id为不唯一的值
-l:newlogin,改变用户登录名,且在不登录的情况下才可以更改
-L:lock,锁定用户
-U:unlock,解锁用户
删除用户账号——userdel命令
命令格式:
userdel [-r]
账户名
-r 在删除该账户的同时,一并删除该账户对应的主目录。
用户间切换——su(substitute user)命令
命令格式:su [用户名
]
从root用户切换到任何用户不需要密码验证
,
而从普通用户到
root
或其他普通用户均需要输入目标用户的密码且验证成功后才可切换。
控制用户对系统命令的使用权限--sudo命令
sudo:
控制用户对系统命令的使用权限
,root
允许的操作。通过
sudo
可以提高普通用户的操作权限,不过
这个权限是需要进行配置才可使用。
用户组管理
创建用户组——groupadd命令
命令格式:
groupadd [-r]
用户组名称
-g GID——
指定新用户组的组标识号
(GID),
默认值是已有的最大的
GID
加
1
。
-r——
建立一个系统组账号
,
与
-g
不同时使用时
,
则分配一个
1
~
999
的
GID
。
创建组:
[root@rhcsa ~]# groupadd testgroup
添加/删除组成员——gpasswd命令
命令格式:
gpasswd [
选项
] [
用户
] [
组
]
[root@rhcsa ~]# gpasswd -a testuser1 testgroup2
Adding user testuser1 to group testgroup2
-a——
把用户加入组
-d——
把用户从组中删除。
-M——
可同时添加多个用户
-A——
给组指派管理员
修改用户组属性——groupmod命令
命令格式:
groupmod
选项
用户组
常用选项:
-g GID——为用户组指定新的组标识号。
-n 新用户组——将用户组的名字改为新名字修改用户组的名称和用户组的GID值。
示例:将组group1的GID修改为2000,组名修改为group11
删除组账户——groupdel命令
命令格式:
groupdel
用户组名
[root@rhcsa ~]# gpasswd -d testuser1 testgroup2
Removing user testuser1 from group testgroup2
用户和组账户的信息显示
命令格式 作用
users|w|who 显示当前用户信息(三条命令)
id [用户名] 显示当前用户或指定用户的ID,以及所属组的ID
groups [用户名] 显示当前用户或指定用户所属组账号的信息