zoukankan      html  css  js  c++  java
  • 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

    字符

    名称

    功能描述

    ^

    以某某开头的

    $   

    以某某结尾的

    ^$

    空行,不是空格

    .

    表示任意一个字符

    元字符转义普通字符

    . 普通字符小数点

    换行符

     单词边界

    回车

    横向制表符

    *

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

    .*

    匹配所有字符

    ^.*

    以任意多个字符开头

    .*$

    以任意多个字符结尾

    []

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

    [^]

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

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

    字符

    名称

    功能描述

    +

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

    ?

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

    |

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

    ()

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

    a{n,m}

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

    a{n,}

    重复前面a字符至少n

    a{n}

    重复前面a字符n

    a{,m}

    重复前面a字符最多m

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

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

    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 看它如何匹配

    区分正则表达式和通配符

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

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

    学习正则方法:awksed -rgrep/egrep -o该都是匹配正则,其他都是通配符

    帮助文档:通配符man 7 glob

    正则表达式:man grepinfo grep等等

    举例:

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

    思路方法:sed 正则、awk 分割符、grepcutls 替换、stathead

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

  • 相关阅读:
    Docker5之Deploy your app
    Docker4之Stack
    Docker3之Swarm
    Docker之Swarm
    Docker2之Service
    Docker1之Container
    Nuget EPPlus的使用
    Nuget CsvHelper 的使用
    excel
    Chrome上的扩展工具
  • 原文地址:https://www.cnblogs.com/verrion/p/linux-special_characters.html
Copyright © 2011-2022 走看看