一些可能不太常用的命令

本文记录一些 Linux 下的命令,方便在我忘记的的时候快速的查一查。大部分都是一些有用但又不常用的命令,记性实在不好,每次用都要重新查,这里写一下也能更好的记住。

压缩与解压缩

tar

tar 是 linux 下常用的 打包工具 (Tape ARchive),常用于将多个文件/目录合并为一个包,不进行压缩,后来常与 gzip, bzip2 等压缩工具结合。

基本格式 tar [选项] [参数] -f 压缩包名.tar[.gz|.bz2|.xz] 文件/目录 ...

常见选项:

选项含义
ccreate, 打包
xextract, 解包
tlist, 查看包的内容
vverbose,显示详细过程
ffile,指定包文件名(必须紧跟在 f 后)
zgzip 压缩/解压
C解压到指定目录
r在没有压缩时,追加特定文件
  1. 打包并使用 gzip 压缩: tar -czvf archive.tar.gz dir/
  2. 指定解压目录: tar -xzvf archive.tar.gz -C /path/to/dir/
  3. 查看压缩包内容: tar -tvf archive.tar.gz
  4. 追加文件到 tar 包中: tar -rvf archive.tar newfile.txt

zip

为了更好的兼容其他操作系统,往往 zip 命令更为常用。一个比较诡异的点是 zip 命令不能执行解压缩,只能压缩,解压缩必须由 unzip 来完成。

基本格式 zip [选项] 压缩包名.zip 文件/目录 ...

常用选项:

zip 选项含义
rrecursive, 递归的把目录以及子目录中的文件都加入 zip
qquiet, 抑制过程输出,适合于脚本
eencrypt, 加密
0-9指定压缩等级,默认为4
mmove,文件移动到压缩包中 = 压缩完删除原文件
@read names from stdin, 与一些脚本命令配合
unzip 选项含义
llist, 查看包的内容
ddir, 解压到指定目录,后面紧跟目录路径
oover, 覆盖已存在文件
  1. 标准压缩: zip -r project.zip project/
  2. 只压缩 .py 文件: find src -name '*.py' -print | zip code.zip -@
  3. 查看内容:unzip -l archive.zip
  4. 解压并覆盖文件:unzip -o archive.zip

文件查找与参数导入

find

文件搜索工具,可以按照文件名、时间、大小、类型、权限等等条件搜索文件。

基本格式 find [搜索路径] [匹配条件] [处理动作]

常用匹配条件:

选项含义
-name人如其名
-typef 普通文件,d 目录,l 符号链接
-size+100M, -10K
-mtime修改内容时间,以天为单位, -7, +10
-user按用户查找

常用处理动作:

选项含义
-printstdout, 默认动作
-delete删除文件
-exec传入参数

举一个传入参数的例子 find . -name *.tex -exec rm {} +,其中 {} 表示当前匹配的文件,+ 表示批量传入处理,否则文件多时较为低效。但更为推荐使用接下来介绍的 xargs 来处理。

xargs

zip 的实例中有通过管道导入参数的功能,但那是 zip 脚本提供了 -@的选项。很多命令是不提供这样从标准输入读入参数的选项,所以要借用额外的命令来实现。

一个很重要的点是 xargs文件名含有空格不太安全!这一点非常重要,不要用来处理含有空格的文件名,也提醒文件命名规范非常重要。

基本语法 command1 | xargs [options] command2,选项基本不太常用,举几个例子。

  1. echo "file1 file2 file3" | xargs rm
  2. find . -name "*.txt" | xargs rm

核心就是将标准输入转换为命令参数。