Linux常用命令:文件操作、压缩解压(tar/gzip/bzip2/zip/unzip)

本文链接: https://blog.csdn.net/xietansheng/article/details/80044614

0. 常用的命令

类型 举例
帮助类 --help, man, which, clear, >
查看类 echo, cat, more, find, grep, |
目录类 cd, ls, pwd
文件操作 touch, mkdir, rm, rmdir, mv, cp, ln
压缩、解压 tar, gzip, bzip2, zip, unzip

1. 帮助类

  • 查看命令帮助: --help
查看命令的帮助, --help 实际上是命令的参数, 绝大多数 Linux 命令都支持该参数。

格式: 命令名称 --help

例子: ls --help
  • 查看命令的使用手册: man
查看命令的使用手册, 内容比 --help 更详细。

例子: man ls

用 man 打开一个命令的手册后, 有许多功能键:

    空格键:      显示手册的页的下一屏;
    Enter键:    一次滚动手册页的一行;
    b:          backward, 向后, 上一屏;
    f:          forward, 向前, 下一屏, 和空格键功能相同;
    q:          quit, 退出 man 命令;
    h:          列出 man 的所有功能键;
    /word:      在文中搜索 word 字符串
  • 查看命令命令所在路径: which
查看命令的位置(在文件系统中路径)。

例子: which cd    输出: /usr/bin/cd
  • 清屏: clear
清除当前屏幕的输出, 格式: clear
  • 输出重定向: >
命令的执行结果通常打印在终端, 通过 “>” 可以把结果保存到指定的文件, 
使用单个 “>” 是覆盖文件, 使用 “>>” 是追加到文件尾部。

格式(覆盖): 需要执行的命令 > 文件路径
格式(追加): 需要执行的命令 >> 文件路径

例子: ls -l > aa.txt

2. 查看类

  • 打印内容: echo
输出内容到终端。

例子: echo "Hello World!"
  • 查看文档: cat
查看文件的内容。

参数:
    -n    对输出的所有行编号

例子: cat aa.txt

cat 还能合并多个文件: cat aa.txt bb.txt > cc.txt
  • 分屏查看文档: more
分屏查看文件的内容, 按 回车键 显示更多,按 Q键 退出。

例子: more aa.txt

cat 还能合并多个文件: cat aa.txt bb.txt > cc.txt
  • 查找文件: find
根据文件属性(文件名、文件大小等)在指定目录下(包括子目录)查找文件(包括文件夹)。

格式: find 目录 属性参数 参数值

例子:

1. 按文件名查找(支持 * 号模糊匹配):
    find ./ -name "aa.txt"      // 在当前目录下(下面例子均在当前目录查找), 查找文件名为 aa.txt 的文件
    find ./ -iname "*.txt"      // 查找文件名以 .txt 结尾的文件, 并且忽略字母大小写

2. 按文件大小查找:
    find ./ -empty              // 查找空文件
    find ./ -size +100k         // 查找文件大小大于 100KB 的文件(k:KB, M:MB, G:GB)
    find ./ -size -100k         // 查找文件大小小于 100KB 的文件

3. 混合查找: !, -and(-a), -or(-o)
    find ./ ! -name "*.txt"                   // 查找文件名不以 .txt 结尾的文件
    find ./ -name "*.txt" -and -size +100k    // 查找文件名以 .txt 结尾, 并且 文件大小大于 100KB 的文件
    find ./ -name "*.txt" -or -size -100k     // 查找文件名以 .txt 结尾, 或者 文件大小小于 100KB 的文件
  • 查找文件内容: grep
查找文件内的文本内容, 并且支持正则表达式查找。

格式: grep [-options] "keyword" filename

参数:
    -n      显示匹配的所有行的 行号 和 行内容
    -v      显示不包含匹配的所有行(否定)
    -i      忽略大小写

例子:
    grep -ni "abc" aa.txt     // 在文件 aa.txt 中查找包含 abc 的所有行, 结果显示行号并且忽略大小写

正则表达式匹配:
    grep -n "^a" aa.txt       // 查找以 a 开头的所有行
    grep -n "a[bB]c" aa.txt   // 查找包含 abc 或 aBc 的所有行
  • 管道: |
管道 | 可以把一个命令的输出作为另一个命令的输入。

