主要内容:常用的压缩/解压工具和Linux下的帮助命令
参考来源: 实验楼
上一篇:[Linux]Linux系统基础入门学习(三)-----环境变量的设置和文件搜索操作
目录
一、压缩/解压工具
1.1、zip
1.2、tar
1.3、小火苗程序
二、帮助命令
2.1、内建命令与外部命令
2.2、help
2.3、man
2.4、info
主要使用zip和tar的两个工具
$ zip -r -9 -q -o shiyanlou.zip /home/user/Desktop
$ du -h test.zip
上面命令将目录 /home/shiyanlou/Desktop 打包成一个文件,并查看了打包后文件的大小和类型。第一行命令中,
-r
参数表示递归打包包含子目录的全部内容,
-9
参数表示压缩级别(9 最大,1 最小),
-q
参数表示为安静模式,即不向屏幕输出信息,
-o
表示输出文件,需在其后紧跟打包输出文件名。后面使用 du 命令查看打包后文件的大小.
-e
参数可以创建加密压缩包
注意: 关于 zip 命令,因为 Windows 系统与 Linux/Unix 在文本文件格式上的一些兼容问题,比如换行符(为不可见字符),在 Windows 为 CR+LF(Carriage-Return+Line-Feed:回车加换行),而在 Linux/Unix 上为 LF(换行),所以如果在不加处理的情况下,在 Linux 上编辑的文本,在 Windows 系统上打开可能看起来是没有换行的。如果你想让你在 Linux 创建的 zip 压缩文件在 Windows 上解压后没有任何问题,那么你还需要对命令做一些修改:
需要加上 -l 参数将 LF 转换为 CR+LF 来达到以上目的
#将 test.zip 解压到当前目录:
$ unzip test.zip
#使用 安静模式,将文件解压到指定目录:
$ unzip -q test.zip -d ziptest
#上述指定目录不存在,将会自动创建。如果你不想解压只想查看压缩包的内容你可以使用 -l 参数:
$ unzip -l shiyanlou.zip
#使用 -O(英文字母,大写 o)参数指定编码类型:
$ unzip -O GBK 中文压缩文件.zip
注意: 使用 unzip 解压文件时我们同样应该注意兼容问题,不过这里我们关心的不再是上面的问题,而是中文编码的问题,通常 Windows 系统上面创建的压缩文件,如果有有包含中文的文档或以中文作为文件名的文件时默认会采用 GBK 或其它编码,而 Linux 上面默认使用的是 UTF-8 编码,如果不加任何处理,直接解压的话可能会出现中文乱码的问题(有时候它会自动帮你处理),为了解决这个问题,我们可以在解压时指定编码类型。
$ tar -cf test.tar /home/user/Desktop
上面命令中,
-c
表示创建一个 tar 包文件,-f
用于指定创建的文件名,注意文件名必须紧跟在-f
参数之后,比如不能写成tar -fc test.tar
,可以写成tar -f test.tar -c
。你还可以加上-v
参数以可视的的方式输出打包的文件。上面会自动去掉表示绝对路径的/
,也可以使用-P
保留绝对路径符。
#解包一个文件(-x 参数)到指定路径的已存在目录(-C 参数):
$ mkdir tardir
$ tar -xf test.tar -C tardir
#只查看不解包文件 -t 参数:
$ tar -tf test.tar
#保留文件属性和跟随链接(符号链接或软链接),有时候我们使用 tar 备份文件当你在其他主机还原时
希望保留文件的属性(-p 参数)和备份链接指向的源文件而不是链接本身(-h 参数):
$ tar -cphf etc.tar /etc
#我们只需要在创建 tar 文件的基础上添加 `-z `参数,使用 gzip 来压缩文件:
$ tar -czf test.tar.gz /home/user/Desktop```
#解压 *.tar.gz 文件:
$ tar -xzf test.tar.gz
现在我们要使用其它的压缩工具创建或解压相应文件只需要更改一个参数即可:
压缩文件格式 | 参数 |
---|---|
*.tar.gz | -z |
*.tar.xz | -J |
*tar.bz2 | -j |
tar 命令的参数很多,不过常用的就是上述这些,需要了解更多你可以查看 man 手册获取帮助。
$ sudo apt-get install libaa-bin
# 提示 command not found ,请自行解决
$ aafire
因为有一些查看帮助的工具在内建命令与外建命令上是有区别对待的。
内建命令实际上是 shell 程序的一部分,其中包含的是一些比较简单的 Linux 系统命令,这些命令是写在bash源码的builtins里面的,由 shell 程序识别并在 shell 程序内部完成运行,通常在 Linux 系统加载运行时 shell 就被加载并驻留在系统内存中。而且解析内部命令 shell 不需要创建子进程,因此其执行速度比外部命令快。比如:history、cd、exit 等等。
外部命令是 Linux 系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调入内存。虽然其不包含在 shell 中,但是其命令执行过程是由 shell 程序控制的。外部命令是在 Bash 之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin等等。比如:ls、vi等。
我们可以使用type
命令来区分命令是内建的还是外部的。例如这两个得出的结果是不同的
#得到这样的结果说明是内建命令,正如上文所说内建命令都是在 bash 源码中的 builtins 的.def中
xxx is a shell builtin
#得到这样的结果说明是外部命令,正如上文所说,外部命令在/usr/bin or /usr/sbin等等中
xxx is /usr/bin/xxx
#若是得到alias的结果,说明该指令为命令别名所设定的名称;
xxx is an alias for xx --xxx
help
命令是用于显示 shell 内建命令的简要帮助信息,所以像ls这样的外部命令是使用不了的.(但是像 ls
这样的外部命令内部都有 --help参数
)help xxx
直接使用.man xxx
直接使用man
没有内建与外部命令的区分,因为man
工具是显示系统手册页中的内容,也就是一本电子版的字典,这些内容大多数都是对命令的解释信息,还有一些相关的描述。通过查看系统文档中的man
也可以得到程序的更多相关信息和 Linux 的更多特性。info
来自自由软件基金会的 GNU 项目,是 GNU 的超文本帮助系统,能够更完整的显示出 GNU 信息,得到的信息比man
更全面。
# 安装 info
$ sudo apt-get update
$ sudo apt-get install info
# 查看 ls 命令的 info
$ info ls
# 查看 ls 命令的 info
$ info ls