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}'

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

  1. linux安全加固浅谈

    难易程度:★★★阅读点:linux;python;web安全;文章作者:xiaoye文章来源:i春秋关键字:网络渗透技术 前言linux被越来越多的企业使用,因此掌握一些基本的linux安全加固是有必 ...

  2. Linux文件目录权限浅谈

    1.基本权限三种(1)r (read) 读 针对目录,有读(r)权限就代表能对此目录有列表功能,就是可以执行ls命令进行查看,另外还有cp的功能.针对文件,有读(r)权限就代表能对此文件有阅读功能,可 ...

  3. linux服务器开发浅谈

    [开发前准备] 在进行linux服务器开发之前,必须很清楚地了解所开发的对象需要考虑的相关问题比如:功能架构:提供服务的模块体系结构稳定性:服务器的出core率,内存泄露情况性能:请求与返回的速度与正 ...

  4. Linux说明书 - man浅谈

    原文链接: http://www.cnblogs.com/xuxn/archive/2011/08/26/linux-manual-man-command.html 所有学过Linux的同学都应该知道 ...

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

    一.tcp协议格式 二.三次握手 在 TCP/IP 协议中.TCP 协议提供可靠的连接服务,採用三次握手建立一个连接. 第一次握手:建立连接时,client发送 syn 包(tcp协议中syn位置1. ...

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

    Linux的文本处理工具浅谈 awk   老大 [功能说明] 用于文本处理的语言(取行,过滤),支持正则 NR代表行数,$n取某一列,$NF最后一列 NR==20,NR==30 从20行到30行 FS ...

  7. 浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释

    浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释 下面小编就为大家带来一篇浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释.小编觉得挺不错的,现在就分享给 ...

  8. 浅谈Linux中的信号处理机制(二)

    首先谢谢 @小尧弟 这位朋友对我昨天夜里写的一篇<浅谈Linux中的信号处理机制(一)>的指正,之前的题目我用的“浅析”一词,给人一种要剖析内核的感觉.本人自知功力不够,尚且不能对着Lin ...

  9. 浅谈 Linux 内核无线子系统

    浅谈 Linux 内核无线子系统 本文目录 1. 全局概览 2. 模块间接口 3. 数据路径与管理路径 4. 数据包是如何被发送? 5. 谈谈管理路径 6. 数据包又是如何被接收? 7. 总结一下 L ...

随机推荐

  1. logstash file输入,无输出原因与解决办法

    1.现象 很多同学在用logstash input 为file的时候,经常会出现如下问题:配置文件无误,logstash有时一直停留在等待输入的界面 2.解释 logstash作为日志分析的管道,在实 ...

  2. 学习ASP.NET Core, 怎能不了解请求处理管道[6]: 管道是如何随着WebHost的开启被构建出来的?

    注册的服务器和中间件共同构成了ASP.NET Core用于处理请求的管道, 这样一个管道是在我们启动作为应用宿主的WebHost时构建出来的.要深刻了解这个管道是如何被构建出来的,我们就必须对WebH ...

  3. JavaScript常见的五种数组去重的方式

    ▓▓▓▓▓▓ 大致介绍 JavaScript的数组去重问题在许多面试中都会遇到,现在做个总结 先来建立一个数组 var arr = [1,2,3,3,2,'我','我',34,'我的',NaN,NaN ...

  4. AI人工智能系列随笔:syntaxnet 初探(1)

    人工智能是 最近的一个比较火的名词,相信大家对于阿尔法狗都不陌生吧?其实我对人工智能以前也是非常抵触的,因为我认为机器人会取代人类,成为地球乃至宇宙的霸主,但是人工智能带给我的这种冲击,我个人感觉是欲 ...

  5. 如何理解DT将是未来IT的转型之路?

    如今的IT面临着内忧外患的挑战. 一方面,企业多多少少都建立了信息化,有些企业或集团甚至会有数几十个分公司,包含直销.代理.零售以及第三方物流等多种业态.越是复杂的业务,信息化建设越困难,比如运用大量 ...

  6. H3 BPM引擎API接口

    引擎API接口通过 Engine 对象进行访问,这个是唯一入口. 示例1:获取组织机构对象 this.Engine.Organization.GetUnit("组织ID"); 示例 ...

  7. centos 6.5 升级php

    1>追加CentOS 6.5的epel及remi源. # rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-re ...

  8. Spring MVC重定向和转发以及异常处理

    SpringMVC核心技术---转发和重定向 当处理器对请求处理完毕后,向其他资源进行跳转时,有两种跳转方式:请求转发与重定向.而根据要跳转的资源类型,又可分为两类:跳转到页面与跳转到其他处理器.对于 ...

  9. (转)利用libcurl获取新浪股票接口, ubuntu和openwrt实验成功(三)

    1.  利用 CURLOPT_WRITEFUNCTION 设置回调函数, 利用 CURLOPT_WRITEDATA 获取数据指针 官网文档如下 CALLBACK OPTIONS CURLOPT_WRI ...

  10. .NET里简易实现IoC

    .NET里简易实现IoC 前言 在前面的篇幅中对依赖倒置原则和IoC框架的使用只是做了个简单的介绍,并没有很详细的去演示,可能有的朋友还是区分不了依赖倒置.依赖注入.控制反转这几个名词,或许知道的也只 ...