上面我们已经学过了cat、more、less、tail这些查看文本文件的命令了,但是我想快速查看这个文本文件下的某些关键字是否存在,那怎么办???
在Windows下就比较简单的,几乎所有的文本编辑器(记事本)都支持CTRL+F,往里面输入关键字就可查找出来:
那在Linux下,没有图形界面,没有CTRL+F的情况下,如果不懂一些命令的话,那还真是难找对应的字符出来。下面我就来说说如何快速查找一个文本文件下的某些字符。
3.3.1正则表达式首先我们就来说说正则表达式,如果接触过的同学就知道:这玩意并不好记。一旦不用就很容易就忘记了,所以只能在用的时候查查了~~~所以下面我就直接给出一些规则了,不多说啦。
3.3.2grep命令grep(global search regular expression)是一个强大的文本搜索工具。grep 使用正则表达式搜索文本,并把匹配的行打印出来。
格式:grep [options] PATTERN [FILE...]
PATTERN 是查找条件:可以是普通字符串、可以是正则表达式,通常用单引号将RE括起来。
FILE 是要查找的文件,可以是用空格间隔的多个文件,也可是使用Shell的通配符在多个文件中查找PATTERN,省略时表示在标准输入中查找。
grep命令不会对输入文件进行任何修改或影响,可以使用输出重定向将结果存为文件
例子:
在文件 myfile 中查找包含字符串 mystr的行
grep -n mystr myfile
显示 myfile 中第一个字符为字母的所有行
grep '^[a-zA-Z]' myfile
在文件 myfile 中查找首字符不是 # 的行(即过滤掉注释行)
grep -v '^#' myfile
列出/etc目录(包括子目录)下所有文件内容中包含字符串“root”的文件名
grep -lr root /etc/*
用grep查找/etc/passwd文件中以a开头的行,要求显示行号;查找/etc/passwd文件中以login结束的行;
3.4几种提高工作效率的方法自动补全命令
TAB键
历史命令
上下箭头键
别名alias
这里感觉要说说的就只有别名alias了,我们下面看看例子就懂了!
显示shell当前已经定义的别名;执行其中的两个定义别名的命令;定义一个别名grep,要求其采用彩色方式显示结果
3.5Shell变量 和 Shell环境在Windows下有用户的环境变量,系统的环境变量。在Linux一样也是有的。
Shell 变量大致可以分为三类:
内部变量:由系统提供,用户只能使用不能修改。
?
GROUPS
环境变量:这些变量决定了用户工作的环境,它们不需要用户去定义,可以直接在 shell 中使用,其中某些变量用户可以修改。
用户变量:由用户建立和修改,在 shell 脚本编写中会经常用到。
变量赋值(定义变量)
varName=Value
export varName=Value
引用变量$varName
Shell变量的作用域:
局部变量的作用范围仅仅限制在其命令行所在的Shell或Shell脚本文件中;
全局变量的作用范围则包括本Shell进程及其所有子进程。
局部变量与全局变量互换:可以使用 export 内置命令将局部变量设置为全局变量。 可以使用 export 内置命令将全局变量设置为局部变量。
export命令:
显示当前Shell可见的全局变量
export [-p]
定义变量值的同时声明为全局变量。
export <变量名1=值1> [<变量名2=值2> ...]
声明已经赋值的某个(些)局部变量为全局变量。
export <变量名1> [<变量名2> ...]
声明已经赋值的某个(些)全局变量为局部变量。
export -n <变量名1> [<变量名2> ...]
Shell环境变量:
环境变量定义 Shell 的运行环境,保证 Shell 命令的正确执行。
Shell用环境变量来确定查找路径、注册目录、终端类型、终端名称、用户名等。
所有环境变量都是全局变量(即可以传递给 Shell 的子进程),并可以由用户重新设置。
Shell变量:查询、显示和取消:
显示当前已经定义的所有变量
所有环境变量:env
所有变量和函数(包括环境变量) :set
显示某(些)个变量的值
echo $NAME1 [$NAME2 ……]
取消变量的声明或赋值
unset <NAME>
3.5.1Shell变量 和 Shell环境练习题