例子:
    分屏查看: ls -l | more                // 列出当前目录的所有文件, 并作为输入传给 more 分屏显示
    过滤输出: ls -l | grep -ni ".txt$"    // 列出当前目录的所有文件, 并作为输入传给 grep 查找内容, 显示查找结果

3. 目录类

  • 进入目录(改变工作目录): cd
进入目录(改变工作目录), 格式: cd 目录名称
  • 查看文件列表: ls
List, 查看文件列表, 默认查看当前工作目录。

格式: ls [-options] [path]

参数:
    -a    显示所有文件和文件夹, 包含隐藏文件
    -l    以列表的方式显示详细信息
    -h    配合 -l 以更友好的方式显示文件大小, 即文件大小单位以 B, KB, MB, GB 来显示

例子:
    ls -hl           // 以列表的形式显示当前工作目录下的文件和文件夹
    ls -al /etc      // 以列表的形式显示 /etc 目录下的所有文件和文件夹
  • 打印当前工作目录: pwd
Print Work Directory, 输出当前的工作目录, 格式: pwd

4. 文件操作

  • 创建空白文件: touch
创建空白文件, 格式: touch 文件名
  • 创建文件夹: mkdir
Make Directory, 创建文件夹。

格式: mkdir [-options] 文件夹名称

参数:
    -p    一次性创建多级文件夹

例子:
    mkdir aa                // 在当前目录下创建文件夹 aa
    mkdir aa/bb             // 在目录 aa/ 下创建文件夹 bb
    mkdir -p aa/bb/cc       // 在当前目录下一次性创建多级文件夹 aa/bb/cc
  • 删除文件: rm
Remove, 删除文件。

格式: rm [-options] 文件或文件夹

参数:
    -i    以交互式方式执行, 会停顿循环用户是否需要删除, 输入 y 按回车才删除
    -f    删除时, 如果文件不存在不提示
    -r    递归删除, 如果删除的是目录, 则删除该目录下的所有文件和文件夹(包括自己本身)

例子:
    rm aa.txt        // 删除文件 aa.txt
    rm -r ./aa       // 递归删除文件夹 ./aa, 使用 -r 时才能删除文件夹
  • 删除文件夹: rmdir
Remove Directory, 删除文件夹, 文件夹必须是空的, 格式: rmdir 文件夹
  • 移动文件(重命名): mv
Move, 移动文件或文件夹(也可以用来重命名)。

格式: mv 源文件或文件夹 目标文件或文件夹

例子:
    mv srcFile dest    // 如果 dest 是文件夹, 则把源文件 srcFile 移动到文件夹 dest 下, 源文件名称不变;
                       // 如果 dest 是文件 或 不存在, 则把源文件 srcFile 重命名为 dest, 如果 dest 是存在的文件, 则会覆盖。

    mv srcDir destDir  // 如果目标文件夹 destDir 存在, 则把文件夹 srcDir 移动到文件夹 destDir 下, 源文件夹名称不变;
                       // 如果目标文件夹 destDir 不存在,  把把文件夹 srcDir 重命名为文件夹 destDir。
  • 复制文件: cp
Copy, 复制文件或文件夹, 命令参数用法和 mv 相似。

格式: cp 源文件或文件夹 目标文件或文件夹

参数:
    -r    递归复制目录及其子目录
    -v    显示复制进度

例子:
    cp srcFile dest    // 如果 dest 是文件夹, 则把源文件 srcFile 复制到文件夹 dest 下, 源文件名称不变;
                       // 如果 dest 是文件 或 不存在, 则把源文件 srcFile 复制为文件 dest, 如果 dest 是存在的文件, 则会覆盖。

    cp -r srcDir destDir  // 如果目标文件夹 destDir 存在, 则把文件夹 srcDir 复制到文件夹 destDir 下, 源文件夹名称不变;
                          // 如果目标文件夹 destDir 不存在, 则把文件夹 srcDir 复制为文件夹 destDir。
  • 建立链接: ln
Link, 文件或文件夹建立链接, 链接分为 软链接 和 硬链接。

软链接: 软链接不占用磁盘空间, 源文件删除后软链接失效(类型于 Windows 下的 快捷方式)。
硬链接: 硬链接只能链接普通文件, 不能链接目录, 源文件删除后, 硬链接文件依然还有效。

格式: ln [-s] 源文件或文件夹 链接文件    // 加上参数 -s 表示创建 软连接

