Linux特殊符号浅谈

Linux特殊字符浅谈

我们经常跟键盘上面那些特殊符号比如(?、!、~...)打交道,其实在Linux有其独特的含义,大致可以分为三类:Linux特殊符号、通配符、正则表达式。

Linux特殊符号又可以分以下几类

1、管道符号


字符


名称


功能描述


|


管道


传递的普通的字符串,来自于前一个命令


|xargs


管道流转换


与xargs 传递的是把字符串变成了文件名

2、目录结构


字符


名称


功能描述


.


当前目录


..


当前目录上一级目录

3、重定向符号


字符


名称


功能描述


>


输出重定向


会清空原文以及内容 然后在向文件里面追加内容


>>


追加输出重定向


追加到文件最后一行


<


输入重定向


文本内容输入 tr xargs


<<


追加输入重定向


用于给文件追加多行文本 cat

4、其他特殊符号  


字符


名称


功能描述


#


注释


Linux注释,另#root 超级用户提示符


$


变量符号


shell、$变量取值、AWK取列等


&&


表示并且


前面部分执行成功才执行后面的部分


||


表示或者


前面部分执行失败才执行后面的部分


``


Shell执行命令


引用命令的结果


;


命令分割


一行分割多个命令,没有逻辑联系


‘’


设置字符串变量


不具有变量置换功能,输出时所见即所得


“”


设置字符串变量


具有变量置换功能,解析变量输出


{}


表示序列


以逗号分割,且不能为空,如{a,b,c}表示单独 {0..9}表示范围,同功能的有seq,但seq只产生数字序列


-


cd -  su - root


~


当前目录的家目录


/


根或者路径分割


!


vi/vim强制退出

逻辑运算非,

!+字母 调出最近一次以字母开头的命令

!!使用 最近一次操作的命令

!+数字 调出历史的第几条命令

通配符:通常匹配文件名


字符


名称


功能描述


?


匹配任一个字符(不在括号内的时候)


*


匹配任何字符(0或多个)


[]


匹配符号内任一字符 如[abcd] [0-9]


[!]非


表示不匹配[]里面任一字符

正则表达式:处理大量的字符串,通常以行为单位(简单高效)

基础正则BRE


字符


名称


功能描述


^


以某某开头的


$


以某某结尾的


^$


空行,不是空格


.


表示任意一个字符


\


元字符转义普通字符


\. 普通字符小数点

\n 换行符

\b 单词边界

\r 回车

\t 横向制表符


*


重复之前的字符0个或者多个


.*


匹配所有字符


^.*


以任意多个字符开头


.*$


以任意多个字符结尾


[]


匹配字符串内的任意一个字符,如[abc]匹配a或b或c,[a-z]匹配所有小写字母


[^]


匹配不包含字符串内的任意字符,取反

 扩展正则ERE(使用egrep或者sed -r)


字符


名称


功能描述


+


重复前一个字符一次或一次以上,如[0-9]+


?


重复前一个字符0次或者一次


|


元字符左边字符或者右边字符


()


分组过滤,如()内的内容为一个整体;反向引用:如\1表示引用第一个()里面的内容


a{n,m}


重复前面a字符n到m次,egrep或者sed -r直接使用,如grep,sed使用该功能需要转义a\{n,m\}


a{n,}


重复前面a字符至少n次


a{n}


重复前面a字符n次


a{,m}


重复前面a字符最多m次

学习正则表达,我们可以使用Linux运维三剑客:awk、sed、grep;除了前三者,正则表达式还支持各种编程或者脚本语言

为了更好的学习和工作,我们一般自动添加颜色来区分匹配关键字

cat >> /etc/bashrc << EOF

alias egrep=‘egrep --color=auto‘

alias grep=‘grep --color=auto‘

EOF

source /etc/bashrc

学习步骤:

1:grep /RE/ filename

2:grep -o /RE/ filename 看它如何匹配

区分正则表达式和通配符

表达式是文件或者目录名       -->通配符

表达式是文件内容(字符串)      -->正则表达式

学习正则方法:awk、sed -r、grep/egrep -o:该都是匹配正则,其他都是通配符

帮助文档:通配符man 7 glob

正则表达式:man grep、info grep等等

举例:

1、/etc/hosts 取该文件权限对应的数字内容 如:-rw-r--r--对应的为644

思路方法:sed 正则、awk 分割符、grep、cut、ls 替换、stat、head

stat /etc/hosts | sed -n ‘4p‘ | sed ‘s#^.*(0##g‘ | sed ‘s#/.*$##g‘

stat /etc/hosts | sed -rn ‘4s#^.*\(0(.*)/-.*$#\1#gp‘

stat /etc/hosts | awk ‘NR==4‘ | awk -F "0" ‘{print $2}‘ | cut -c 1-3

stat /etc/hosts | awk ‘NR==4‘ | awk -F "0" ‘{print $2}‘ | awk -F "/" ‘{print $1}‘

stat /etc/hosts | awk ‘NR==4‘ | awk -F "[0/]" ‘{print $2}‘

stat /etc/hosts | awk ‘NR==4‘ | awk -F "0|/" ‘{print $2}‘

stat /etc/hosts | awk -F "[0/]" ‘NR==4{print $2}‘

ls -l /etc/hosts | cut -c 2-10 | tr "rwx-" "4210" | awk -F "" ‘{print $1+$2+$3 $4+$5+$6 $7+$8+$9}‘

