易学笔记-Linux命令-第8章:从shell眼中看世界

第8章:从shell眼中看世界/8.0 echo:单词分割机制

  • echo:单词分割机制
  1. 格式:echo  结果集,这里的结果集可能是
    1. 某个字符串:abc
    2. 多个字符串:abc  edf
    3. 命令结果: ls   cal
  2. 分割原则:按结果集中的空格、制表符、换行符进行分割

第8章:从shell眼中看世界/8.1 echo:字符展开/8.1.1 空格隔开字符串展开

  • 空格隔开字符串
  1. 展开原则:按空格展开,结果用单个空格隔开,不管中间有多少个空格
  2. 举例:中间多个空格

    [root@zabbix ~]# echo acd edf              xwt

    acd edf xwt


第8章:从shell眼中看世界/8.1 echo:字符展开/8.1.2 *展开

  • *展开
  1. 展开原则: 按当前目录所有文件名展开
  2. 举例:

    [root@zabbix ~]# echo *

    err-output.txt ln_123 ls-output.txt ls.txt me mycat mycat2.txt mylog mysql.tar.gz q s_ln_123 s_ln_dir test.txt wys_bak


第8章:从shell眼中看世界/8.2 echo:路径名展开/8.2.1 全文件名通配

  • 文件名模糊匹配
  1. 展开原则:按某个匹配规则展开
  2. 举例:

    [root@zabbix ~]# echo m*

    me mycat mycat2.txt mylog mysql.tar.gz


第8章:从shell眼中看世界/8.2 echo:路径名展开/8.2.2 部分路径通配

  • 部分路径通配
  1. 展开原则:按路径中*号的地方进行展开路径名
  2. 举例:

    [root@zabbix ~]# echo /usr/*/bin

    /usr/local/bin


第8章:从shell眼中看世界/8.2 echo:路径名展开/8.2.3 [[:class:]]形式匹配

  • [[:class:]]形式匹配
  1. 展开原则:按[[:class:]]指定的通配符展开
  2. 举例:

    [root@zabbix ~]# echo [[:lower:]]*   首字母小写展开

    err-output.txt ln_123 ls-output.txt ls.txt me mycat mycat2.txt mylog mysql.tar.gz q s_ln_123 s_ln_dir test.txt wys_bak


第8章:从shell眼中看世界/8.2 echo:路径名展开/8.2.4 隐藏文件展开

  • 隐藏文件展开
  1. 展开规则:隐藏文件名的首字母是.,所以按首字母的.展开
  2. 举例:

    [root@zabbix ~]# echo .*

    . .. .bash_history .bash_logout .bash_profile .bashrc .cache .config .cshrc .docker .java .lesshst .m2 .node-gyp .npm .oracle_jre_usage .pki .rnd .ssh .tcshrc .viminfo


第8章:从shell眼中看世界/8.3 echo:波浪线展开

  • echo:波浪线展开
  1. 展开原则:展开当前用户的根目录或者指定用户的根目录
  2. 举例:

    [root@zabbix ~]# echo ~

    /root

    [root@zabbix ~]# echo ~root

    /root


第8章:从shell眼中看世界/8.4 echo:算术表达式展开

  • 算术表达式展开
  1. 展开原则:按格式$((表达式))计算结果展开
  2. 注意:只支持整数进行算术运算
  3. 举例:
    1. 加法

      [root@zabbix ~]# echo $((2+2))

      4

    2. 减法

      [root@zabbix ~]# echo $((2-2))

      0

    3. 乘法

      [root@zabbix ~]# echo $((2*2))

      4

    4. 除法

      [root@zabbix ~]# echo $((3/2))

      1

    5. 取余

      [root@zabbix ~]# echo $((3%2))

      1

    6. 取幂

      [root@zabbix ~]# echo $((4**2))

      16


第8章:从shell眼中看世界/8.5 echo:花括号展开/8.5.1 集合元素展开

  • 集合元素展开
  1. 展开原则:按{元素1,元素2,元素n}元素展开,元素之间用,隔开
  2. 举例:
    1. 单个花括号

      [root@zabbix ~]# echo front-{A,B}-back

      front-A-back front-B-back

    2. 嵌套花括号

      [root@zabbix ~]# echo front-{A{1,2},{3,4},B}-back

      front-A1-back front-A2-back front-3-back front-4-back front-B-back

    3.  

第8章:从shell眼中看世界/8.5 echo:花括号展开/8.5.2 连续元素展开

  • 连续元素展开
  1. 展开原则:按{开始序号..结束序号}规则展开
  2. 举例:
    1. 连续数字:

      [root@zabbix ~]# echo mem_{1..5}

      mem_1 mem_2 mem_3 mem_4 mem_5

    2. 连续字母:

      [root@zabbix ~]# echo mem_{a..z}

      mem_a mem_b mem_c mem_d mem_e mem_f mem_g mem_h mem_i mem_j mem_k mem_l mem_m mem_n mem_o mem_p mem_q mem_r mem_s mem_t mem_u mem_v mem_w mem_x mem_y mem_z


