目录
第四天
4.1 压缩和解压缩
4.1.1 zip和unzip命令
zip: 既归档又压缩的工具,可以压缩目录.
zip FILE
unzip FILE
unzip -d FILE +路径
素材准备:
[root@localhost ~]# mkdir /test
[root@localhost ~]# cd /test
[root@localhost test]# for i in {1..5};do echo "test$i" > test$i.txt;done
[root@localhost test]# ls
test1.txt test2.txt test3.txt test4.txt test5.txt [root@localhost test]# mkdir dir1
[root@localhost test]# cp /etc/fstab dir1/
实例: 使用zip压缩文件test1.txt
[root@localhost test]# zip test1.zip test1.txt
adding: test1.txt (stored 0%)
[root@localhost test]# ls test1*
test1.txt test1.zip
4.1.2 gzip和gunzip命令
gzip(gnu zip)命令
实例1: 使用gzip压缩文件
[root@localhost test]# gzip test1.txt
[root@localhost test]# ls test1*
test1.txt.gz test1.zip
实例2: 使用gzip压缩目录下文件
[root@localhost test]# gzip -r dir1/
[root@localhost test]# ls dir1
fstab.gz test3.txt.gz test4.txt.gz test5.txt.gz
#注意: 以上压缩之后原始文件就没有了.
实例3: 压缩但保留原始文件
[root@localhost test]# gzip -c test2.txt > test2.txt.gz
[root@localhost test]# ls test2*
test2.txt test2.txt.gz test2.zip
4.1.3 bzip2、bunzip2命令
bzip2、bunzip2是更新的Linux压缩工具,比gzip有着更高的压缩率。
1.bzip2命令
2.bunzip2命令
bzip2、bunzip2示例如下:
# 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解压缩
4.1.4 xz、unxz命令
实例1:压缩文件
[root@localhost test]# xz test1.txt
[root@localhost test]# ls test1.txt.xz
test1.txt.xz
实例2:压缩dir1目录下文件
[root@localhost test]# xz dir1/*
[root@localhost test]# ls dir1
fstab.xz test3.txt.xz test4.txt.xz test5.txt.xz
实例3:查看压缩文件内容
[root@localhost test]# xzcat test1.txt.xz
test1
实例4:解压缩
[root@localhost test]# unxz test1.txt.xz
实例5:解压缩目录dir1下文件
[root@localhost test]# xz -d dir1/*
[root@localhost test]# ls dir1
fstab test3.txt test4.txt test5.txt
#注意:xz -d等价于unxz
4.2 tar归档命令
格式:tar [选项] 打包文件名 被打包的源文件或目录列表
tar [选项] 打包文件名 [-C 目标文件夹]
常用选项:
1. 创建(非压缩的)包文件 命令:tar cvf 包文件名 要打包的目录或文件名列表 功能:将指定的一个或多个文件或目录备份生成为一个指定的包文件。
2. 创建带压缩的包文件 为节省存储空间,通常需要生成压缩格式的tar包文件,tar命令支持三种不同的压缩方式: 命令:tar c[z j|J] f 压缩包文件名 要备份的目录或文件名
3. 列出包文件中的文件列表 命令:tar t[v]f 包文件名
4. 提取包文件到指定目录 格式:tar x [z j|J] [v]f 包文件名 [ -C 目标位置] tar打包时排除:
--exclude=PATTERN 排除以 PATTERN 指定的文件
-X, --exclude-from=FILE 排除 FILE 中列出的模式串
4.3 文件上传下载
sftp是一个交互式文件传输程式
它类似于ftp传输协议,属于ssh, 但它进行加密传输,相对FTP来讲有更高的安全性。
sftp用法:如果有服务器的端口不是默认的22,请在sftp后面加-P端口号即可;
# sftp root@223.6.6.6
将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/sftp> ls //和查看本地操作命令一样
sftp> pwd //查询223.6.6.6的当前工作目录
scp具有和ssh一样的验证机制,从而可以实现2台机器安全的远程拷贝文件
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
rz命令与sz命令
1.rz命令
rz命令(Receive ZMODEM),使用ZMODEM协议,将本地文件批量上传到远程Linux/Unix服务器,注 意不能上传文件夹。
当我们使用虚拟终端软件,如Xshell、SecureCRT或PuTTY来连接远程服务器后,使用rz命令可以上传本 地文件到远程服务器。输入rz回车后,会出现文件选择对话框,选择需要上传文件,一次可以指定多个 文件,上传到服务器的路径为当前执行rz命令的目录。
此外,可以在虚拟终端软件设置上传时默认加载的本地路径和下载的路径。如SecureCRT软件 -> Options -> session options -> X/Y/Zmodem 下可以设置上传和下载的目录。
命令格式:
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:显示帮助信息
2.sz命令
2.1sz命令(Send ZMODEM)通过ZMODEM协议,可将多个文件从远程服务器下载到本地。注意不能 下载文件夹,如果下载文件夹,请先打包再下载
2.2格式:
rz [选项] [filelist]
命令选项基本与rz相同,请参考上文rz的命令选项或者sz的manual,或者运行命令sz -h查看。
2.3常用示例
2.3.1 下载多个文件
sz file1 file2 file3
sz和rz命令在实际应用开发中非常实用,有时候我们会经常跑脚本统计数据,需要上传和下载一些大数 据量的数据,这时候这两个命令就非常有用了
有的机器可能不能使用 rz/sz 命令,这个时候我们就需要安装 lrzsz
执行以下命令:
yum install lrzsz -y
4.4 环境变量
变量可分为两类:环境变量(全局变量)和普通变量(局部变量)
环境变量也可称为全局变量,可以在创建它们的Shell 及其派生出来的任意子进程 Shell 中使用,环境变 量又可分为自定义环境变量和 bash 内置的环境变量。
普通变量也可称为局部变量,只能在创建它们的Shell函数或Shell脚本中使用,普通变量一般由开发者在 开发脚本程序时创建。
1.环境变量
环境变量一般是指用 export 内置命令导出的变量,用于定义 Shell 的运行环境,保证 Shell 命令的正确 执行,Shell 通过环境变量来确定登录用户名、命令路径、终端类型、登录目录等,所有的环境变量都是 系统全局变量,可用于所有子进程中,这包括编辑器、Shell 脚本和各类应用。
环境变量可以在命令行中设置和创建,但用户退出o命令时这些变量值就会丢失,因此,如果希望永久保 存环境变量,可在用户家目录下的 .bash_profile 或 .bashrc (非用户登录模式特有,例如远程 SSH)文件中,或者全局配置 /etc/bashrc (非用户登录模式特有,例如远程 SSH)或 /etc/profile;
文件中定义,在将环境变量放入上述的文件中后,每次用户登录时这些变量都将被初始化。
按照系统规范,所有环境变量的名字均采用大写形式,在将环境变量应用于用户进程程序之前,都应该 用 expirt 命令导出定义,例如:正确的环境变量定义方法为 exprot OLDGIRL=1
(1)设置环境变量
如果想要设置环境变量,就要在给变量赋值之后或在设置变量时使用 export 命令,另外,除了 export命令。带 -x 选项的 declare 内置命令也可以完成同样的功能(注意:此处不要再前面加 $)
export 命令和 declare 命令的格式如下:
export 变量名=value
变量名=value ; export 变量名
declare -x 变量名=value
(2)设置环境变量(永久生效)
用户的环境变量配置:
[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/
(3)用 env 或 set 显示默认的环境变量
[root@www ~]$ env
XDG_SESSION_ID=17
HOSTNAME=www.oliven.com
TERM=xterm
...
[root@www ~]$ set
BASH=/bin/bash
...
[root@www ~]$ declare | head
BASH=/bin/bash
...
(4)用 unset 消除本地变量和环境变量
[root@www ~]$ echo $USER
root
[root@www ~]$ unset USER
[root@www ~]$ echo $USER
[root@www ~]$
环境变量初始化与对应文件的生效顺序:
在登录Linux系统并启动一个 bash shell 时,默认情况下 bash 会在若干个文件中查找环境变量的设置, 这些文件可统称为系统环境文件,bash 检查的环境变量文件的情况取决于系统运行 Shell 的方式;
系统 运行 Shell 的方式有 3 种:
(1)通过系统用户登录后默认运行的 Shell
(2)非登录交互式运行 Shell
(3)执行脚本运行非交互式 Shell
4.5 命令别名(alias)
别名是命令的快捷方式。为那些需要经常执行,但需要很长时间输入的长命令创建快捷方式很有用。语法是:
alias 别名=’原命令 -选项/参数’
查看设置的别名:alias
删除别名:unalias 别名 别名永久化:
alias的作用仅在该次登入的操作,即输入一次alias后,这个修改只在当前的Shell生效。如果重新开启一 个 Shell,或者重新登录,则这些alias将无法使用。linux中提供alias永久化的方法:
<1>若要每次登入就自动生效别名,则把别名加在/etc/profile或~/.bashrc中。然后# source ~/.bashrc .
<2>若要让每一位用户都生效别名,则把别名加在/etc/bashrc最后面,然后# source /etc/bashrc
4.6 快捷键使用
history查阅命令历史记录
查询执行过的历史命令:
利用向上或向下光标键来进行查询。
第二种办法是执行“history [n]” 命令来查询。
history(选项)(参数)
选项: -N: 显示历史记录中最近的N个记录;
-c:清空当前历史命令;
-a:将历史命令缓冲区中命令写入历史命令文件中;
-r:将历史命令文件中的命令读入当前历史命令缓冲区;
-w:将当前历史命令缓冲区命令写入历史命令文件中; -d:删除历史记录中第offset个命令
-n:读取指定文件 参数: n:打印最近的n条历史命令。
# 使用! 执行历史命令。
# !number 执行第几条命令
!! #执行上一条命令 !?string? 执行含有string字符串的最新命令
注意:如想查询某个用户在系统上执行了什么命令,可以使用root用户身份登录系统,检查Home目录 下的用户主目录下的“.bash_history”文件,该文件记录了用户所使用的命令和历史信息。
快捷方式:
Ctrl+a 移动到当前行的开头
Ctrl+e 移动到当前行的结尾
Ctrl+l 清屏
Ctrl+u 剪切命令行中光标所在处之前的所有字符(不包括自身)
Ctrl+k 剪切命令行中光标所在处之后的所有字符(包括自身)
Ctrl+R 可以使用该快捷键来搜索历史命令 引用上一条命令的最后一个参数 方法1:!$
方法2:Alt+.
方法3:Esc,.
xshell中无法使用alt+.的处理方法:
1. 打开会话属性 默认快捷键 alt + p
2. 进入 终端 -> 键盘 页
3. 找到 元键仿真
4. 勾选 将 左ALT 用作 Meta 键
5. 保存设置
结果:
1. 命令行的 alt 快捷键 可以通过 左alt 触发
2. xshell 的 alt 快捷键, 可以通过 右alt 触发
3. alt 不再冲突
4.7 Linux 通配符
通配符是一种特殊语句,主要有星号(*)、问号(?)等表示,用来模糊搜索文件,当查找目录或文件时, 可以使用通配符来代替一个或多个真正字符。
作用范围:目录和文件名
常见通配符:常用通配符包括 "*"、"?" 、"[ ]"、 "[^ ]" 、"[! ]"和"{}",具体含义见下表 通配符具体含义及用法表:
4.8 引号使用