3 文件备份、压缩、定位、查找、阅读
3.1文件备份、压缩
在Linux中,常用的文件压缩工具有gzip、bzip2、zip。bzip2是最理想的压缩工具,它提供了最大限度的压缩。zip兼容性好,Windows也支持。
命令 功能
bzip2/bunzip2 扩展名为bz2的压缩/解压缩工具
gzip/gunzip 扩展名为gz的压缩/解压缩工具
zip/unzip 扩展名为zip的压缩/解压缩工具
tar 创建备份和归档
3.1.1 bzip2命令
要使用bzip2来压缩文件,在shell提示下输入命令:bzip2 filename 文件即会被压缩,并被保存为filename.bz2。
要解压缩文件,输入命令: bunzip2 filename.bz2 则 filename.bz2会被删除,而以filename代替。
bzip2 filename.bz2 file1 file2 file3 /usr/work/school 命令把file1、file2、file3以及/usr/work/school目录中的内容压缩起来放入filename.bz2。
3.1.2 gzip命令
要使用gzip来压缩文件,输入命令:gzip filename 文件即会被压缩,并被保存为filename.gz。
要解压缩文件,输入命令:gunzip filename.gz filename.gz会被删除,而以filename代替。
gzip -r filename.gz file1 file2 file3 /usr/work/school 命令把file1、file2、file3以及/usr/work/school目录中的内容压缩起来放入filename.gz。
3.1.3 zip命令
zip命令的使用方法同gzip。
3.1.4 tar命令
tar命令最早是用来做磁带备份的,但是由于硬盘容量越来越大,因此现在主要用这个命令来备份所有的文件。
tar这个命令把大量的文件和目录打包成一个文件。
-c 创建一个新归档
-f 当与-c选项一起使用时,创建的tar文件使用该选项指定的文件名;
当与-x选项一起使用时,则解除该选项指定的归档
-t 显示包括在tar文件中的文件列表
-v 显示文件的归档进度
-x 从归档中抽取文件
-z 使用gzip压缩tar文件
-j 使用bzip2压缩tar文件
例:
tar -cvf /home/abc.tar /home/abc 只打包,不压缩
tar -zcvf /home/abc.tar.gz /home/abc 打包,并用gzip压缩
tar -jcvf /home/abc.tar.bz2 /home/abc 打包,并用bzip2压缩
当然,如果想解压缩,就直接替换上面的命令 tar -cvf / tar -zcvf / tar -jcvf 中的“c” 换成“x” 就可以了。
要创建一个tar文件,输入命令:tar –cvf filename.tar directory/file /home/mine 上面的命令将directory/file、/home/mine放入归档文件中。
要列出tar文件的内容,输入命令:tar –tvf filename.tar
要抽取tar文件的命令,输入命令:tar –xvf filename.tar 这个命令不会删除tar文件,但会把解除归档的内容复制到当前工作目录下,并保留归档文件所使用的任何目录结构。
要扩展并解除归档bzip tar文件,输入命令:tar –xjvf filename.tbz
要创建一个用tar和gzip归档并压缩的文件,使用-z选项:tar –czvf filename.tgz file 如果使用gunzip命令解压filename.tgz文件,则filename.tgz会被删除,以filename.tar代替。
3.2文件定位、查找
选项 含义
Which 依序从path环境变量所列的目录中找出command的位置,并显示完整路径的名称
whereis 找出特定程序的可执行文件、源代码文件以及manpage的路径
find 按条件搜索,并执行一定的动作。
locate 带记忆的文件搜索
updatedb 更新slocate的索引数据库
3.2.1 which
语法 which command
说明 依序从path环境变量所列的目录中找出command的位置,并显示完整路径的名称。在找到第一个符合条件的程序文件时,就立刻停止搜索,省略其余未搜索目录。
范例:
找出ls命令的程序文件的位置:which ls ,
系统输出:/usr/bin/ls
3.2.2 whereis
语法 whereis [option] name
说明 找出特定程序的可执行文件、源代码文件以及manpage的路径。你所提供的name会被先除去前置的路径以及任何.ext形式的扩展名。
whereis 只会在标准的Linux目录中进行搜索。
-b 只搜索可执行文件
-m 只搜索manpage
-s 只搜索源代码文件
-B directory 更改或限定搜索可执行的文件的目录
-M directory 更改或限定搜索manpage的目录
-S directory 更改或限定搜索源代码文件的目录
3.2.3 find
语法 find paths expression [action
说明 以paths为搜索起点逐层往下找出每一个符合expression条件的文件,并对该文件执行action所代表的动作。
expression是搜索条件,它由一个代表匹配项目的选项以及一个代表匹配模式的参数构成。
action是处理动作,它有一个代表“处理方式”的选项以及一个操作参数构成。若不指定action,则默认动作是显示出文件名。
常用的搜索条件
-name pattern
-path pattern
-lname pattern
找出名称、路径名称或符号链接的目标匹配pattern模式的文件。
pattern可以包含shell的文件名通配符,路径是相对于搜索起点的。
常见处理动作
-print 显示出文件的相对路径(相对于搜索起点)。
-exec cmd /; 执行指定的shell命令。若cmd含有任何shell特殊字符,则他们之前都必须加上/符号,以免shell立刻执行他们。
在cmd里,可以用”{}”符号(包括双引号)表示 find所找出的文件。
3.2.4 locate
语法 locate patterns
说明 第一次执行locate时,它会建立一个索引数据库,当往后再次执行时,它便从索引数据库中迅速找出文件的位置。
locate很适合用来反复搜索很少变动的目录树,但是对于刚改名的旧文件以及新建的文件,locate就找不到了,除非重建数据库。
3.2.5 updatedb
语法 updatedb [option]
说明 更新slocate的索引数据库。
选项 -e directories 略过directories所列的目录。
find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录
find / -user user1 搜索属于用户 'user1' 的文件和目录
find /home/user1 -name \*.bin 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件
find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件
find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件
find / -name \*.rpm -exec chmod 755 '{}' \; 搜索以 '.rpm' 结尾的文件并定义其权限
find / -xdev -name \*.rpm 搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备
locate \*.ps 寻找以 '.ps' 结尾的文件 - 先运行 'updatedb' 命令
whereis halt 显示一个二进制文件、源码或man的位置
which halt 显示一个二进制文件或可执行文件的完整路径
head 查看文件的开头部分tail 查看文件结尾的10行less 一个分页工具,它允许一页一页地(或一个屏幕一个屏幕地)查看信息more 一个分页工具,它允许一页一页地(或一个屏幕一个屏幕地)查看信息