
正文
linux自动匹配命令 linux匹配文件内容命令
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
linux命令自动补全工具bash-completion,自动补全git、Docker、kubenetes等命令
在 Linux 命令行中linux自动匹配命令,当输入字符后linux自动匹配命令,按Tab 键,Shell 就会列出以这些字符开头的所有可用命令,如果只有一个命令匹配到,按一次 Tab 键就自动将这个命令补全。
如果输入pass,此时按 Tab 键,因为以pass开头的命令只有passwd这个命令, Shell 就会自动补全 passwd 命令。
另外如果输入的字符匹配多个命令则会列出所有可用的命令,比如,如果输入do,此时按 Tab 键 Shell 就会自列出可用的命令。
但是系统自带的命令补全功能有限,自动补全功能仅限于命令和文件名。
可以安装 Bash 命令补全增强软件包 bash-completion来实现更多命令的补全。
以Centos为例
直接通过yum命令安装
bash-completion版本信息
配置命令补全
命令补全的脚本存放在/usr/share/bash-completion/completions/目录,可以在这个目录查看支持增强补全功能的命令。
再试试输入docker命令后按tab键linux自动匹配命令:
可以看到后续可用命令的提示,妈妈再也不用担心我记不住命令了。
同样对于kubenetes也可以实现命令的自动补全和提示:
如果是在安装bash-completion之后安装git是不能自动命令补全,需要手动进行一些配置。
git安装之后文档里会有git-completion.bash文件
安装完git之后重新source一下bash-completion
看看配置之后的效果
如果觉得有用记得收藏点赞
相关问答
Q1: linux命令行如何根据输入前缀在输入历史中匹配
Ctrl+r
然后输入,自动匹配输过的命令
继续按Ctrl+r,匹配下一个
Q2: LINUX系统如何显示出某个匹配的命令?
tab键
如 ubuntu下键入下列命令 sud[tab] apt-g[tab] ins[tab]
会自动补全为sudo apt-get install
如果继续键入命令如sudo apt-get install php[tab tab]则会列出以php开头linux自动匹配命令的所有命令
Q3: Linux grep、egrep使用命令详解
grep egrep区别
grep 默认不支持扩展 但可以通过-E 选择来支持扩展正则
egrep 支持扩展正则
关于正则与扩展正则的区别可以看我另一篇shell 正则的介绍
文件处理顺序 以行为单位,逐行进行处理
默认只输出与表达式相匹配的文本行
基本用法
- 格式1:egrep [选择] '正则表达式' 文件
- 格式2:前置命令 | egrep [选择] '正则表达式'
• egrep命令工具 (扩展正则命令)
• 常用命令选项
•grep 正则表达式,用来查找过滤文档的工具符号
grep "root" user //在user文档中查找有单词root的行
grep "^root" user //在user文档中查找以单词root开头的行
grep "bash " user //查找空行
grep "^ " user //查找以空格开头的行
grep "[rot]" user //查找字母r或者o或者t
grep "roo[tn]" user //查找root或者roon
grep "[^rot]" user //查找字母r或者o或者t之外的内容
grep "[a-z]" user //查找小写字母
grep "[A-Z]" user //查找大写字母
grep "[a-Z]" user //查找所有字母
grep "[0-9]" user //查找数字
grep "r..t" user //查找以r开头t结尾中间有2个任意字符的单词
grep "r. " user //查找以r开头后面任意字符 相当手通配符
grep "ro*" user //查找以r开头后面有或没有字母o的单词,o可以出现任意次
grep "o{1,2}" user //查找o出现1次到2次的行
grep "o{2,3}" user //查找o出现2次到3次的行
grep "o{2}" user //查找o出现2次的行
grep "o{1,} " user //查找o出现1次以及1次以上
grep "(:0){2}" user //查找:0(数字零)连续出现2次的行
扩展正则
egrep "o+" user //查找o出现1次以及1次以上
egrep "o?" user //查找o出现0次或1次
egrep "o{1,2}" user //查找o出现1次到2次的行
egrep "o{2,3}" user //查找o出现2次到3次的行
egrep "o{2}" user //查找o出现2次的行
egrep "o{1,}" user //查找o出现1次以及1次以上
egrep "(:0){2}" user //查找:0(数字零)连续出现2次的行
egrep "bash|nologin" user //查找bash或者nologin
egrep "\bthe\b" a //查找单词the,前后是空格或者特殊符号
案例:
正则表达式匹配练习
1)典型的应用场合:grep、egrep检索文本行
grep命令不带-E选项时,支持基本正则匹配模式。比如“word”关键词检索、“^word”匹配以word开头的行、“word$”匹配以word结尾的行……等等。
输出以“r”开头的用户记录:
输出以“localhost”结尾的行:
若希望在grep检索式同时组合多个条件,比如输出以“root”或者以“daemon”开头的行:
而若若使用grep -E或egrep命令,可支持扩展正则匹配模式,能够自动识别 |、{} 等扩展正则表达式中的特殊字符,用起来更加方便,比如:
或者
使用grep -E 与 使用egrep命令完全等效,推荐使用后者,特别是涉及到复杂的正则表达式的时候。
2)grep、egrep命令的-q选项
选项 -q 表示 quiet(静默)的意思,结合此选项可以只做检索而并不输出,通常在脚本内用来识别查找的目标是否存在,通过返回状态 $? 来判断,这样可以忽略无关的文本信息,简化脚本输出。
比如,检查/etc/hosts文件内是否存在192.168.4.4的映射记录,如果存在则显示“YES”,否则输出“NO”,一般会执行:
这样grep的输出信息和脚本判断后的提示混杂在一起,用户不易辨别,所以可以改成以下操作:
是不是清爽多了,从上述结果也可以看到,使用 -q 选项的效果与使用 /dev/null的效果类似。
3)基本元字符 ^、$ —— 匹配行首、行尾
输出注释的配置行(以#开头的行):
统计本地用户中登录Shell为“/sbin/nologin”的用户个数:
提示: -m10仅在文件的前10行中过滤,后面的行不再过滤。
结合 -c 选项输出匹配的行数
使用 -c 选项可输出匹配行数,这与通过管道再 wc -l的效果是相同的,但是写法更简便。比如,统计使用“/bin/bash”作为登录Shell的正常用户个数,可执行:
或者
4)基本元字符 . —— 匹配任意单个字符
以/etc/rc.local文件为例,确认文本内容:
输出/etc/rc.local文件内的空行(用 –v 选项将条件取反):
5)基本元字符 +、?、 —— 目标出现的次数*
还以/etc/rc.local文件为例:
输出包括 f、ff、ff、……的行,即“f”至少出现一次:
输出包括init、initial的行,即末尾的“ial”最多出现一次(可能没有):
输出包括stu、stuf、stuff、stufff、……的行,即末尾的“f”可出现任意多次,也可以没有。重复目标只有一个字符时,可以不使用括号:
输出所有行,单独的“.*”可匹配任意行(包括空行):
输出/etc/passwd文件内“r”开头且以“nologin”结尾的用户记录,即中间可以是任意字符:
6)元字符 {} —— 限定出现的次数范围
创建一个练习用的测试文件:
输出包括ababab的行,即“ab”连续出现3次:
输出包括abab、ababab、abababab的行,即“ab”连续出现2~4次:
输出包括ababab、abababab、……的行,即“ab”最少连续出现3次:
7)元字符 [] —— 匹配范围内的单个字符
还以前面的测试文件bracet.txt为例:
输出包括abc、abd的行,即前两个字符为“ab”,第三个字符只要是c、d中的一个就符合条件:
输出包括大写字母的行,使用[A-Z]匹配连续范围:
8)单词边界匹配
以文件/etc/rc.local为例:
输出包括单词“init”的行,文件中“initialization”不合要求:
或者:
输出包括以“ll”结尾的单词的行,使用 匹配单词右边界:
或者:
9)多个条件的组合
通过dmesg启动日志查看蓝牙设备、网卡设备相关的信息:
Q4: linux 正则表达式怎么匹配
一.linux文本查找命令
在说linux正规表达式之前,还介绍下linux中查找文本文件常用的三个命令:
1.grep : 最早的文本匹配程序,使用POSIX定义的基本正则表达式(BRE)来匹配文本。
2.egrep : 扩展式grep,其使用扩展式正规表达式(ERE)来匹配文本。
3.fgrep : 快速grep,这个版本匹配固定字符串而非正则表达式。并且是唯一可以并行匹配多个字符串的版本。
如下简单的介绍grep命令:
语法格式:
grep [options ...] pattern-spec [files ...]
用途:
匹配一个或多个模式的文本行。
options:
-E : 使用扩展正则表达式进行匹配, grep -E 或取代 egrep 命令。
-F : 使用固定字符串进行匹配, grep -F 或取代传统的fgrep命令。
-e : 通常第一个非选项的参数认为是要匹配的模式,也可以同时提供多个模式,只要将其放入单引号,并用换行字符分隔他们。
模式以减号开头时,为防止混淆其为选项,-e选项说明其后的参数为模式,即使他以减号开头。
-f : 从pat-file文件读取模式作为匹配。
-i : 模式匹配时忽略大小写差异。
-l : 列出匹配模式的文件名称,而不是打印匹配的行。
-q : 静默的,如果匹配成功,不将匹配的行输出到标准输出;否则即是不成功。
-s : 不显示错误信息,通常与-q并用。
-v : 显示不匹配模式的行。
说明:可以同时查找多个文件中的内容,当指定多个文件时,每个显示出的文件行前会有文件名加一个冒号标识其来自哪个文件。
可以使用多个-e 或 -f 选项,建立要查找的模式列表。
二.正则表达式简要介绍
1.正则表达式的组成
(1).一般字符:没有特殊意义的字符
(2).特殊字符(meta字符):元字符,有在正则表达式中有特殊意义
2.如下讲下正则表达式中的常见meta字符
(1).POSIX BRE与ERE中都有的meta字符:
\ : 通常用于打开或关闭后续字符的特殊含义,如\(...\)与\{...\}
. : 匹配任何单个字符(除NUL)
* : 匹配其前的任何数目或没有的单个字符,例: . 表示任一字符, 则 .* 匹配任一字符的任意长度
^ : 匹配紧接着的正则表达式,BRE中仅在正则表达式的开头有特殊的含义,ERE中在任何位置都有特殊含义
$ : 匹配前面的正则表达式,在字符串或者行结尾处。BRE中仅在正则表达式的结尾处有特殊的含义,ERE中在任何位置都有特殊含义
[] : 匹配方括号内的任一字符,其中可用连字符(-)指的连续字符的范围;^符号苦出现在方括号的第一个位置,则表示匹配不在列表中的任一字符,
(2).POSIX BRE中才有的字符:
\{n,m\} : 区间表达式,匹配在它前面的单个字符重现的次数区别。\{n\}指重现n次;\{n,m\}指重现n至m次;
\( \) : 保留空间,可以将最多9个独立的子模式存储在单个模式中。如\(ab\).*\1 :
指匹配ab组合的两次重现,中间可存在任意数目的字符。
\n : 重复在\(与\)方括号内第n个子模式至此点的模式。
(3).POSIX ERE中才有的字符:
{n,m} : 与BRE的\{n,m\}功能相同
+ : 匹配前面正则表达式的一个或多个扩展
? : 匹配前面正则表达式的零个或一个扩展
| : 匹配|符号前或后的正则表达式
( ) : 匹配方括号括起来的正则表达式群
(4). 方括号([])表达式
4.1.字符集 [: :]
标识字符集,有如下几种:
[::alnum]
: 数字字符
[:digit:]
: 数字字符
[:punct:]
: 标点符号字符
[:alpha:]
: 字母字符
[:graph:]
: 非空格字符
[:space:]
: 空格字符
[:blank:]
: 空格与定位字符
[:lower:]
: 小写字母字符
[:upper:]
: 大写字母字符
[:cntrl:]
: 控制字符
[:print:]
: 可显示的字符
[:xdigit:]
: 16进制数字
4.2.排序符号
指将多个字符视为一个符号,如[.ch.]即将ch视为一个符号
4.3.等价字符
认为多个字符相等,如[=e=]在法文的locale里,可匹配于多种与e相似的字符,此处不再列出。
说明:这三种构造除其自身的方括号之外,还必须使用额外的方括号括起来。
例 : [[:alpha:]!] : 匹配任一英文字母或感叹号。
[[.ch.] : 匹配ch排序元素,而不匹配单独的字母c或h.
3.简单正规表达式匹配案例
china : 匹配此行中任意位置有china字符的行
^china : 匹配此以china开关的行
china$ : 匹配以china结尾的行
^china$ : 匹配仅有china五个字符的行
[Cc]hina : 匹配含有China或china的行
Ch.na : 匹配包含Ch两字母并且其后紧跟一个任意字符之后又有na两个字符的行
Ch.*na : 匹配一行中含Ch字符,并且其后跟0个或者多个字符,再继续跟na两字符
二.实例
如下通过常用实例来学习BRE和ERE匹配,源文件url.txt内容如下:
1.url匹配
匹配以http或者https开头,并且其后为:并且含有.的串
BRE匹配:
grep '^https\{0,1\}.*\..*' url.txt
ERE匹配:
grep -E '^https?.*\..*' url.txt
匹配结果如下:
2.Email匹配
示例文件内容为:
hfutwyy@qq.comaaaa@aaa@.comaaa@gmail.com
@@baidu.com
匹配以字母数字或者下划线开头的多个字符,其后有一个@之后有多个字母数字或者下划线,其中有一个.号
grep '^[[:alpha:][:digit:]_]*@[[:alpha:][:digit:]]*\..*' email.txt
匹配结果:
hfutwyy@qq.comaaa@.comaaa@gmail.com
先到这里,后续再接着写。
Q5: 在linux 中如何让 vi 自动列出匹配成员,而不用按ctrl+n
windows版的vi其实是vimlinux自动匹配命令,而Linux版的vilinux自动匹配命令,如果你没有特别设置linux自动匹配命令,它就是vi。
你要运行Linux下的vim来实现自动匹配,就用vim命令
其实是因为VIM加载linux自动匹配命令了很多VI所没有的插件,很多功能VI本身是没有的,都是通过插件实现。而VI的“加强版”VIM实现了这些功能。如果你有能力自己动手为VI配置插件,也可以实现和VIM一样的功能。
linux自动匹配命令的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux匹配文件内容命令、linux自动匹配命令的信息别忘了在本站进行查找喔。