例子: 
    ln HellWorld.txt hw.txt         // 创建文件 HellWorld.txt 的硬链接, 硬链接文件名为 hw.txt
    ln -s HellWorld.txt hw.txt      // 创建文件 HellWorld.txt 的软链接, 软链接文件名为 hw.txt
    ln -s aaDir aa                  // 创建文件夹 aaDir 的软连接, 软连接文件名为 aa

5. 压缩、解压

  • 归档管理: tar
归档管理, 即文件或文件夹打包, 把若干个文件或文件夹打包到一个大文件中, 也可以把一个打包后的大文件恢复数据,
tar 默认只负责归档, 不负责压缩, 归档后的文件名后缀为 .tar。

格式: tar [-options] 归档文件名 文件或文件夹列表...

参数:
    -z    归档完成用 gzip 压缩(结果文件名后缀为 .tar.gz), 或者解包时先用 gzip 解压后再解包
    -j    归档完成用 bzip2 压缩(结果文件名后缀为 .tar.bz2), 或者解包时先用 bzip2 解压后再解包

    -c    归档文件, 生成归档文件(打包)
    -t    列出归档后的大文件中包含的文件(查看)
    -x    解开归档后的文件(解包)
    
    -r    把文件追加到归档中, 如果在归档中已存在, 则覆盖, 目标存档必须是没有压缩的(追加)
    -u    把文件追加到归档中, 如果在归档中已存在, 并且追加的文件没有修改, 则忽略, 目标存档必须是没有压缩的(追加)
    
    -C    大写字母C, 解包时使用, 解包到指定的目录

    -v    列出命令执行的进度和详情
    -f    指定归档文件名称, f 必须放在参数最后面, 并且后面紧跟归档文件名
    

例子:
    tar -cvf aa.tar *.txt       // (打包) 把当前目录下所以文件名后缀为 .txt 的文件打包成一个 aa.tar 的文件
    tar -tvf aa.tar             // (查看) 查看存档中包含的文件详情
    tar -xvf aa.tar             // (解包) 把存档文件 aa.tar 解包到当前目录
    
    tar -rvf aa.tar bb.txt      // (追加) 把文件 bb.txt 追加到 aa.tar 存档中
    tar -xvf aa.tar -C aaDir    // (解包到指定目录) 把存档文件 aa.tar 解包到文件夹 aaDir 中
    
    tar -cvf aa.tar aa.txt *.pdf ccDir    // 批量打包若干个文件和文件夹
    
    tar -zcvf aa.tar.gz aa.txt            // (压缩) 先打包, 再用 gzip 压缩
    tar -zxvf aa.tar.gz                   // (解压) 先用 gzip 解压, 在解包
    
    tar -jcvf aa.tar.bz2 aa.txt           // (压缩) 先打包, 再用 bzip2 压缩
    tar -jxvf aa.tar.bz2                  // (解压) 先用 bzip2 解压, 在解包
  • GZIP 压缩、解压: gzip
压缩: gzip 只能压缩文件, 不能压缩文件夹, 压缩后默认在源文件名后面加上 .gz 的后缀作为文件名, 并覆盖源文件。
解压: 解压 gzip 压缩包, 解压后默认去掉文件名后缀 .gz 作为解压后的文件名, 并覆盖源文件。

格式: gzip [-options] file1 file2 ...

参数:
    -d    解压
    -r    压缩或解压指定目录下(包括子目录)的所有文件(逐个操作, 非打包压缩)

例子:
    压缩文件: gzip file1 file2                   // 结果: file1.gz, file2.gz
    解压文件: gzip -d file1.gz file2.gz          // 结果: file1, file2
    批量压缩: gzip -r aaDir  // 检索目录 aaDir 下的所有文件(忽略文件名后缀为 .gz 的文件), 并逐个使用 gzip 压缩
    批量解压: gzip -dr aaDir // 检索目录 aaDir 下的所有后缀名为 .gz 的文件(其他文件忽略), 并使用 gzip 解压

gzip 只能压缩文件, 要把多个文件或文件夹压缩成一个文件, 必须先使用 tar 打包成一个文件后再使用 gzip 压缩, 
一般直接使用 tar 命令一步完成打包和压缩:

