zoukankan      html  css  js  c++  java
  • Shell符号展开

    字符 展开 

    这个 “*” 字符意味着匹配文件名中的任意字符 
    shell 把 “*” 展开成了另外的东西 ,在 echo 命令被执行前。 

    ~家目录 
    算术表达式展开 
    算术表达式展开使用这种格式: 
    $((expression)) 

    echo $((2+2)) 
    算术表达式只支持整数(全部是数字,不带小数点) ,但是能执行很多不同的操作。这里是 
    一些它支持的操作符: 
    操作符 说明 
    + 加 
    - 减 
    * 乘 
    / 除(但是记住,因为展开只是支持整数除法,所以结果是整 
    数。 ) 
    % 取余,只是简单的意味着, “余数” 
    ** 取幂 
    在算术表达式中空格并不重要,并且表达式可以嵌套。例如,5 的平方乘以 3: 
    [me@linuxbox ~]$ echo $(($((5**2)) * 3)) 
    75 
    一对括号可以用来把多个子表达式括起来。通过这个技术,我们可以重写上面的例子,同 
    时用一个展开代替两个,来得到一样的结果: 
    [me@linuxbox ~]$ echo $(((5**2) * 3)) 

    花括号展开 
    与数学(a+b)(c+d)一样 = ac+ad+bc+bd


    通过它,你可以从一个包含花括号的模式中创建多个文本字符串。这是一个例子:

    [root@yuan]# echo abc-{A,B,C}-CBA
    abc-A-CBA abc-B-CBA abc-C-CBA

    花括号展开模式可能包含一个开头部分叫做报头,一个结尾部分叫做附言。花括号表达式 
    本身可能包含一个由逗号分开的字符串列表,或者一系列整数,或者单个的字符串。 
    这个例题使用了一系列整数: 
    [me@linuxbox ~]$ echo Number_{1..5} 
    Number_1 Number_2 Number_3 Number_4 Number_5 

    一系列以倒序排列的字母: 
    [me@linuxbox ~]$ 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 

    花括号展开可以嵌套: 

    [root@yuan]# echo a{A{1,2},B{3,4}}b
    aA1b aA2b aB3b aB4b

     最普遍的应用是,创建一系列的文件或目录列表。 
    例如,如果我们是摄影师,有大量的相片。我们想把这些相片按年月先后组织起来。首先,我们要创建一 
    系列以数值 “年-月” 形式命名的目录。通过这种方式,目录名按照年代顺序排列。我们可以键 
    入整个目录列表,但是工作量太大了,并且易于出错。反而,我们可以这样做: 
    [me@linuxbox ~]$ mkdir Pics 
    [me@linuxbox ~]$ cd Pics 
    [me@linuxbox Pics]$ mkdir {2007..2009}-0{1..9} {2007..2009}-{10..12} 
    [me@linuxbox Pics]$ ls 
    2007-01 2007-07 2008-01 2008-07 2009-01 2009-07 
    2007-02 2007-08 2008-02 2008-08 2009-02 2009-08 
    2007-03 2007-09 2008-03 2008-09 2009-03 2009-09 
    2007-04 2007-10 2008-04 2008-10 2009-04 2009-10 
    2007-05 2007-11 2008-05 2008-11 2009-05 2009-11 
    2007-06 2007-12 2008-06 2008-12 2009-06 2009-12 

    命令替换
    命令替换允许我们把一个命令的输出作为一个展开模式来使用:
    echo $(ls)
     
    双引号
    引用的第一种类型,双引号。如果你把文本放在双引号中,shell 使用的特
    殊字符,除了 $, (反斜杠) ,和 ‘(倒引号)之外,则失去它们的特殊含义,被当作普通字符
    来看待。这意味着单词分割,路径名展开,波浪线展开,和花括号展开都被禁止,然而参数展
    开,算术展开,和命令替换仍然执行。使用双引号,我们可以处理包含空格的文件名。
     
    单引号
    如果需要禁止所有的展开,我们使用单引号。
    输出比较结果
    [me@linuxbox ~]$ echo text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER 
    text /home/me/ls-output.txt a b foo 4 me 
    89 
    [me@linuxbox ~]$ echo "text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER" 
    text ~/*.txt {a,b} foo 4 me 
    [me@linuxbox ~]$ echo 'text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER' 
    text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER
     
    反引号
     `ls`
     
    转义字符
    有时候我们只想引用单个字符。我们可以在字符之前加上一个反斜杠,在这个上下文中叫
    做转义字符。经常在双引号中使用转义字符,来有选择地阻止展开。
    注意在单引号中,反斜杠失去它的特殊含义, 它被看作普通字符。
  • 相关阅读:
    直接报错了:无法加载文件 C:UsersAdministratorAppDataRoaming pmvue.ps1,因为在此系统中禁止执行脚本
    [vue系列]-vue+vue-i18n+elementUI 国际化
    new vue 实例发生了什么呢?
    vue引用外部JS的两种方案
    web轻量级富文本框编辑
    Cannot read property '_withTask' of undefined
    element 动态合并表格
    前端如何获取原始图片大小
    ASP.Net Core使用Ajax局部更新
    ASP.NET Core中的jQuery Unobtrusive Ajax帮助器
  • 原文地址:https://www.cnblogs.com/yuankaituo/p/4237162.html
Copyright © 2011-2022 走看看