LINUX操作系统基本符号说明

01. 课程介绍部分
        1). 系统符号 # ~ $ . ..
    2). 通配符号 * {}
        根据文件名称进行匹配信息
    3). 正则符号 *
        根据内容进行匹配
 
02. 系统符号作用
    a 简化操作 如:.. ~ ; &&
    b 进行匹配    
    
03. 系统特殊符号:
    1) 基础符号系列    
       美元符号:$        //取变量内容、配合awk去列、普通用户提示符、
       叹号符号: !      //取反、强制
       竖线符号: |         //前一个命令执行结果交给后面命令处理
           xargs:         将信息进行分组显示
    同时查询多个文件并查看这些文件中的内容:
    # touch abc{1..9}.txt
    # find / -maxdepth 2 -type f -name "abc*" | xargs cat

    将查询到的多个文件的详细信息显示出来:
    # find / -name "abc*" | xargs ls -l

    需求:删除/root下的三个abc文件
    # find / -maxdepth 2 -type f -name "abc*" | xargs rm -rf

           
    作业:
       查找指定数据信息进行复制:查找出*.txt文件,批量复制到/tmp目录:

       01. 将找到的信息放到cp 和 最终目录中间
           find /root -type f -name "*.txt"|xargs -i cp {} /abc456   
       02. 利用cp指明谁是数据最终保存的目录信息
           find /root -type f -name "*.txt"|xargs  cp -t /abc456       
           
       查找指定数据信息进行移动:查找出*.txt文件,批量移动到/tmp目录:
        # find /root -type f -name "*.txt"|xargs mv -t /abc
   
 

    2) 引号符号系列
           ''  输出的信息,写什么显示什么
       [root@pillar1m abc123]# echo 'abc123 $LANG $abc456'
       abc123 $LANG $abc456
       ""  和单引号功能类似 但对特殊信息会做解析
       [root@pillar1m abc123]# echo "abc123 $LANG $abc456"
       abc123 en_US.UTF-8 123
       `` ($())   将引号中的命令先执行,将执行结果交给引号外面的命令进行处理
       没有引号 和双引号功能类似 但是可以直接识别通配符信息,如:# echo {01..09}

    3) 重定向输出符号:
       >  1>    标准输出重定向符号
       2>      错误输出重定向符号
       >>  1>>   标准输出追加重定向符号
       2>>     错误输出追加重定向符号
       &>        正确错误重定向输出
       
       作业:
       如何将正确信息和错误信息都输出到文件中:

       方法一: 将正确和错误信息同时保留到一个文件
        [root@pillar1m abc123]# echo abc123 >>/abc123/info.log 2>>/abc123/info.log
       
       方法二: 将正确和错误信息同时保留到一个文件
             [root@pillar1m abc123]# echo abc123 &>/abc123/info.log  

            方法三: 将正确和错误信息同时保留到一个文件
       [root@pillar1m abc123]# echo abc123 >/abc123/info.log 2>&1

           <    标准输入重定向符号
       # passwd --stdin zhangsan < pass.txt
       <<   标准输入追加重定向符号
       cat >>/abc123.txt<<EOF
       XXX
       XXX
       EOF
       
    4) 路径信息系列
       ../  上一级目录
       ./   当前路径
       ~    返回到家目录
       -    两个目录之间进行快速切换

        5) 逻辑符号系列
       &&  与逻辑符号  前一个命令执行成功, 再执行后面的命令
       ||  或逻辑符号  前一个命令执行失败, 再执行后面的命令
       
       &&符号实践操作:
        作业:
        需要创建一个/test目录, 在目录中创建一个abc123.txt
       
       ||符号实践操作
    需求: /test/abc123.txt删除失败了,在/test/error.txt文件中生成失败信息

       [root@pillar1m tmp]# rm /test/abc1231.txt || echo "failed" >>/test/error.txt

       [root@pillar1m tmp]# rm /test/abc123.txt || echo "failed" >>/test/error.txt


