linux 第七节 文本查找命令
| 作用 | 命令 | 使用格式 |
1 | 按照指定条件查找文件 | find | find 查找路径 查找条件 操作 |
2 | 显示PATH环境变量中的命令的执行路径 | which | which 命令 |
3 | 按照关键字检索文本文件中的内容 | grep | grep -参数 查找条件 文件名 |
4 | 进行字符替换 | tr | tr 原字符 结果字符 |
5 | 对文件目录打包压缩解压缩 | tar | tar -参数 文件名 |
find
作用:按照指定条件查找文件
格式:find 查找路径 查找条件 操作
查找条件
-name : 匹配名称查找
-user :匹配所有者(root 或 普通用户)
-type b/d/c/p/l/f :匹配文件类型(块设备、目录、字符设备、管道、链接文件、文本文件)
-size : 匹配文件的大小(+50k查找超过50k的文件,而-50k则代表查找小于50k的文件)
-mtime -n +n :匹配修改内容的时间(-n指n天以内,+n指n天以前)
-atime -n +n :匹配访问文件的时间
-ctime -n +n: 匹配修改权限的时间
通配符
* :任意内容,任意个数
? :任意内容,1个字符
例如:查找/的passwd文件
find / -name “passwd”
find / -name “a*” 检索以a开头的文件
find /etc -name "*.cfg">temp.txt 定向输出到
find /etc -name ".txt" | wc -l (统计以txt结尾的文件个数)
find /etc -name "d*" -user root (并且) 同时查找多种条件
find /etc -name "e*" -o -name "f*" (或者)
find / -user 普通账户名
find /dev -type b 检索设备 (b代表块设备)
find /dev -type c -size -10k (在dev下检索 c类型 小于10k的文件)
find / -size +100M (根目录下查找大于100M的)
find /etc -not -mtime +7 (查找七天内没有更改的文件)
find / -size -50k -size +10k (查找区间)
find / -mtime -10 -empty (10天以内的空文件)
标准输入输出重定向:
标准输入重定向:STDIN,文件描述符为0,默认从键盘输入,也可以从其他文件或命令中输入
输入重定向:将文件
重定向符号:
输入重定向:
命令<文件 :将文件作为命令的标准输入
命令<<分界符:从标准输入中读取,直到遇到“分节符”才停止
输出重定向:
命令>文件:将标准输出重定向到一个文件中(清空源文件内容)
命令>>文件:将结果追加到文件中(保留源文件)
命令2>>文件:将错误信息输出重定向到一个文件中(追加)
管道符:
格式:命令A | 命令B |命令C ……
作用:将前一个原命令的输出到屏幕的信息作为下一个命令的标准输入
常用于管道符的命令:wc ,more ,less ,grep(管道过滤),
重要的环境变量:
环境变量的作用:系统运行环境的相关参数
一般使用大写
PATH环境变量
存储Linux系统命令解释器bash的程序路径
例如:echo $PATH
PATH是命令解释器bash的“助手”,用于给出调用命令的程序存储路径
常用的环境变量:
HOME:用户的家目录
SHELL:SHELL命令解释器路径
HISTSIZE:记录history命令的历史命令个数
LANG:语系
PATH:记录执行文件的路径
MAIL:邮箱文件
RANDOM:随机数
命令执行过程:
第一步:判断是否已绝对/相对路径书写的命令,是则立即执行
第二步:判断是否为别名(alias(设置别名))
第三步:由bash判断输入命令是“内部命令”还是“外部命令”
内部命令:隶属命令解释器的默认命令,直接执行
外部命令:为外部文件的命令
第四步:通过$PASH查询路径,执行命令程序
查看变量的运算符:$,格式
局部变量定义:NICDIR=/etc/sysconfig/network-scripts
(定义NICDIR变量(其他账户不可用),存储网卡位置)
cd $NICDIR
全局变量定义:export NICDIR1 (其他账户可用)
NICDIR1=/etc/sysconfig/network-scripts
su 普通账户名
cd $NICDIR1
which命令:
作用:显示PATH环境变量中的命令的执行路径
格式:which 命令
例如:which cat 显示/bin/cat
注意:命令程序路径默认在/bin路径下
常见文件类型:
普通文件:
标志:-
分类:
纯文本文件(ASCII)
二进制文件(binary)
c.注意:ls -l 显示内容左列第一个字符为-表示普通文件
目录文件:
标志:d
颜色:蓝色
注意:ll命令显示左列第一个字母为d的表示目录文件
设备文件:
字符设备:标志为c,一般为慢速设备,如:终端(tty),键盘,打印机
块设备:标志为b,一般为快速设备,如:硬盘等
链接设备:标志为l,相当于windows的快捷方式
其他:空文件(emp)
文件类型:
文件类型通过扩展名来表示,表示文件的类型及打开方式
格式:*.扩展名
例如:*.txt 文本文件 *.cfg 配置文件 *.tar.gz 压缩文件 *.sh 脚本文件 *.conf 配置文件 *.repo yum配置文件
8.文件内容查找文件:
(1)作用:按照关键字检索文本文件中的内容
(2)格式:grep -参数 查找条件 文件名
(3)参数
a.-n:显示检索内容行的行号
b.-i:忽略字母大小写
c.-v:根据检索关键字进行反向显示
d.-c:统计符合条件的行数
e.-A数字:如:-A3,显示符合条件的当前行及下3行
f.-B数字:如:-B5,显示符合条件的当前行及以上5行
g.-C数字:如:-C2,显示符合条件的当前行及上下两行
passwd文件意义介绍
a.路径:/etc/passwd
b.作用:记录用户账户信息:分为7段,使用冒号分割
c.文件内容意义:
帐户名:密码代号X:UID:GUI:注释:家目录:SHELL
第二列X:密码加密后的代号
第七列:/sbin/nologin 不允许登陆
grep查询实例
在passwd中检索包含root的行信息
grep -n "root" /etc/passwd
在passwd检索不能登陆的信息
grep -n "/sbin/nologin" /etc/passwd
在passwd检索可以登陆的信息
grep -nv "/sbin/nologin" /etc/passwd (反向)
检索包含“halt”的行及下三行信息
grep -nA3 “halt” /etc/passwd
检索包含“sshd”的行及上五行
grep -nB5 “sshd” /etc/passwd
检索包含“ftp”的上下两行
grep -nC2 “ftp” /etc/passwd
检索不能登陆的账户个数
grep -c “/sbin/nologin” /etc/passwd
(等同) grep -n “/sbin/nologin” /etc/passwd | wc -l
检索包含大小写d的行信息
grep -ni “d” /etc/passwd
正则表达式:
概念:正则表达式是为了处理大量文本或字符串而定义的一套规则和方法
特点:
通过定义特殊符号,系统管理员就可以快速过滤,替换,输出需要的字符串
Linux正则表达式一般以行为处理单位
分类:基础正则表达式,扩展正则表达式
用途:在Linux中用于过滤大量日志文件内容
注意:使用正则表达式时注意语系,默认为C语系
使用[] 字符集表示
[ab]:
含义:搜索包含a或b的行信息,[]内只能表示一个内容
例如:
检索包含“d”或“D”的行信息
grep -n [Dd] /etc/passwd
检索包含“o”字母的信息
grep -n [oo] /etc/passwd
[^ ]:
含义:根据关键字进行反向显示(反向着色)
例如:
检索不包含字母o的信息
grep -n [^o] /etc/passwd
注意与 -v的区别 :grep -nv “o” /etc/passwd
检索不以r开头的且包含00t的信息
grep -n [^r]oot /etc/passwd
[- ]:
[0~9]:表示检索包含0~9数字
[a~z]或[A~Z]:表示小写,大写字母
[a~zA~Z]:表示字母
例如:
检索包含[7-9]的信息
grep -n [7-9] /etc/passwd
检索包含大写[A-Z]的信息
grep -n [A-Z] /etc/passwd
使用行首^和行尾$检测
行首^
检索以root开头的信息:
grep -n "^root" /etc/passwd
检索以大写字母开头的信息:
grep -n ^[A-Z] /etc/passwd
检索以#开头的信息
grep -n ^# /etc/sos.conf
检索以[开头的信息
grep -n ^"[" /etc/sos.conf (转义字符)
行尾$
显示空白行:
grep -n ^$ /etc/sos.conf
检索数字结尾的信息:
grep -n [0-9]$ /etc/sos.conf
检索以]结尾的信息
grep -n ]$ /etc/sos.conf (非转义字符)
注意:[^]和^[]的区别
正则通配符:
点(.):代表一个任意字符
星号(*):重复前面一个字符多次或0次的任意字符
例如:
检索以r开头,t结尾,中间2为信息
grep -n "r..t" /etc/passwd
grep -n "o*" /etc/passwd (显示整篇)
grep -n "oo*" /etc/passwd (至少包含1个o)
grep -n ".*" /etc/passwd (整篇文章)
转义字符和区间字符:
转义字符:由于某些字符有特殊作用,若使用原本功能,需使用\进行去掉特殊功能,只保留字符本身功能,称为转义
例如:
touch ttt.txt
echo "hello" > ttt.txt
echo "word." >> ttt.txt
echo "123." >>ttt.txt
cat ttt.txt
grep -n "\."$ ttt.txt
将.进行转义,使用双引号进行定界
区间字符:
格式:\{n1,n2\}
由于{}有特殊作用,必须使用\{\}进行转义
注意:n1<=n2 相等时,简写为\{n1\},表示执行n1 次
grep -n o"\{2\}" /etc/passwd (检索包含2个o的信息)
tr命令
作用:进行字符替换
格式:tr 原字符 结果字符
例如:
查看passwd中的小写改为大写
cat /etc/passwd | tr [a-z] [A-Z]
cat /etc/passwd | tr [0-9] "\ " (因空格为转义字符,需转义)
注意:tr命令常与grep命令进行配合使用
如:grep -n "root" /etc/passwd | tr [a-z] [A-Z]
打包压缩命令:
作用:对文件目录打包压缩解压缩
tar命令:
*.gz:由gzip进行压缩解压缩(常用)
*.bz2:由bzip2进行压缩解压缩
*.tar:只进行打包
*.tar.gz:使用tar进行打包后,进行gzip压缩
*tar.bz2:使用tar打包后进行bz2压缩
*tar.xz:使用tar打包后进行xz压缩
格式:tar -参数 文件名
参数:
常用:
-c :创建压缩文件
-x:解压缩文件
-v:显示压缩及解压缩的时间进度
-f:目标文件名
一般:
-t:查看压缩包中有哪些文件
-p:保留原始文件属性及权限
-P:使用绝对路径进行压缩
常用参数组合:
压缩:-cvf
解压缩:-xvf
例如:
将/etc下的全部内容压缩到/root中并命名为
tar -cvf taretc.tar.gz /etc (压缩)
tar -xvf taretc.tar.gz /etc (解压缩)
注意:-c和-x不能同时使用