字符展开详解

Bash 中的特殊字符大全
通过展开, 你输入的字符,在 shell 对它起作用之前,会展开成为别的字符。如:

[SL@SL ~]$ echo *
Desktop Pic txt.save

shell 在 echo 命令被执行前把 * 展开成了当前工作目录下的文件名字。

  • 路径名展开

    通配符所依赖的工作机制叫做路径名展开。

    echo *       当前目录所有非隐藏文件
    echo .*                            当前目录所有以.开头的文件
    ls -d .* | less     
    ls -d .[!.]?*
    
  • 波浪线展开

    波浪线字符(“~”)有特殊的含义。当它用在一个单词的开头时,它会展开成指定用户的家目录名,如果没有指定用户名,则展开成当前用户的家目录。

    [SL@SL ~]$ echo ~
    /home/SL
    
  • 算术表达式展开

    格式:$((expression))

    算术表达式

    echo $((2 + 2))
    4
    echo $(((5**2) * 3))
    75
    
  • 花括号展开

    花括号表达式本身包含一个由逗号分开的字符串列表,或者一系列的整数,或者单个的字符串。这种模式不能嵌入空白字符。

    echo Front-{A,B,C}-Back
    Front-A-Back Front-B-Back Front-C-Back
    
    echo Number_{1..5}
    Number_1  Number_2  Number_3  Number_4  Number_5
    
    echo {Z..A}
    Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
    
    echo a{A{1,2},B{3,4}}b
    aA1b aA2b aB3b aB4b
    
    mkdir {2007..2009}-0{1..9} {2007..2009}-{10..12}
    
  • 参数展开

    $ 变量调用符号
    用法: $变量
    机制:调用变量,从而得到‘变量的值’

    echo $USER
    
  • 命令替换

    Linux命令替换和重定向有些相似,但区别在于命令替换是将一个命令的输出作为另外一个Linux命令的参数
    echo $(ls)
    Desktop Documents ls-output.txt Music Pictures Public Templates Videos
    也可用倒引号来代替$()
    ls -l `which cp`
    -rwxr-xr-x 1 root root 71516 2007-12-05 08:58 /bin/cp
    
  • 单词分割

    默认情况下,单词分割机制会在单词中寻找空格,制表符,和换行符,并把它们看作 单词之间的界定符。这意味着无引用的空格,制表符和换行符都不是文本的一部分, 它们只作为分隔符使用。

     echo this is a    test
     this is a test
    
  • 引用

    shell 提供了一种 叫做引用的机制,来有选择地禁止不需要的展开。

    • “” 双引号

      把它所包含的内容作为普通字符,但 $,\ (反斜杠),和 `(倒引号)除外 .
      意味着单词分割,路径名展开,波浪线展开,和花括号展开都将失效,然而参数展开,算术展开,和命令替换仍然有效。

    • ” 单引号

      把它所包含的内容作为普通字符,无例外

      echo text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER
      text /home/me/ls-output.txt a b foo 4 SL 
      

    双引号中波浪线展开,路径名展开,花括号展开均失效,参数展开,算术展开,和命令替换仍然有效。

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

    单引号中全部失效

    echo 'text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER'
    text ~/*.txt  {a,b} $(echo foo) $((2+2)) $USER    
    
  • 转义字符

    字符之前加上一个反斜杠 \

    这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值