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

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

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

Linux tar指令-LMLPHP

-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:

Linux tar指令-LMLPHP

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

Linux tar指令-LMLPHP

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

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

Linux tar指令-LMLPHP

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

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

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

Linux tar指令-LMLPHP

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

Linux tar指令-LMLPHP

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

Linux tar指令-LMLPHP

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

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

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

05-07 12:43