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. SQL Server-聚焦IN VS EXISTS VS JOIN性能分析(十九)

    前言 本节我们开始讲讲这一系列性能比较的终极篇IN VS EXISTS VS JOIN的性能分析,前面系列有人一直在说场景不够,这里我们结合查询索引列.非索引列.查询小表.查询大表来综合分析,简短的内 ...

  2. LeetCode[5] 最长的回文子串

    题目描述 Given a string S, find the longest palindromic substring in S. You may assume that the maximum ...

  3. JQuery easyUI DataGrid 创建复杂列表头(译)

    » Create column groups in DataGrid The easyui DataGrid has ability to group columns, as the followin ...

  4. ASP.NET SignaiR 实现消息的即时推送,并使用Push.js实现通知

    一.使用背景 1. SignalR是什么? ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程.实时 Web 功能是指 ...

  5. Html.DropDownLis绑定数据库

    效果: 方法一: View: <div class="col-md-md-4"> <div class="input-group"> & ...

  6. ADO.NET一小记-select top 参数问题

    异常处理汇总-后端系列 http://www.cnblogs.com/dunitian/p/4523006.html 最近使用ADO.NET的时候,发现select top @count xxxx 不 ...

  7. NGINX引入线程池 性能提升9倍

    1. 引言 正如我们所知,NGINX采用了异步.事件驱动的方法来处理连接.这种处理方式无需(像使用传统架构的服务器一样)为每个请求创建额外的专用进程或者线程,而是在一个工作进程中处理多个连接和请求.为 ...

  8. hbase集群安装与部署

    1.相关环境 centos7 hadoop2.6.5 zookeeper3.4.9 jdk1.8 hbase1.2.4 本篇文章仅涉及hbase集群的搭建,关于hadoop与zookeeper的相关部 ...

  9. 微信小程序之用户数据解密(七)

    [未经作者本人同意,请勿以任何形式转载] 经常看到有点的小伙伴在群里问小程序用户数据解密流程,所以打算写一篇关于小程序用户敏感数据解密教程: 加密过程微信服务器完成,解密过程在小程序和自身服务器完成, ...

  10. 拥抱.NET Core,如何开发一个跨平台类库 (1)

    在此前的文章中详细介绍了使用.NET Core的基本知识,如果还没有看,可以先去了解“拥抱.NET Core,学习.NET Core的基础知识补遗”,以便接下来的阅读. 在本文将介绍如何配置类库项目支 ...