bash的基础特性
发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,本篇内容介绍了"bash的基础特性"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、bash特性1.
千家信息网最后更新 2025年02月06日bash的基础特性
本篇内容介绍了"bash的基础特性"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
一、bash特性1. 命令历史: history .bash_history:用户登出时保存命令历史的文件(用户家目录下的隐藏文件) history #:显示最近的#条命令; 调用命令历史列表中的命令 !#:再一次执行历史列表中的第#条命令; !!:再一次执行上一条命令; !STRING:再一次执行命令历史列表中最近一个以STRING开头的命令; 调用上一条命令的最后一个参数:快捷键:ESC, . (ESC松开后再按.)快捷键:Alt+. (按住Alt再按.)字符串:!$ (直接输入!$)[root@localhost local]# cat /tmp/script/idsum1.sh ......[root@localhost local]# vi !$vi /tmp/script/idsum1.sh
2.补全: 命令补全: 能唯一标识,则直接Tab补全,不能的话,再按一次Tab给出列表; 外部命令根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的文件名 路径补全: 唯一标识Tab补全,不能的话,再按一次Tab给出列表;3.命令行展开 ~:自动展开为用户的家目录,或指定的用户的家目录; {}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径;
[root@localhost tmp]# ls x_{y,z}x_y:afile1 afile2x_z:afile3 afile4
4.命令的状态执行结果 成功: 返回0; 失败: 1~255; 命令执行完成后,执行状态保存在bash的特殊变量$?中;
[root@localhost x_z]# useradd yc[root@localhost x_z]# echo $?[root@localhost x_z]# useradd ycuseradd: user 'yc' already exists[root@localhost x_z]# echo $?9
命令正常执行时,有的还会有命令返回值,根据命令及其功能不同,结果各不相同。 引用命令的执行结果:$(COMMAND)或~(COMMAND)5.引用 强引用:单引号,其中任何内容直接显示,不做替换。 弱引用:双引号,其中变量做变量替换,将出现变量的地方替换成变量的值。 命令引用:反单引号,就是引用命令执行结果,$(COMMAND)或~(COMMAND)。
[root@localhost x_z]# name="YC"[root@localhost x_z]# echo '$name'$name [root@localhost x_z]# echo "$name"YC[root@localhost x_z]# mkdir dir_`date +%h-%M-%S`[root@localhost x_z]# lsafiel3 afile4 dir_Jul-48-03
6.快捷键 ctrl+a : 跳至命令行首; ctrl+c : 跳至命令行尾; ctrl+u : 删除从行首到光标; ctrl+k : 删除从光标到行尾; ctrl+l : clear;
7. 文件通配符 globbing 通配符实际上是一种shell实现的路径扩展功能,当shell在"参数"中遇到通配符后, 会将其当做路径或文件名在磁盘上搜寻可能的匹配。 * : 匹配任意长度任意字符; ? : 匹配任意单个字符,如??pa,p?a?; []: 匹配指定范围内的任意单个字符; 有几种特殊格式: [a-z];[A-Z];[0-9];[a-z0-9] [[:upper:]] : 所有大写字母 [[:lower:]] : 所有小写字母 [[:digit:]] : 所有数字 [[:alpha:]] : 所有字母 [[:alnum:]] : 所有字母和数字 [[:space:]] : 空格字符 [[:punct:]] : 所有标点符号 不记得没关系,man grep里面有:Their names are self explanatory, and they are [:alnum:], [:alpha:], [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:], [:punct:], [:space:], [:upper:], and [:xdigit:]. For example, [[:alnum:]] means the character class of numbers and letters in the current locale. In the C locale and ASCII character set encoding, this is the same as [0-9A-Za-z] ^[]: 匹配指定范围外的任意单个字符; [^[:upper:]] [^a-z] 示例:
[root@localhost x_z]# ls *[Ff]ile* ---含File或者file的文件名afile4 myfile MyFile myfile_002[root@localhost x_z]# find /tmp/x_z/ -name "*[^[:alpha:]]*" ---含非字母的文件名/tmp/x_z//tmp/x_z/afile4/tmp/x_z/afiel3/tmp/x_z/dir_Jul-48-03/tmp/x_z/1.txt/tmp/x_z/myfile_002[root@localhost x_z]# find /tmp/x_z/ -name "*[^a-z]*" ---含非小写字母的文件名/tmp/x_z//tmp/x_z/afile4/tmp/x_z/afiel3/tmp/x_z/dir_Jul-48-03/tmp/x_z/1.txt/tmp/x_z/myfile_002/tmp/x_z/MyFile
二、正则表达式 由一类特殊字符集文本字符所编写的模式,其中有些字符不表示其字面意义(要表示要用转义字符/),而是用于表示控制或者统配的功能。 表达式组成:原义文本字符+元字符 元字符:指那些在正则表达式中具有特殊意义的专用字符,它使正则表达式具有处理能力。 grep:Global search Regular expression and print out the line 文本搜索工具,根据用户指定的模式(过滤条件)对目标文件逐行进行匹配检查,打印匹配的行; 正则表达式引擎:元字符及规则因引擎的不同略有不同。 grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...] OPIONTS: -i : 不区分大小写(ignore case); -o : 仅显示匹配到的字符; -v : 显示不能匹配到的行; -q : 不输出任何信息(当只需要执行结果状态时使用) -E : 支持扩展正则表达式 -A #: after 匹配行的后#行 -B #: before匹配行的前#行 -C #: context 匹配行的前后#行 基本正则表达式元字符: 字符匹配 . : 匹配任意单个字符; []: 匹配指定范围内的任意单个字符; 有几种特殊格式: [a-z];[A-Z];[0-9];[a-z0-9] [[:upper:]] : 所有大写字母 [[:lower:]] : 所有小写字母 [[:digit:]] : 所有数字 [[:alpha:]] : 所有字母 [[:alnum:]] : 所有字母和数字 [[:space:]] : 空格字符 [[:punct:]] : 所有标点符号 man grep里面:Their names are self explanatory, and they are [:alnum:], [:alpha:], [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:], [:punct:], [:space:], [:upper:], and [:xdigit:]. For example, [[:alnum:]] means the character class of numbers and letters in the current locale. In the C locale and ASCII character set encoding, this is the same as [0-9A-Za-z] ^[]: 匹配指定范围外的任意单个字符; [^[:upper:]]次数匹配: 指定出现的次数的字符后面,限制前面字符出现的次数,实行贪婪模式 贪婪模式:在整个表达式匹配成功的前提下,尽可能多的匹配; * : 匹配前面字符的任意次,0次,1次或者多次 .* : 匹配前面任意长度的任意字符; \? : 匹配前面字符0次或者1次,即可有可无; \+ : 匹配前面字符1次或者多次,即必存在; \{m\} : 匹配前面字符指定m次; \{m,n\} : 匹配前面字符至少m次,至多n次; \{0,n\} : 匹配前面字符至多n次; \{m,\} : 匹配前面字符至少m次; 位置锚定: ^ : 行首锚定 $ : 行尾锚定; ^PATTEERN$ : 用PATTERN来匹配整行; ^$ : 空白行; ^[[:space:]]*$ : 空行或者包含空白字符的行;单词锚定: \<或者\b : 词首锚定,放在词的前面; \>或者\b : 词尾锚定,放在词的后面; \: 匹配完整单词PATTERN;分组及引用 \(\) :将一个或者多个字符捆绑在一起,作为一个整体处理;用括号括起来,表示括号时要用转义字符; 注意:分组括号中的模式匹配到的内容会被正则表达式引擎自动记录于内部变量中,这些变量为: \1: 模式从左边起,第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符; \2: 模式从左边起,第二个左括号以及与之匹配的右括号之间的模式所匹配到的字符; \3: 后项引用: 引用前面的分组括号中的模式所匹配的字符;
练习:
2. 显示/etc/passwd文件中不以/bin/bash结尾的行
[root@localhost x_z]# grep -v "/bin/bash$" /etc/passwdbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologin......
3. 找出/etc/passwd中包含二位数字或者三位数字的行
[root@localhost x_z]# grep "\<[[:digit:]]\{2,3\}\>" /etc/passwdmail:x:8:12:mail:/var/spool/mail:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologingames:x:12:100:games:/usr/games:/sbin/nologin......
4. 显示/porc/meminfo文件中大写或者小写S开头的行
[root@localhost x_z]# grep "^[Ss]\+*" /proc/meminfo ----错误示范,这个*可以是0次,没有s也行;MemTotal: 3868768 kBMemFree: 2927360 kB....[root@localhost x_z]# grep "^[Ss]\+" /proc/meminfo SwapCached: 0 kBSwapTotal: 2097148 kBSwapFree: 2097148 kBShmem: 9368 kBSlab: 149628 kBSReclaimable: 85044 kBSUnreclaim: 64584 kB[root@localhost x_z]# grep -i "^[s]\+" /proc/meminfo SwapCached: 0 kBSwapTotal: 2097148 kBSwapFree: 2097148 kBShmem: 9368 kBSlab: 149628 kBSReclaimable: 85044 kBSUnreclaim: 64584 kB[root@localhost x_z]# grep -E "^(s|S)+" /proc/meminfo SwapCached: 0 kBSwapTotal: 2097148 kBSwapFree: 2097148 kBShmem: 9368 kBSlab: 149788 kBSReclaimable: 85028 kBSUnreclaim: 64760 kB
egrep 支持扩展的正则表达式,实现grep文本过滤功能;grep -E -i;-o;-v;-q;-G(基本正则表达式) 支持扩展正则表达式元字符: 字符匹配 . : 匹配任意单个字符; []: 匹配指定范围内的任意单个字符; ^[]: 匹配指定范围外的任意单个字符;次数匹配: 指定出现的次数的字符后面,限制前面字符出现的次数,实行贪婪模式 贪婪模式:在整个表达式匹配成功的前提下,尽可能多的匹配; * : 匹配前面字符的任意次,0次,1次或者多次 .* : 匹配前面任意长度的任意字符; ? : 匹配前面字符0次或者1次,即可有可无; + : 匹配前面字符1次或者多次,即必存在; {m} : 匹配前面字符指定m次; {m,n} : 匹配前面字符至少m次,至多n次; {0,n} : 匹配前面字符至多n次; {m,} : 匹配前面字符至少m次; 位置锚定: ^ : 行首锚定 $ : 行尾锚定; ^PATTEERN$ : 用PATTERN来匹配整行; ^$ : 空白行; ^[[:space:]]*$ : 空行或者包含空白字符的行;单词锚定: \<或者\b : 词首锚定,放在词的前面; \>或者\b : 词尾锚定,放在词的后面; \: 匹配完整单词PATTERN;分组及引用 ( ):将一个或者多个字符捆绑在一起,作为一个整体处理;用括号括起来,表示括号时要用转义字符; 注意:分组括号中的模式匹配到的内容会被正则表达式引擎自动记录于内部变量中,这些变量为: \1: 模式从左边起,第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符; \2: 模式从左边起,第二个左括号以及与之匹配的右括号之间的模式所匹配到的字符; \3: 后项引用: 引用前面的分组括号中的模式所匹配的字符; 或 a|b 如 C|cat 表示C或者cat; (C|c)at 表示Cat或者cat;
练习:
5. 使用echo输出一个绝对路径,使用egrep取出路径名,类似执行dirname /etc/passwd的结果。
[root@localhost pp]# pwd/tmp/x_z/pp[root@localhost pp]# lsYC.sh[root@localhost pp]# dirname /tmp/x_z/pp/YC.sh /tmp/x_z/pp[root@localhost pp]# echo /tmp/x_z/pp/YC.sh | grep -E ".*/\<" ----显示匹配的行全部/tmp/x_z/pp/YC.sh[root@localhost pp]# echo /tmp/x_z/pp/YC.sh | grep -E -o ".*/\<" /tmp/x_z/pp/
6. 找出ifconfig的IP地址,要求结果中只显示IP地址。
[root@localhost pp]# ifconfig | grep -Eo "(\<([0-9]|[0-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>.){3}\<([0-9]|[0-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>"192.167.1.23255.255.255.0192.167.1.255127.0.0.1255.0.0.0
fgrep: 不支持正则表达式元字符,任何符号都是字符; 当无需要用到元字符去编写模式时,使用fgrep会更好。
"bash的基础特性"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
字符
命令
模式
括号
表达式
正则
文件
变量
字母
单个
元字符
结果
路径
数字
次数
范围
分组
特殊
内容
历史
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
北京服务器机柜设计
黑进服务器给管理员发消息
思特奇有网络安全吗
我的世界幻想乡服务器实况
龙泉天气预报软件开发
吉林便民平台软件开发系统
戴尔服务器产业生态合作项目
胡润网络安全企业百强名单
洛阳洛枫网络技术有限公司
网络安全视频英文
国家网络安全宣传红包
徐州idc服务器租用
商标软件开发第几类
内存数据库 fastdb
233三级数据库技术教程
云派服务器
数据库随笔
求生之路如何创造服务器
青州民宿软件开发
威海兔由网络技术
涉外企业知识产权数据库
数据库候选4个分类的标题
数据库中size什么意思
软件开发宣传部职责
曙光服务器硬件巡检工具
服务器咋重启
网络服务器的安装与配置
无锡质量网络技术特点
孝义潮尚互联网科技
安利网络安全