ls -l /etc/hosts | cut -c 2-10 | tr "rwx-" "4210" | awk -F "" ‘{for(i=1;i<=NF;i++){if(i<4){user[a]+=$i}else if(i>3&&i<7){group[b]+=$i}else{other[c]+=$i}};print user[a]group[b]other[c]}‘

ls -l /etc/hosts | awk -F "" ‘{gsub("r","4")};{gsub("w","2")};{gsub("x","1")};{gsub("-","0");print $2+$3+$4 $5+$6+$7 $8+$9+$10}‘

2、取IP地址

ifconfig eth0 | awk -F "[ :]+" ‘NR==2{print $4}‘

ifconfig eth0 | awk -F "addr:| Bcast:" ‘NR==2{print $2}‘

时间: 2024-07-28 17:03:54

Linux特殊符号浅谈的相关文章

linux服务器开发浅谈

[开发前准备] 在进行linux服务器开发之前,必须很清楚地了解所开发的对象需要考虑的相关问题比如:功能架构:提供服务的模块体系结构稳定性:服务器的出core率,内存泄露情况性能:请求与返回的速度与正确性负载能力:能同时访问的最大数量和频度 根据不同服务器对象的环境和应用,服务器开发的对应手段相差甚远.比如就客户端连接时间较短却又比较频繁的服务器(例如HTTP服务器)而言,在可选的服务器结构中,预先派生进/线程的结构就要比并发式结构高效 总之,在开发服务器之前,必须进行完整的服务器开发需求分析,

Linux文件目录权限浅谈

1.基本权限三种(1)r (read) 读 针对目录,有读(r)权限就代表能对此目录有列表功能,就是可以执行ls命令进行查看,另外还有cp的功能.针对文件,有读(r)权限就代表能对此文件有阅读功能,可以通过cat等命令查看文件内容. (2)w (write) 写 针对目录,有写(w)权限就代表着在此目录下创建文件和目录,可以通过touch,mkdir等命令创建文件和目录,另外还可以删除此目录下的文件.针对文件,有写(w)权限就代表着对此文件可以写入新的内容和修改文件内容. (3)x (execu

linux命令:浅谈shell中如何进行算术运算

1.let 算术运算表达式 let C=$A+$B eg: A=3  B=5  let C=$A+$B    echo $C  [[email protected] test]# A=3 [[email protected] test]# B=3 [[email protected] test]# let C=$A+$B [[email protected] test]# echo $C 6 2.$[算术运算表达式]        C=$[$A+$B] eg: A=2  B=6  C=$[$A+

Linux网络编程——浅谈 TCP 三次握手和四次挥手

一.tcp协议格式 二.三次握手 在 TCP/IP 协议中.TCP 协议提供可靠的连接服务,採用三次握手建立一个连接. 第一次握手:建立连接时,client发送 syn 包(tcp协议中syn位置1.序号为J)到server,并进入 SYN_SEND 状态.等待server确认: 第二次握手:server收到 syn 包,必须确认客户的 SYN,同一时候自己也发送一个 SYN 包,即 SYN+ACK包(tcp协议中syn位置1,ack位置1.序号K,确定序号为J+1),此时server进入 SY

浅谈递归

定义 英文定义:Recursion is the process of repeating items in a self-similar way. 具体到计算机中去: 递归:又称为递回,在数学和计算机科学中,是指在函数的定义中使用函数自身的方法. [以上定义来源为wiki]. 英文的Recursion表达的是重复发生,再次重现的意思.而对应的中文翻译”递归”确表达了两个意思:” 递”+”归”.这两个意思,正是递归思想的精髓. 递归思想 递归的基本思想是:把规模大的问题转化为规模小的相似的子问题

浅谈 Unix I/O 模型

原文出处:http://miaoo.in/talk-about-unix-io-model.html 在实际应用中,数据操作通常分为输入和输出,那么以输入为例,在操作系统中,一个数据的输入通常分为以下两个过程: a. 等待数据准备好.b. 将准备好的数据从内核拷贝到用户空间. 下面我们将会分别讨论 I/O 模型中的两个大类,即 同步 I/O 与 异步 I/O. 1. 同步 I/O 同步与异步 I/O 的最大不同,就是在在进行数据复制时(即过程 b ),所有的同步 I/O 模型均会发生阻塞.进一步

Linux的文本处理工具浅谈-awk sed grep

Linux的文本处理工具浅谈 awk   老大 [功能说明] 用于文本处理的语言(取行,过滤),支持正则 NR代表行数,$n取某一列,$NF最后一列 NR==20,NR==30 从20行到30行 FS竖着切,列的分隔符 RS横着切,行的分隔符 [语法格式] awk [–F] [“[分隔符]”] [’{print$1,$NF}’] [目标文件] awk 'BEGIN{FS="[列分隔符]+";RS="[行分隔符]+";print "-GEGIN-"

浅谈linux中shell变量$#,[email&#160;protected],$0,$1,$2,$?的含义解释

浅谈linux中shell变量$#,[email protected],$0,$1,$2,$?的含义解释 下面小编就为大家带来一篇浅谈linux中shell变量$#,[email protected],$0,$1,$2的含义解释.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 摘抄自:ABS_GUIDE 下载地址:http://www.tldp.org/LDP/abs/abs-guide.pdf linux中shell变量$#,[email protected],$

浅谈Linux下Makefile编写

浅谈Linux下Makefile的编写 前言:本文简要介绍Makefile文件的编写规范,结合具体项目中的应用进行讲解. 具体代码地址: https://github.com/AnSwErYWJ/DogFood/blob/master/Makefile 简介 Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作.而makefile 文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关