文件检索、压缩和归档
. 实验目标
熟练文件内容操作,压缩和归档,程序和文件检索
. 实验步骤
一.文件内容操作
1. 显示文件全部内容—— cat 命令
格式:cat 选项 文件名
命令选项 : -n —每一行显示行号包括空行
[[email protected] ~]# cat /etc/hosts //查看文件内容比较少的
[[email protected] ~]# cat -n /etc/hosts //每一行前显示行号
[[email protected] ~]# cat /root/install.log //显示文件全部内容
[[email protected] ~]# cat -n /root/install.log //-n每一行前显示行号
[[email protected] ~]# cat -n /etc/passwd //显示passwd行号
注:(1)cat查看文件不是目录
(2)查看文件内容比较少的
(3)内容较多时阅读不完整
2. More命令——可以分页显示
格式:more 选项 文件名
[[email protected] ~]# more /root/install.log //可以分页显示
[[email protected] ~]# type ls //指定命令
[[email protected] ~]# ls --help //命令帮助(外部)
[[email protected] ~]# ls --help | more //分页显示
[[email protected] ~]# cat /root/install.log | more //利用管道|对输出信息进行分页
[[email protected] ~]# more /root/install.log //分页显示
3. Less命令——分页显示(比more更全面)
格式:less 选项 文件名
[[email protected] ~]# less /root/install.log //使用less阅读大文件
4. head命令——默认显示文件头10行
格式:head -n 数字 显示头n行
[[email protected] ~]# head /etc/passwd //默认显示文件头十行
[[email protected] ~]# head -n 2 /etc/passwd //截取文件首2行
5. tail命令——默认显示文件尾10行
格式: tail -n 数字显示尾n行
[[email protected] ~]# tail /var/log/messages //默认显示文件尾10行
[[email protected] ~]# tail -n 2 /etc/passwd //截取文件尾2行
[[email protected] ~]# head -n 12 /etc/passwd | tail -n 5 //截取文
件中间8-12行
注:截取中间:先head截取前12行,在从截取的这12行尾数5行,去两者的交集
6. Wc命令——统计
格式: wc 选项 文件名
选项: -l 统计行号
[[email protected] ~]# wc /etc/passwd //统计
[[email protected] ~]# wc -l /etc/passwd //计算文本的总行数或统计有多少个用户账号
7. grep命令——输出包含指定字符串的行
格式:grep 选项 查找条件 目标文件
选项: -i忽略大小写
-v取反
^root以root开头
root$以root结尾
^$匹配空行
-E查找多个关键字,匹配其中任意一个都输出
[[email protected] ~]# ls -l /etc/*.conf | wc -l//目录下文件个数
[[email protected] ~]# cat /etc/hosts
[[email protected] ~]# grep 127.0.0.1 /etc/hosts//输出包含指定字符串
的行
[[email protected] ~]# grep --color 127.0.0.1 /etc/hosts//检索
[[email protected] ~]# grep -v 127.0.0.1 /etc/hosts //取反
[[email protected] ~]# grep root /etc/passwd//检索文本内容
[[email protected] ~]# grep Root /etc/passwd
[[email protected] ~]# grep -i Root /etc/passwd //忽略大小写
[[email protected] ~]# dmesg | grep eth //查看启动消息
[[email protected] ~]# dmesg | grep sda
[[email protected] ~]# grep "^#" /etc/hosts //^以……开头
[[email protected] ~]# grep -v "^#" /etc/hosts //除……
[[email protected] ~]# grep "bash$" /etc/passwd //$以……结尾
[[email protected] ~]# grep -v "^#" /etc/login.defs|grep -v "^$"
[[email protected] ~]# grep -Ev "^#|^$" /etc/login.defs //^$空行,
[[email protected] ~]# grep -c "/bin/bash$" /etc/passwd
//计算以/bin/bash$ 结尾的用户个数
[[email protected] ~]# grep -E "127.0.0.1|localhost6" /etc/hosts
//查看多个关键字,匹配其中任意一个都输出
二.压缩和归档操作
1.zip 压缩
格式:zip 压缩包名 被压缩的文件名
-r—指定对目录压缩
解压:
格式:unzip 文件名.zip解压缩
-d指定解压位置
[[email protected] ~]# ls -lh
[[email protected] ~]# ls -lh > gztest.txt
[[email protected] ~]# cat gztest.txt
[[email protected] ~]# zip gztest gztest.txt //压缩
[[email protected] ~]# ls -lh gztest*
[[email protected] ~]# rm gztest.txt
[[email protected] ~]# ls -lh gztest.txt
[[email protected] ~]# unzip gztest.zip //解压缩
[[email protected] ~]# ls -lh gztest.txt
[[email protected] ~]# mkdir bak
[[email protected] ~]# ls bak
[[email protected] ~]# unzip -d bak gztest.zip //指定解压位置
[[email protected] ~]# ls bak/
[[email protected] ~]# zip -r bak bak
[[email protected] ~]# rm -r bak
[[email protected] ~]# unzip bak.zip
注:解压后原文件仍保留
2. gzip命令
压缩
格式: gzip 文件名
解压缩
格式:gzip -d 文件名.gz
[[email protected] ~]# ls -lh gztest.txt
[[email protected] ~]# gzip gztest.txt //压缩
[[email protected] ~]# ls -lh gztest.*
[[email protected] ~]# gzip -d gztest.txt.gz //解压缩
[[email protected] ~]# ls -lh gztest.*
[[email protected] ~]# bzip2 gztest.txt //压缩
[[email protected] ~]# ls -lh gztest.*
[[email protected] ~]# bzip2 -d gztest.txt.bz2 //解压缩
[[email protected] ~]# ls -lh gztest.*
3. tar命令
制作归档
格式:tar 选项 归档文件 原文件或目录
释放归档
格式:tar 选项 归档文件 [-C目标目录]
选项:
-c创建tar包
-x解包
-t查看
-f使用归档文件
-z调用gzip
-j调用bzip2
-C指定解压位置
--remove打完包后删除原文件
tar -zcf xxx.tar.gz xxx调用gzip压缩
tar -jcf xxx.tar.bz2 xxx调用bzip2压缩
tar -ztf xxx.tar.gz查看xxx.tar.gz里面文件
tar -jtf xxx.tar.bz2查看xxx.tar.bz2里面文件
tar -zxf xxx.tar.gz解压xxx.tar.gz
tar -jxf xxx.tar.bz2解压xxx.tar.bz2
补充:
file查看文件格式
[[email protected] ~]# cd /opt/
[[email protected] opt]# rm -rf /opt/*
[[email protected] opt]# ls
[[email protected] opt]# mkdir test
[[email protected] opt]# cp /boot/* test/
[[email protected] opt]# cp -rf /boot/* test/
[[email protected] opt]# \cp -rf /boot/* test/
[[email protected] opt]# ls
[[email protected] opt]# tar -cf test.tar test/ //创建tar包
[[email protected] opt]# rm test.tar
[[email protected] opt]# tar -cvf test.tar test/ //创建并查看详细信息
[[email protected] opt]# tar -tf test.tar //查看包内使用归档文件
[email protected] opt]# gzip test.tar //压缩
[[email protected] opt]# ls
[[email protected] opt]# gzip -d test.tar.gz //解压缩
[[email protected] opt]# ls
[[email protected] opt]# rm test
[[email protected] opt]# rm -r test
[[email protected] opt]# rm -rf test
[[email protected] opt]# tar -xf test.tar//解开.tar格式的使用归档文件
[[email protected] opt]# ls
使用bzip2对test目录进行压缩...
[[email protected] opt]# tar -zcf test.tar.gz test //制作tar.gz包 文件
gzip
[[email protected] opt]# ls
[[email protected] opt]# tar -jcf test.tar.bz2 test//制作.tar.b2包 文件
bzip2
[[email protected] opt]# ls
[[email protected] opt]# file test.tar.gz //查看文件格式
[[email protected] opt]# file test.tar.bz2
[[email protected] opt]# ls
[[email protected] opt]# rm -rf test
[[email protected] opt]# tar -zxf test.tar.gz//解包
[[email protected] opt]# ls
[[email protected] opt]# ls -ld /root/test
[[email protected] opt]# tar -jxf test.tar.bz2 -C /root/ //释放
[[email protected] opt]# ls -ld /root/test
三.程序和文件检索
1. 执行命令路径的变量PATH
echo $PATH查看PATH的值
作用:
执行任何命令的时候会去从PATH的值(路径)中去搜寻是否有该命令。有就执行,
没有就告诉你找不到这个命令
[[email protected] ~]# echo $PATH
/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:
/root/bin
2. which命令——专门用于查找命令
格式:which [-a] 程序名
[[email protected] ~]# which ls cd //专门用于查找命令(外部命令)
3. locate命令——查找速度快,需要通过updatedb生成数据库
格式:locate 选项 关键字
[[email protected] ~]# updatedb //更新数据库
[[email protected] ~]# touch myhttpd.conf//新建
[[email protected] ~]# ls
[[email protected] ~]# locate myhttpd.conf //查找速度快
[[email protected] ~]# updatedb
[[email protected] ~]# locate myhttpd.conf //定位
[[email protected] ~]# rm myhttpd.conf
[[email protected] ~]# locate myhttpd.conf
[[email protected] ~]# updatedb
[[email protected] ~]# locate myhttpd.conf
4. find命令
格式:find [路径] [条件]
默认不指定路径,就是当前路径
-type 类型
f文件
d目录
l链接
b块设备文件
c字符设备文件
-name名字
-size 大小(单位c表示byte,k表示1024bytes)
+ 大于
-小于
-a多个条件同时满足
-o多个条件满足一条即可
-mtime 文件内容修改
n n为数字,意义在n天之前的“一天之内”被更改过的文件
+n 列出在n天之前(不含n天本身)被更改过的文件名
-n 列出在n天之内(含n天本身)被更改过的文件名
+4代表大于等于5天前的文件名 find /var -mtime +4
-4代表小于等于4天内的文件名 find /var -mtime -4
4则是代表4~5那一天的文件名 find /var -mtime 4
-exec command
eg: find /boot -size +2048k -exec ls -l {} \;
{}find找到的内容
-exec到\;代表find额外命令开始到结束
;特殊字符,需要转义
[[email protected] ~]# find /boot -type l
[[email protected] ~]# file /boot/grub/menu.lst
[[email protected] ~]# ls -l /boot/grub/menu.lst
[[email protected] ~]# find /boot -type d//查找类型 d目录
[[email protected] ~]# find / -name passwd
[[email protected] ~]# find / -name *passwd* //只要passed全部查找
[[email protected] ~]# find / -name *passwd //查找passwd结尾
[[email protected] ~]# find / -name passwd* //查找passwd.
[[email protected] ~]# find / -name passwd????//查找passwd后。。
[[email protected] ~]# find /etc -name "resolv*conf"//按文件名称查找
[[email protected] ~]# find /dev -type c -a -name "tty[1-3]"
//c字符设备 -a多个条件需同时满足
[[email protected] ~]# ls -lh /boot/*
[[email protected] ~]# find /boot -size +2M
[[email protected] ~]# cp install.log install.new
[[email protected] ~]# ls -lh install.???
[[email protected] ~]# find -name "install.???" -mtime +30查找30天
前 //按内容修改时间
[[email protected] ~]# find /boot -size +2M//大小 +大于 ,-小于
[[email protected] ~]# find /boot -size +2M -exec ls -lh {} \;