Linux压缩文件及shell总结

1.使用tar命令进行文件归档。 

Linux 中的 targzip 是两个不同的命令,用于不同的目的:

  1. tartar 是一个归档命令,用于将多个文件或目录组合成一个文件,通常称为 tarball。tar 本身不具有压缩功能,它只是将文件打包成一个单独的文件。你可以通过 tar 命令创建 tarball,也可以使用它来解压缩已经存在的 tarball。常见的用法有:选项:c(创建)、v(详细)、x(提取)、t(⽬录)、f(⽂件)

    • 创建 tarball:tar -cvf archive.tar file1 file2 directory1
    • 解压缩 tarball:tar -xvf archive.tar
    • 列出 tarball 中的文件:tar -tvf archive.tar
  2. gzipgzip 是一个压缩工具,用于压缩文件。它通常与 tar 结合使用,将 tarball 压缩为 .tar.gz.tgz 格式的文件。gzip 压缩后的文件扩展名为 .gz。常见的用法有:

    • 压缩文件:gzip filename
    • 解压缩文件:gzip -d filename.gz

因此,如果你想要将文件或目录打包并压缩,可以首先使用 tar 创建 tarball,然后使用 gzip 将其压缩。

 问题:如果直接使用-cvf等参数,可能会在出结果时出现tar: Removing leading `/' from member names的warning,因为tar命令默认使用相对路径,在v-f中间(或者其他参数)加上P参数即可解决。

延伸

tar命令打包和解压,各常用参数的意思。

  1. -z: 对单个tar包进行压缩,只有对.gz文件进行操作时使用。如:

    #解压.gz文件
    tar zxf jdk-8u241-linux-x64.tar.gz
    #打包并压缩至.gz文件
    tar zcf jdk-8u241-linux-x64.tar.gz jdk8
    
  2. -x: 建立一个解压文件的指令

  3. -c: 建立一个压缩文件的指令

  4. -f: 添加一个参数名称,通常是参数中最后一个位置,后加参数名。

  5. -C(大写): 指定解压路径,如此路径不存在,则解压不成功。
    例如:

    tar zxf jdk-8u241-linux-x64.tar.gz -C /usr/local/pppp/
    

    假如/usr/local/pppp/文件夹不存在,此解压不会成功。

  6. -p(小写): 使用原文件的原来属性,不改变属主、权限等属性。

  7. -v: 显示详细进度,但是太多了,一般不打,除非排错。

  8. -j: 对单个tar包进行压缩,只有对.bz2文件进行操作时使用。
    使用方法类似于-z。

    例如

    1. $tar -cvf tarfile ⽂件+

      将多个⽂件捆绑到⼀个 tar ⽂件中,通常使⽤扩展名 .tar。

      $tar -xvf tar ⽂件

      解压⼀个 tar ⽂件并恢复原始⽂件

      $tar -tvf tar ⽂件 检查 tar ⽂ 件的内容

2.文件压缩:gzip

        $ gzip [选项] ⽂件*

        参数

        ‐d:解压。 ‐l:打印压缩⽂件中的⽂件信息(压缩⼤⼩、压缩率)。 ‐r:压缩所有⼦⽬录。 ‐v:压缩或解压时,输出压缩率和⽂件名。

        $ gzip ‒d ⽂件.gz*

        压缩包恢复压缩⽂件。

        $gunzip ⽂件.gz*

        压缩包恢复压缩⽂件。

        使⽤⽰例

        $ tar -cvf src.tar *

        $ gzip src.tar

重点:如何使⽤

        将这些⽂件捆绑到⼀个 tar ⽂件中,并使⽤ compress/gzip 对其进⾏压缩。

        ⽂件恢复:解压后,解压tar⽂件,恢复原⽂件。

3.Find命令 -exec参数

        对所有搜索到的⽂件执⾏相同的操作(命令)

        例如:

        $ find . -name core -exec rm -i {} \;

        $ find . -name *.c -atime +30 -exec ls -l {} \;  

        注意:-exec ....{}和前置参数间, \和{}间,必须留有空格

4.启动文件中的全局变量

        对于环境设置,为环境变量设置适当的值。

                $>环境变量名=字符串(没有空间)

                例:

                $> TERM=xterm

                $> echo(回显) $TERM

                xterm

                注意!!在变量名前使⽤$才能得出变量的值,如果不使用$,只能得出变量名

        4.1        检查环境变量命令:env

  • env命令用于显示当前 shell 中所有的环境变量及其值。
  • 如果不带任何参数,env会列出所有环境变量及其值。如果提供了参数,env会在执行给定的命令时设置环境变量。
  • 示例:env, env PATH="/usr/bin:/bin" ls

         4.2        导出变量命令:export

        (通过export命令导出变量)环境变量作为可以制作出来,就是git shell

  • export命令用于在当前 shell 中将变量标记为环境变量。环境变量可在当前 shell 中使用,并且在当前 shell 中创建的子进程中也可用。
  • 通过export命令设置的环境变量只在当前 shell 及其子进程中可见,并不会影响其他 shell 的环境。
  • 示例:export TEST="example"

 总的来说,export用于设置和导出环境变量,而env用于显示当前环境中的所有环境变量或在特定环境下执行命令。

5.Shell转义函数(外壳逃脱)

        5.1.命令替换:当执⾏⼀个命令时,会使⽤其他命令的执⾏结果。其他命令部分⽤反引号 (`)                                 括起来,注意不是单引号。

                                例:$ echo 当前⽬录中的⽂件数:`ls | wc -w` 当前⽬录中的⽂件 数:32

        5.2.引号转移:使⽤引号极限替换函数(外壳逃逸)

                               单引号:对引号里的内容不进行转义,原样输出

                                双引号:对括号的内容中的转义符进行识别,转义后输出。

6.外壳脚本

那么 shell 脚本呢?

        使⽤适当的命令和实⽤程序编写的简单程序。

        脚本主要是解释型(cf、编译)

        在脚本⽂件中指定 shell 脚本类型

        6.1:在第⼀⾏以#!路径名的形式指定要使⽤的shell。

                #!/bin/csh

                 # !/bin/ksh

                 # !/bin/bash

                 # !/bin/sh

        6.2:如果第⼀⾏以 # 开头且未指定 shell 路径,则将其视为 C shell 脚本。 其他脚本则被视为 Bourne shell 脚本。

         6.3:输入各种命令,保存后。使用chmod +x 文件名 获得运行权限

特别注意:运行sh文件时,需要加上路径名称,只有文件名,无法找到并使用该sh文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值