04. 系统通配符号:
      利用通配符号匹配文件名称信息
    *  模糊匹配所有内容  abc123 abc ab a*
       find / -name "a*b"        //0个或多个字符
       ll /abc123/*.txt
    
    {} 生成序列信息 (生成一行序列)
       生成连续序列
       echo {1..10}
       echo {001..100}
       echo {a..z}
       echo {A..Z}
       生成不连续序列
       echo {1..10..2}  奇数序列
       echo {0..10..2}  偶数序列
       echo {www,bbs,blog}
       
       生成组合序列
       [root@pillar1m tmp]# echo {A,B}{01,02}
           A01 A02 B01 B02
           [root@pillar1m tmp]# echo A{01,02}
            A01 A02
         [root@pillar1m tmp]# echo A{,02}
           A A02

    常用的文件备份操作:
    # cp /etc/passwd /etc/passwd.back
    # cp /etc/passwd{,.back}

    生成银行卡密码全部组合并统计总共多少个密码:
    # echo {0..9}{0..9}{0..9}{0..9}{0..9}{0..9}
    
       
       作业:
       01. 在/abc123目录中创建test.txt文件,并在/abc123目录中生成test.txt.back备份文件
       # mkdir /abc123 && touch /abc123/test.txt && cp /abc123/test.txt{,.back}
       02. 如何将刚刚的备份文件快速还原
        # cp /abc123/test.txt{.back,}
    


05. 课程内容总结
        01. 系统符号
        1. 系统常用符号 # $
        2. 路径系列符号 ~ - .. .
        3. 重定向符号   > >> 2> 2>> < <<   &>  2>&1   /dev/null
        4. 逻辑符号     && ||
        5. 引号符号     "" '' `` ($()) 没有引号        
    02. 通配符号 根据文件名称进行筛选过滤
        *  模糊匹配字符
           {} 生成序列信息 / 生成组合序列 (快速备份文件/快速恢复文件)


操作系统正则符号说明
==================================    
        
01. 正则符号
       1. 利用正则符号匹配文件内容信息
    2. 正则符号经常出现在各种开发语言中, python java php shell
    3. 正则符号经常被三剑客命令使用

    

    
    
    
    
02. 基础正则符号: basic   
    1) 尖角符号:^
       以什么开头的信息
    # ll /etc | grep "^d"
    2) 美元符号:$
       以什么结尾的信息
    # ll -F /etc/ | grep "/$"
    3) 将全部内容显示,但不要显示空行
    ^$  -- 空行
    # grep -v "^$" 文件中过滤


    测试环境:
cat >>~/test.txt<<EOF
I am Edison!
I can sing.

I like music, hip-hop!
our site is https://clot.com
my qq num is 1234567890.

not 12345678900.
my god ,i am not Big handsome boy,but Edison!
EOF


        4) 点符号 .
       匹配任意一个字符,且只有一个字符
       命令执行结果:
       [root@pillar1m ~]# grep "." ~/test.txt
       
       显示匹配过程:
       [root@pillar1m ~]# grep "." ~/test.txt -o
 
        5) 星符号 *  ???
       匹配前一个字符连续出现了0次或者多次
       [root@pillar1m ~]# grep "0*" ~/test.txt
       
    6) 点和星结合: .* 匹配任意所有信息  .* == *
       [root@pillar1m ~]# grep "^o.*m$" ~/test.txt     //必须加.表示以.为参照匹配所有内容
       
       问题: 贪婪匹配问题:
       [root@pillar1m ~]# grep "^m.*o" ~/test.txt
    my god ,i am not Big handsome boy,but Edison!
       指定具体信息阻止贪婪匹配
       [root@pillar1m ~]# grep "^m.*od" ~/test.txt

        7) 转义符号: \
       \作用:
       01. 将有特殊意义符号,转义成普通信息进行识别
        将文件中的以 . 结尾的信息进行过滤:
        # grep ".$" ~/test.txt         //该命令无法真正过滤出以.结尾的行
        # grep "\.$" ~/test.txt        //使用转义符号
       02. 将没有意义的信息转义为有特殊意义的信息
           \n   换行符号
           \t   制表符号
           换行符号作用:
        案例:
        # echo -e "编号\t姓名\t性别\n01\t张三\t男\n02\t李四\t女"

        # echo -e "\e[1;31m This is red text \e[0m"            //e为字体上色,\e[0m,为将颜色重置为默认颜色,否则之后所输出的所有信息都将是31号颜色:
        # echo -e "\e[1;31m This is red text"            //此命令未使用重置,因此后续输入都将是红色
        重置=0
        黑色=30
        红色=31
        绿色=32
        黄色=33
        蓝色=34
        粉色=35
        青色=36
        白色=37

        \e[1;31m        //1表示为文本显示类型
        1=粗体
        4=下划线
        5=闪烁
        7=背景色

        # echo -n "123"
        # echo "456"
        # echo -n "123" && echo "456"            //n为不换行输出,

    
    8) 括号符号:[ ]
    有包含a、b、c的行
    [root@pillar1m ~]# grep "[abc]" test.txt
        匹配多个字符信息
        [root@pillar1m ~]# grep "h[a-z]p" ~/test.txt      

       作业:将以I开头和m开头的行都找出来
    # grep "^[Im]" test.txt

    
    9) 括号和尖号组合 [^]
    排除符号,除了a、b、c外,匹配包含其他字符的行:
       [root@pillar1m ~]# grep -v "[abc]" test.txt
                  grep "[^abc]" test.txt


    扩展正则符号:
    默认 grep sed不能直接识别
    grep 提升自己  -- egrep/grep -E
    sed  提升自己  -- sed -r
    1) +号符号:
    匹配前一个字符连续出现了1次或者多次    
    [root@pillar1m ~]# grep "0*" test.txt
    [root@pillar1m ~]# egrep "0+" test.txt -o
# cat >> ~/test02.txt<<EOF
张三   123456
李四   123457
王五   abcdef
王五1  def123
赵六   123459
EOF

    找出qq信息输入错误的内容
    [root@pillar1m ~]# grep [0-9] test02.txt

    [root@pillar1m ~]# grep -E "[0-9]+" test02.txt

    [root@pillar1m ~]# grep -E "[0-9]+" test02.txt -o

    [root@pillar1m ~]# grep -Ev "[0-9]+" test02.txt
    王五   abcdef

    作业:通过[]筛选出不包含#号和;号开头的行
    # grep -v "^[#;]" /etc/ssh/ssh_config

    2) 竖线符号:|  
    或者符号,用于匹配多个信息
    [root@pillar1m ~]# grep -E "my|0" test.txt

    只查找当前系统中张三和root的用户信息:
    # grep -E "^zhangsan|^root" /etc/passwd

    3) 括号符号: ()
    作用:
    1. 指定信息进行整体匹配
    [root@pillar1m ~]# grep -E "(my)" test.txt

    2. 进行后项引用前项使用: sed命令替换功能
    批量创建用户 test01..test10
    [root@pillar1m ~]# echo test{01..10}
       [root@pillar1m ~]# echo test{01..10} | xargs -n1
    第一种方式:
    [root@pillar1m ~]# echo test{11..12} | xargs -n1 useradd
    第二种方式:
        [root@pillar1m ~]# echo test{01..10} | xargs -n1 | sed -r 's#(.*)#useradd \1#g'

        [root@pillar1m ~]# echo test{01..10}|xargs -n1|sed -r 's#(.*)#useradd \1#g' | bash

    
    企业面试题: 批量创建用户 test01..test10,并给每个用户设置密码信息,默认初始化密码(123456)
    01. 如何创建用户 给用户设置密码
    02. 基础命令 echo {}/seq -w 10
    03. sed命令替换信息方法
    04. 正则符号 .* ()
    05. 基础符号 ; |
    06. bash内置命令
    [root@pillar1m ~]# seq -w 10 | sed -r 's#(.*)#useradd test\1;echo 123456 | passwd --stdin test\1#g'
             # echo abc{01..10} | xargs -n1 | sed -r 's#(.*)#useradd \1;echo \1| passwd --stdin \1 #g'
    
    将输出的信息
    echo 123456 ==> 转换为 <123456>进行显示
        [root@pillar1m ~]# echo 123456|sed -r 's#(.*)#123<\1>#g'
        <123456>

    ()符号扩展:
只对数字内容增加括号显示:
# cat >>~/test03.txt<<EOF
123456
88888
abcde
中文
语言
EOF
    # cat ~/test03.txt | sed -r 's#([0-9]+)#<\1>#g'

    echo 123456 ==> 转换为 <12><34><56>进行显示
    [root@pillar1m ~]# echo 123456 ==> 转换为 <12><34><56>进行显示
    [root@pillar1m ~]# echo 123456
    123456
    [root@pillar1m ~]# echo 123456 | sed -r "s#(12)(34)(56)#<\1><\2><\3>#g"
    [root@pillar1m ~]# echo 123456 | sed -r "s#(12)(34)(56)#<\1><><\3>#g"
    [root@pillar1m ~]# cat test03.txt | sed -r "s#(..)(..)(..)#<\1><\2><\3>#g"
    [root@pillar1m ~]# echo 123456 | sed -r "s#(12)(34)(56)#<\1><\3><\3>#g"

    
    4) 括号符号:{}
    可以指定字符连续匹配的次数
    第一种情况: x{n,m}  表示前一个字符至少连续出现n次,最多出现m次
    [root@pillar1m ~]# grep -E "0{2,3}" test.txt

    [root@pillar1m ~]# grep "0+" test.txt
    [root@pillar1m ~]# grep -E "0+" test.txt
    
    第二种情况: x{n} 表示前一个字符正好连续出现了n次
    [root@pillar1m ~]# grep -E "0{2}" test.txt

    [root@pillar1m ~]# grep -E "0{2}" test.txt -o

    第三种情况: x{n,} 表示前一个字符至少连续出现n次,最多出现多少次不限
    [root@pillar1m ~]# grep -E "0{2,}" test.txt

        [root@pillar1m ~]# grep -E "0{2,}" test.txt -o

    第四种情况: x{,m} 表示前一个字符至少连续出现0次,最多出现m次
    [root@pillar1m ~]# grep -E "0{,2}" test.txt
 
    5) 问号符号 ?
       定义匹配前一个字符出现0或者1次
    
    创建一个测试环境:
cat >>test04.txt<<EOF
gd
god
good
goood
gooood
EOF
    
    [root@pillar1m ~]# grep "o*" test04.txt
    gd
    god
    good
    goood
    gooood
    [root@pillar1m ~]# egrep "o+" test04.txt
    god
    good
    goood
    gooood

    [root@pillar1m ~]# egrep "o?" test04.txt
    gd
    god
    good
    goood
    gooood
    [root@pillar1m ~]# egrep "o?" test04.txt -o
    o
    o
    o
    o
    o
    o
    o
    o
    o
    o
    [root@pillar1m ~]# egrep "o+" test04.txt -o
    o
    oo
    ooo
    oooo

    补充: 想让grep sed命令可以直接识别扩展正则
    [root@pillar1m ~]# grep "o\+" test04.txt
    god
    good
    goood
    gooood
    [root@pillar1m ~]# grep -E "0{,2}" test.txt
    [root@pillar1m ~]# echo 123456 | sed  "s#\(..\)\(..\)\(..\)#<\1><\2><\3>#g"
    <12><34><56>

    总结:
    *  匹配前一个字符出现0次或者多次
    +  匹配前一个字符出现1次或者多次
    {} 匹配前一个字符指定出现多少次,至少0次
    ?  匹配前一个字符出现0次或者1次
    .*
    作业:利用ifconfig ens32只把IP地址信息显示出来
    # ifconfig ens32


# ifconfig ens33 | grep -E "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"  -o | head -1
    [root@pillar1m ~]# ifconfig ens32 | egrep "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"
    [root@pillar1m ~]# ifconfig ens32 | egrep "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" -o | head -1
   

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值