格式:
    tar -zcvf aa.tar.gz file1 file2 ...     // (压缩) 先打包, 再用 gzip 压缩
    tar -zxvf aa.tar.gz                     // (解压) 先用 gzip 解压, 再解包
  • BZIP2 压缩、解压: bzip2
压缩: bzip2 只能压缩文件, 不能压缩文件夹, 压缩后默认在源文件名后面加上 .bz2 的后缀作为文件名, 并覆盖源文件。
解压: 解压 bzip2 压缩包, 解压后默认去掉文件名后缀 .bz2 作为解压后的文件名, 并覆盖源文件。

格式: bzip2 [-options] file1 file2 ...

参数: -d    解压

例子:
    压缩文件: bzip2 file1 file2                 // 结果: file1.bz2, file2.bz2
    解压文件: bzip2 -d file1.bz2 file2.bz2      // 结果: file1, file2

bzip2 只能压缩文件, 压缩多个文件或文件夹必须先使用 tar 打包成一个文件后再使用 bzip2 压缩, 
一般直接使用 tar 命令一步完成打包和压缩:

格式:
    tar -jcvf aa.tar.bz2 file1 file2 ...   // (压缩) 先打包, 再用 bzip2 压缩
    tar -jxvf aa.tar.bz2                   // (解压) 先用 bunzip2 解压, 再解包
  • ZIP 压缩: zip
zip 命令支持把许多文件和文件夹压缩为一个压缩包文件, 并且支持设置密码, 支持对压缩包的增删改查。

格式: zip [-options] [option_value] my.zip entry ...

参数:
    -r    压缩文件夹时递归添加目录及其子目录下的所有文件和文件夹到压缩包, 
          如果没有该参数, 压缩文件夹时仅添加文件夹, 忽略文件夹内的所有内容。
    -d    从压缩包内删除指定的条目。
    -e    加密压缩, 密码在终端动态输入。
    -P    加密压缩, 密码加在命令参数 -P 后面(大写字母 P)。
    
    -<压缩效率>    压缩效率, 一个介于1~9的数值, 例如: zip -9r my.zip aaDir

例子:
    zip my.zip aa.txt       // 把文件 aa.txt 压缩到 my.zip。如果 my.zip 已存在, 则追加到 my.zip 包内, 
                            // 不存在则新建一个 my.zip 包。如果 aa.txt 在 my.zip 包内已存在, 则覆盖。
                            
    zip -r my.zip aaDir     // 递归压缩文件夹 aaDir(包括其内的所有文件和子目录)
    
    zip -r my.zip aa.txt *.pdf aa.Dir       // 批量压缩多个文件和文件夹
    
    zip -e my.zip aa.txt                    // 加密压缩, 执行命令时在终端动态输入密码
    zip -re my.zip aaDir                    // 递归加密压缩文件夹, 执行命令时在终端动态输入密码
    
    zip -P password my.zip aa.txt           // 加密压缩, 密码加在 -P 参数后面
    zip -rP password my.zip aa.txt aaDir    // 批量加密压缩多个文件和文件夹, 密码加在 -P 参数后面
    
    zip -d my.zip aa.txt                    // 移除 my.zip 包内的 aa.txt 条目
  • ZIP 解压: unzip
查看或解压 zip 压缩包。

格式: unzip [-option value] my.zip

参数:
    -l    不解压, 显示压缩包内的所有条目。
    -v    不解压, 详细显示压缩包内的所有条目。
    -d    解压到指定目录, 文件夹名称加载命令参数 -d 后面。
    -P    解压密码, 密码加在命令参数 -P 后面(大写字母 P),
          如果 zip 包有加密, 解压时没有带上 -P 参数, 在解压时会动态提示输入密码。
    -o    (Over) 不询问用户, unzip 执行时遇到相同文件, 直接覆盖。
    -n    (None) 不询问用户, unzip 执行时遇到相同文件, 直接忽略(不解压该文件)。

例子:
    unzip -l my.zip             // 查看 my.zip 压缩包内的所有条目
    unzip my.zip                // 把 my.zip 解压到当前目录
    unzip -d myDir my.zip       // 把 my.zip 解压到 myDir 文件夹
    unzip -P password my.zip            // 加密的 my.zip 压缩包使用指定的密码解压到当前目录
    unzip -P password -d myDir my.zip   // 把加密的 my.zip 压缩包使用指定的密码解压到 myDir 文件夹

你可能感兴趣的:(Linux)