Day8
1 Linux上常用的压缩/解压工具
1.1 常见的压缩格式
文件后缀名 | 说明 |
---|---|
.zip | zip 程序打包压缩的文件 |
.rar | rar 程序压缩的文件 |
.7z | 7zip 程序压缩的文件 |
.tar | tar 程序打包,未压缩的文件 |
.gz | gzip 程序(GNU zip)压缩的文件 |
.xz | xz 程序压缩的文件 |
.bz2 | bzip2 程序压缩的文件 |
.tar.gz | tar 打包,gzip 程序压缩的文件 |
.tar.xz | tar 打包,xz 程序压缩的文件 |
tar.bz2 | tar 打包,bzip2 程序压缩的文件 |
.tar.7z | tar 打包,7z 程序压缩的文件 |
1.2 zip命令:以zip压缩文件
cd /home/uesr
zip -r -1 -q -o packeg.zip /home/user/Desktop -x ~/*.zip
-r 参数表示递归打包包含子目录的全部内容
-q 参数表示为安静模式,即不向屏幕输出信息
-o 输出文件
-9 压缩级别(0-9 数字越高压缩的越小)
-x排除上一次创建的zip文件,防止重复打包
-e(encryption)加密
请使用绝对路径
1.3 du命令:查看压缩包
du -h -d 0 *.zip ~ | sort
-h, --human-readable
-d, --max-depth(所查看文件的深度)
1.4 unzip命令:解压压缩包
unzip -q file.zip -d ziptest
-d 指定目录,不指定就会解压到当前目录
-l 不解压文件,仅查看。
-O 指定编码类型 如 -O GBK
1.5 tar命令
tar -P -cf file.tar /home/user/Desktop
-P 保留绝对路径符
-c 表示创建一个 tar 包文件
-v 参数以可视的的方式输出打包的文件。
-f 用于指定创建的文件名,文件名必须紧跟在 -f 参数之后
tar -fc file.tar--> tar -f file.tar -c
mkdir tardir
tar -xf file.tar -C tardir
-x 解包一个文件
-C 指定解包的路径
tar -tf file.tar
-t 只查看,不解压缩
2 Linux文件操作与磁盘管理
2.1 df命令:查看磁盘的容量
2.2 du命令:查看目录容量
2.3 dd命令:读入读出、创建虚拟镜像文件(之后再细学)
2.4 mkfs命令:格式化磁盘
du -h -d 1 ~ # 查看 2 级目录的信息
3 Linux获取命令帮助
3.1 help参数:外部命令后加 --help
3.2 man命令:得到非常详细的帮助文档
章节数(LS) | 说明 |
---|---|
1 | Standard commands (标准命令) |
2 | System calls (系统调用) |
3 | Library functions (库函数) |
4 | Special devices (设备说明) |
5 | File formats (文件格式) |
6 | Games and toys (游戏和娱乐) |
7 | Miscellaneous (杂项) |
8 | Administrative Commands (管理员命令) |
9 | 其他(Linux 特定的), 用来存放内核例行程序的文档。 |
按q退出当前页面
info命令:需要安装
# 安装 info
sudo apt-get update
sudo apt-get install info
# 查看 ls 命令的 info
info ls
4 Linux 任务计划 crontab
详细用法说明:Cron Job: A Comprehensive Guide for Beginners 2021
4.1 crontab简介
crontab是帮助您定时完成重复性工作的程序,存放于crontab文件内,可以使得系统在固定的时间执行系统指令或Shell脚本,比如每天早上六点自动完成健康打卡。
crontab依靠daemon(守护程序)运行,daemon就好比摇篮里的婴儿,摇篮一停(特定时间)婴儿就会醒(计划的操作发生)。
crontab有这些缺陷
最短检查间隔:一分钟,也就是说每一分钟检查一次,您无法使得这段程序没59秒或更短运行一次。
不能部署在多台电脑上
没有自动重试机制
4.2 准备工作
4.2.1 检查rsyslog是否开启(有的发行版是会默认自行启动,如Ubuntu)
如未启动,或未安装,则需要您手动安装开启。
sudo apt-get install -y rsyslog
sudo service rsyslog start
4.2.2 检查crontab是否启动
如未启动则需要您手动启动
sudo cron -f &
4.3 corntab使用
4.3.1 添加计划任务
crontab -e
如果您是第一次使用corntab的话,那么系统会询问你使用那种编辑器。
4.3.2 crontab语法
* * * * * commend to execute
第一个*:分钟:1-59
第二个*:小时:0-23
第三个*:日:1-31
第四个*:月:1-12
第五个*:周:0-6:周日到周六(老外那边周日是一周的第一天)
37 17 * * 5 root/backup.sh
# 这条命令代表了将在每周五的5:37pm执行备份程序
# 37 17 即17:37
# 5 即周五
*:所有可能的值(每天\每小时\每分钟等)
,:和(比如1,5可以表示周一和周五)
-:可以表示一段时间(比如1-5可以表示周一到周五)
/:每隔一段时间(比如 */12可以表示每12小时运行一次)
L:last,最后的(比如* * * * 3L代表每月最后一个周三)
W:weekday最近的工作日(比如如果12月01日是周六的话* * 1W * * 代表接下来第一个星期一,即12月03日)
#:指定某周的周几(我不知道怎么翻译合适,看看这个例子您应该就明白了,比如1#2代表这个月的第二个周一,这个功能应该是适配西方节假日的)
?:无特定值,在“日”和“周”使用
另外还请记得时区转换的问题
4.3.3邮件
4.4.3.1 关闭邮件
crontab会自动给您的本地邮箱发送邮件,如果您不想的话请添加>/dev/null 2>&1 在语句的最后
4.4.3.2 给指定邮箱发送邮件
您需要添加MAITO,例子如下
MAILTO="myname@hostinger.com"
0 3 * * * /root/backup.sh >/dev/null 2>&1
4.3.4 退出:按esc 输入":wq"
5 命令执行顺序控制和管道
5.1 顺序执行
5.1.1 简单的顺序执行:
在命令中加入";"以作分隔
5.1.2 选择性执行:
"&&"如果前面的命令执行结果为0则执行后面的,否则不执行。(前面的命令执行失败才执行后面的)
"||"如果前面的命令执行结果不为零则执行后面的,否则不执行(签名档命令执行成功才执行后面的)
5.2 管道
5.2.1 管道简介
管道是一种通信机制,用于进程间的通信或通过 socket 进行网络通信。
管道将每一个进程的输出(stdout)作为下一个进程的输入(stdin)。
管道的分类
匿名管道
在过滤程序时常会用到的管道,在命令行中由 | 分隔符表示
具名管道
具名管道是有名字的管道,通常在源程序中用到具名管道。
5.3 cut命令:打印每一行的某一字段
5.4 grep命令:在文本或stdin中查找匹配
grep [命令选项]… 用于匹配的表达式 [文件]…
5.5 wc命令:统计并输出一个文件中行、单词和字节的数目
参数 | 含义 |
---|---|
-l | 行数 |
-w | 单词数 |
-c | 字节数 |
-m | 字符数 |
-L | 最长行字节数 |
sort命令:排序
unip命令:去除重复,但只能去除上下两行都一样的情况
6 文本处理
6.1 tr命令:删除文本中的某些信息
tr [option]…SET1 [SET2]
参数 | 含义 |
---|---|
-d | 删除和 set1 匹配的字符,注意不是全词匹配也不是按字符顺序匹配 |
-s | 去除 set1 指定的在输入文本中连续并重复的字符 |
# 删除 "hello" 中所有的'o','l','h'
$ echo 'hello' | tr -d 'olh'
# 将"hello" 中的ll,去重为一个l
$ echo 'hello' | tr -s 'l'
# 将输入文本,全部转换为大写或小写输出
$ echo 'input some text here' | tr '[:lower:]' '[:upper:]'
6.2 col命令:将Tab换成等量空格或将空格换成等量Tab
参数 | 含义 |
---|---|
-x | 将Tab转换为空格 |
-h | 将空格转换为Tab(默认选项) |
6.3 join命令:将两个文件中包含相同内容的那一行合并在一起
参数 | 含义 |
---|---|
-t | 指定分隔符,默认为空格 |
-i | 忽略大小写的差异 |
-1 | 指明第一个文件要用哪个字段来对比,默认对比第一个字段 |
-2 | 指明第二个文件要用哪个字段来对比,默认对比第一个字段 |
6.4 paste命令:将多个文件合为一个
paste [option] file…
参数 | 含义 |
---|---|
-d | 指定合并的分隔符,默认为 Tab |
-s | 不合并到一行,每个文件为一行 |