linux 下的命令真是太多了。最近在看《Linux Shell编程从初学到精通》一书。该书有468页,很可惜我并不是那种很有耐性一个例子一个例子地跟着做的人,最多在看到些不太清楚的地方会动手敲一敲代码。看来想要真正掌握linux shell 编程的话还真得看一本这样子循序渐进的书,至少多多少少你可以懂一些其中的思想,而从网上那些速成片断里你是不可能领悟得到的(嘻嘻)。

今晚快回实验室前看到了tar命令的介绍,关于tar命令,我只会写tar -xvf xxx.tar,甚至连打包怎么写也不清楚,因为之前一真都是从网上搬别人的过来的。man tar的时候出现的又总是长篇大论,一大堆不重要的信息夹杂其中,根本没法看。好吧,觉悟吧。

通过tar --help 可以看到下面的信息。

-c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。
-r 把要存档的文件追加到档案文件的末尾。例如用户已经做好备份文件,又发现还有一个目录或是一些文件忘记备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文件中。
-t 列出档案文件的内容,查看已经备份了哪些文件。
-u 更新文件。就是说,用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。
-x 从档案文件中释放文件。
-f 使用档案文件或设备,这个选项通常是必选的。
-v 详细报告tar处理的文件信息。如无此选项,tar不报告文件信息。
-z 用gzip来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。

-c 用来指定解压目的路径。

上面是从百科中copy出来的。

不过上面有几点不太清楚的,比如-f表示使用文件,后面要跟上文件名。如果是要创建一个包,则创建出来的包包使用它作为文件名。

我要一个一个地练习。。。。

首先查看一个目录下的内容(用tree命令),现在我要创建一个包含这个目录下所有文件的包包。

