LINUX操作系统基本符号说明

  1. 课程介绍部分
    1). 系统符号 # ~ $ . ..
    2). 通配符号 * {}
    根据文件名称进行匹配信息
    3). 正则符号 *
    根据内容进行匹配

  2. 系统符号作用
    a 简化操作 如:.. ~ ; &&
    b 进行匹配

  3. 系统特殊符号:

    1. 基础符号系列
      美元符号:$ //取变量内容、配合awk去列、普通用户提示符、
      叹号符号: ! //取反、强制
      竖线符号: | //前一个命令执行结果交给后面命令处理
      xargs: 将信息进行分组显示
      同时查询多个文件并查看这些文件中的内容:

    1|0touch abc{1..9}.txt


    2|0find / -maxdepth 2 -type f -name "abc*" | xargs cat


    将查询到的多个文件的详细信息显示出来:

    3|0find / -name "abc*" | xargs ls -l


    需求:删除/root下的三个abc文件

    4|0find / -maxdepth 2 -type f -name "abc*" | xargs rm -rf


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

    1. 将找到的信息放到cp 和 最终目录中间
      find /root -type f -name "*.txt"|xargs -i cp {} /abc456
    2. 利用cp指明谁是数据最终保存的目录信息
      find /root -type f -name "*.txt"|xargs cp -t /abc456

    查找指定数据信息进行移动:查找出.txt文件,批量移动到/tmp目录:
    # find /root -type f -name "
    .txt"|xargs mv -t /abc

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

    2. 重定向输出符号:

      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

      < 标准输入重定向符号

      5|0passwd --stdin zhangsan < pass.txt


      << 标准输入追加重定向符号
      cat >>/abc123.txt<<EOF
      XXX
      XXX
      EOF

    3. 路径信息系列
      ../ 上一级目录
      ./ 当前路径
      ~ 返回到家目录

      • 两个目录之间进行快速切换
      1. 逻辑符号系列
        && 与逻辑符号 前一个命令执行成功, 再执行后面的命令
        || 或逻辑符号 前一个命令执行失败, 再执行后面的命令

      &&符号实践操作:
      作业:
      需要创建一个/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

  4. 系统通配符号:
    利用通配符号匹配文件名称信息

    • 模糊匹配所有内容 abc123 abc ab a*
      find / -name "ab" //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

    常用的文件备份操作:

    6|0cp /etc/passwd /etc/passwd.back


    7|0cp /etc/passwd


    生成银行卡密码全部组合并统计总共多少个密码:

    8|0echo {0..9}{0..9}{0..9}{0..9}{0..9}


    作业:

    1. 在/abc123目录中创建test.txt文件,并在/abc123目录中生成test.txt.back备份文件

    9|0mkdir /abc123 && touch /abc123/test.txt && cp /abc123/test.txt


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

10|0操作系统正则符号说明


  1. 正则符号

    1. 利用正则符号匹配文件内容信息
    2. 正则符号经常出现在各种开发语言中, python java php shell
    3. 正则符号经常被三剑客命令使用
  2. 基础正则符号: basic

    1. 尖角符号:^
      以什么开头的信息

    11|0ll /etc | grep "^d"


    1. 美元符号:$
      以什么结尾的信息

    12|0ll -F /etc/ | grep "/$"


    1. 将全部内容显示,但不要显示空行
      ^$ -- 空行

    13|0grep -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

14|0cat >> ~/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> ()符号扩展:

只对数字内容增加括号显示:

15|0cat >>~/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#..

.
.
..
.
.
..
.
.

16|0<\1><\2><\3>#g"


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

17|0ifconfig 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

__EOF__

本文作者Crushz
本文链接https://www.cnblogs.com/Crushz-2024/p/18390298.html
关于博主:Crushz
版权声明:转载请注明来源哟~ QAQ
声援博主:UP UP UP !!!
posted @   Crushz  阅读(53)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示