第8章:从shell眼中看世界/8.5 echo:花括号展开/8.5.3 创建连续文件夹举例

  • 创建连续文件夹举例
  1. [root@zabbix wys]# mkdir {2017..2019}-0{1..9} {2017..2019}-{10..12}

    [root@zabbix wys]# ls

    2017-01  2017-03  2017-05  2017-07  2017-09  2017-11  2018-01  2018-03  2018-05  2018-07  2018-09  2018-11  2019-01  2019-03  2019-05  2019-07  2019-09  2019-11

    2017-02  2017-04  2017-06  2017-08  2017-10  2017-12  2018-02  2018-04  2018-06  2018-08  2018-10  2018-12  2019-02  2019-04  2019-06  2019-08  2019-10  2019-12

    [root@zabbix wys]#


第8章:从shell眼中看世界/8.6 echo:变量名展开

  • echo:参数展开
  1. 展开原则:按 $变量名 格式展开
  2. 举例:

    [root@zabbix ~]# echo $USER

    root


第8章:从shell眼中看世界/8.7 echo:命令展开

  • echo:命令替换
  1. 展开原则:按 $(命令)展开
  2. 举例:
    1. [root@zabbix ~]# echo $(ls)

      err-output.txt ln_123 ls-output.txt ls.txt me mycat mycat2.txt mylog mysql.tar.gz q s_ln_123 s_ln_dir test.txt wys wys_bak

    2. [root@zabbix ~]# file $(ls /usr/bin/* | grep zipnote)

      /usr/bin/zipnote: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=750c11ada0bec740fa2885383e678e7be5206cdd, stripped


第8章:从shell眼中看世界/8.8 echo:引号展开/8.8.1 双引号禁用部分展开

  • echo:双引号引用开展

  1. 展开原则:在双引号内的内容,除了以下情况依然会展开外,其它的信息都按原输入内容显示,不进行分割( 第8章:从shell眼中看世界/8.0 echo:单词分割机制),仍然会展开的情形如下:
    1. 第8章:从shell眼中看世界/8.4 echo:算术表达式展开
    2. 第8章:从shell眼中看世界/8.6 echo:变量名展开
    3. 第8章:从shell眼中看世界/8.7 echo:命令展开
  2. 举例:
    1. 不展开

      [root@zabbix ~]# echo "test a         b * ~"

      test a         b * ~

    2. 按算术展开

      [root@zabbix ~]# echo "* ~ $((2+2))"

      * ~ 4

    3. 按变量名展开

      [root@zabbix ~]# echo "* ~ $USER"

      * ~ root

    4. 按命令展开

      [root@zabbix ~]# echo "* ~ $(ls)"

      * ~ err-output.txt

      ln_123

      ls-output.txt

      ls.txt

      me

      mycat

      mycat2.txt

      mylog

      mysql.tar.gz

      q

      s_ln_123

    5. 不加双引号的展开:结果按换行符进行展开了

      [root@zabbix ~]# echo $(cal)

      August 2018 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

    6. 双引号的展开:结果按原来结果输出

      [root@zabbix ~]# echo "$(cal)"

           August 2018   

      Su Mo Tu We Th Fr Sa

                1  2  3  4

       5  6  7  8  9 10 11

      12 13 14 15 16 17 18

      19 20 21 22 23 24 25

      26 27 28 29 30 31


第8章:从shell眼中看世界/8.8 echo:引号展开/8.8.2 单引号禁用所有展开

  • 单引号禁用所有展开
  1. 展开原则:单引号内部的所有内容都不能展开
  2. 举例:
    1. [root@zabbix ~]# echo 'text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER'

      text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER


第8章:从shell眼中看世界/8.9 echo:转义字符/8.9.1 双引号中使用转义字符

  • 双引号中使用转义字符
  1. 对于特殊符号前面加\,使其不进行特殊处理,特殊符号比如:$、’
  2. 举例:
    1. 不加转移符会输出空,因为$1中的1不是变量

      [root@zabbix ~]# echo "we give you $100"

      we give you 00

    2. 加了转移符后显示正常

      [root@zabbix ~]# echo "we give you \$100"

      we give you $100


第8章:从shell眼中看世界/8.9 echo:转义字符/8.9.2 单引号中使用转义字符

  • 单引号中使用转义字符
  1. 注意:单引号内所有展开或者转义都失效
  2. 举例:

    [root@zabbix ~]# echo 'we give you \$100'

    we give you \$100


第8章:从shell眼中看世界/8.9 echo:转义字符/8.9.3 转义序列

  • 转义序列
  1. 概念:由\和指定字符组成
  2. 转义序列包括:
    1. \a: 响铃(”警告”-导致计算机嘟嘟响) |
    2. \b:  退格符 |
    3. \n: 新的一行。在类 Unix 系统中,产生换行。 |
    4. \r : 回车符 |
    5. \t: 制表符 |
  3. 使用转义序列:用 echo -e 解释转义序列,举例:

    [root@zabbix ~]# sleep 10; echo -e "Time's up\t"

    Time's up 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

易学笔记(qq:1776565180)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值