tar -cf achieve.rar ./*

-c 表示创建一个新的包包 -f表示文件,后面跟上要新建的包的包名achieve.rar,最后写上我们要打包的文件列表。Enter and Look:

现在来检查一下创建出来的包是否都正确地包含了我们所需要的文件。tar -tf achieve.tar

可以看到文件被正确地打包了。连目录下的文件也被递归地打包了。

现在我们来往生的包achieve.tar中添加一个新的文件file4,命令如下。

我实在是想不出添加命令的参数为什么是-r,这跟append 这个单词有什么关系。我想这也是很多学linux 常用命令的人经常遇到的不解问题。毕竟linux不是一个人做的,熟能生巧嘛。当你打上这条命令100遍,谁管它是-append 还是-r呢。

好了,最后一招,解压。这也是我们平时用到的最频繁的命令之一。

注意-z选项,这个选项指将要解压缩的压缩包的格式是gzip来压缩的。书的作者说得很好,有时候我们并不需了解那么多乱七八糟的格式,我们目的很简单,解压缩而已。

但是如果我们用tar -zxvf achieve.tar就会报错,看:

gzip是对tar格式压缩文件的进一步压缩。文件扩展名是gz的一般都是gzip格式的压缩包。

对了,经常的情况是,我们下载了一个包,然后需要把它解压到另外一个文件夹中。这时我们可以使用-c选项,例子如下:

tar -xvzf /test/tmp/abc.tar.gz -C /test/tcp/abc

暂时就学这么多吧,其它的小功能可以查手册,毕竟很多时候我们的目的很简单。不知道这样的做法可不可称做是“取其精华,去其糟粕”。臭美吧。

Linux tar指令的更多相关文章

  1. linux tar使用

    Linux  tar指令简单使用 -c:创建包,-x:解压或解包(-c和-x可理解为互逆运算),-t:查看包 -f:后加处理文件,必须放在参数组合的最后一位(tar  -cf  a.tar  1.tx ...

  2. ROS零门槛学渣教程系列(二)——Linux常用指令:mkdir、tar、 unzip、cp、scp、mv、rm、find、apt、ssh

    Linux常用指令通过上一教程,我们获得了ubuntu系统.Linux是一个很大的领域.但不要紧张,我们一步步来就是了,跟着教程,需要能用到新知识,会提前介绍给大家.下面学习几个常用的Linux指令. ...

  3. linux常用指令

    整理下来的linux常用指令 mount [-t 文件系统] 设备文件名 挂载点挂载命令,一般用于在挂载ISO,或者其他比如U盘等设备时使用,[-t iso9660]为固定格式,可写可不写,非必写项. ...

  4. Linux tar (打包.压缩.解压缩)命令说明 | tar如何解压文件到指定的目录?

    打包举例:将 /usr/local/src/zlib-1.2.5目录下的文件打包成 zlib-1.2.5.tar.gz cd /usr/local/src tar -czvf ./zlib-1.2.5 ...

  5. Linux压缩指令

    1.windows系统和Linux系统的压缩文件只有zip格式的是通用的 2.windows系统可以解压几乎所有的Linux压缩格式 3.Linux压缩指令 gzip 指令 格式: gzip 压缩的文 ...

  6. Linux tar打包命令

    Linux tar打包命令: 范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar [root@linux ~]# tar -cvf /tmp/etc.tar /etc < ...

  7. linux tar 备份命令

    转载:http://www.douban.com/note/57861194/ tar [-cxtzjvfpPN] 文件与目录 ….参数:-c :建立一个压缩文件的参数指令(create 的意思):- ...

  8. linux tar命令

    tar命令打包还是压缩需要看所调用的命令参数....tar在使用时可以调用命令参数, 比如tar -xvf +文件名就是解包,但是不是解压...只有在使用了参数z等调用gzip等 压缩命令时才是压缩或 ...

  9. linux tar打包

    范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar[root@linux ~]# tar -cvf /tmp/etc.tar /etc <==仅打包,不压缩![root ...

随机推荐

  1. 目前用到最全的datagrid(easyui)

    包含checkbox.复合表头.多行可编辑单元格.combobox单元格,就差上次做的table中每行中的关联检索combobox单元格了.目前已修改为单行编辑,多行编辑时的check有问题 $(&q ...

  2. 【转】非常适用的Sourceinsight插件,提高效率事半功倍

    原文网址:http://www.cnblogs.com/wangqiguo/p/3713211.html 一直使用sourceinsight编辑C/C++代码,sourceinsight是一个非常好用 ...

  3. Java static block static constructor , static field

    http://stackoverflow.com/questions/7121213/singleton-instantiation http://docs.oracle.com/javase/spe ...

  4. nginx实现日志按天切割

    背景 nginx的日志文件没有rotate功能.一段时间过后,日志将越发臃肿,一个accesslog很快就突破1G,因此有必要通过脚本实现按天切割日志. 解决思路 1  重命名日志文件,如更改为acc ...

  5. IIS6下PHP环境的资源未找到(404)问题

    故障现象: 无法找到该页, 404错误

  6. libc-glibc

    glibc 和 libc 都是 Linux 下的 C 函数库. libc 是 Linux 下的 ANSI C 函数库:glibc 是 Linux 下的 GUN C 函数库. ANSI C 和 GNU ...

  7. unity, SkinnedMeshRenderer.updateWhenOffscreen

    发现,必须勾选update when offscreen,当skinnedMeshRenderer发生形变时bounds才会更新.

  8. 使用prototype 对象定义类成员

    使用prototype 对象定义类成员上一节介绍了类的实现机制以及构造函数的实现,现在介绍另一种为类添加成员的机制:prototype 对象.当new 一个function 时,该对象的成员将自动赋给 ...

  9. windows下android开发环境搭建

    JDK的安装和Java环境变量的设置 1 JDK下载地址 JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.h ...

  10. scanf与scanf_s

    scanf的使用 使用scanf需要记住下面两条简单规则: 如果使用scanf来读取某种基本变量类型(%d,%c,%f,%lf)的值,请在变量名之前加上一个& 如果使用scanf把一个字符串( ...