zoukankan      html  css  js  c++  java
  • Linux

    每次输入命令行按下 Enter 键时,bash 都会在执行命令之前对文本进行多重处理。比如 "cd ~" 中的 "~" 的会被识别为当前用户的主目录。产生这个结果的处理过程称为扩展(expansion)。

    路径名扩展

    路径名扩展是通过使用通配符来实现扩展的机制。常见的通配符如下:

    通配符 匹配项
     *  匹配任意多个字符(包括 0 和 1 个)
     ?  匹配任意单个字符 (不包括 0 个)
     [characters]  匹配任意一个属于字符集中的字符
     [!characters]   匹配任意一个不属于字符集中的字符
     [[:alnum:]]  匹配任意一个字母或数字
     [[:alpha:]]  匹配任意一个字母
     [[:digit:]]  匹配任意一个数字
     [[:lower:]]  匹配任意一个小写字母
     [[:upper:]]  匹配任意一个大写字母

    实例

    a) 列出当前目录的所有文件名。

    [huey@huey-K42JE ~]$ ls * 
    Desktop  Documents  Music  Pictures  Public  tmp  Videos

    b) 列出当前目录以 D 开头的文件名。

    [huey@huey-K42JE ~]$ ls D* 
    Desktop  Documents

    c) 列出当前目录以大写字母开头的文件名。

    [huey@huey-K42JE cmdline]$ ls [[:upper:]]*
    Desktop  Documents  Music  Pictures  Public  Videos

    波浪线扩展

    当 ~ 在一个单词的开头,那么它将被扩展为指定用户的主目录名。如果没有指定用户名,则扩展为当前用户的主目录。

    实例

    a) 切换至当前用户的主目录下。

    [huey@huey-K42JE cmdline]$ cd ~

    b) 切换至用户 sugar 的主目录下。

    [huey@huey-K42JE cmdline]$ cd ~sugar

    算术扩展

    算术扩展的使用格式是 $((expression)),expression 是指包含数值和算术运算符的算术表达式。算术扩展值支持整数。

    实例

    a) 计算 2 的 10 次方。

    [huey@huey-K42JE cmdline]$ echo $((2 ** 10))
    1024

    花括号扩展

    用于花括号扩展的模式信息可以包含一个称为前导字符(preamble)的开头部分和一个称为附言(postscript)的结尾部分。花括号表达式本身可以包含一系列逗号分隔的字符串,也可以包含一系列整数或单个字符。模式信息不能包含内嵌的空白。

    实例

    a) 逆序排列字母。

    [huey@huey-K42JE cmdline]$ 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

    b) 花括号扩展支持嵌套。

    [huey@huey-K42JE cmdline]$ echo X{a{1,2},b{1,2}}Y
    Xa1Y Xa2Y Xb1Y Xb2Y

    c) 按年月命名创建目录。

    [huey@huey-K42JE cmdline]$ cd Pictures/
    [huey@huey-K42JE Pictures]$ mkdir {2014..2015}-0{1..9} {2014..2015}-{10..12}
    [huey@huey-K42JE Pictures]$ ls 
    2014-01  2014-03  2014-05  2014-07  2014-09  2014-11  2015-01  2015-03  2015-05  2015-07  2015-09  2015-11
    2014-02  2014-04  2014-06  2014-08  2014-10  2014-12  2015-02  2015-04  2015-06  2015-08  2015-10  2015-12

    参数扩展

    参数扩展用在 shell 脚本中比直接用在命令行中更为有用。

    实例

    a) 输出环境变量 LANG 的值。

    [huey@huey-K42JE Pictures]$ echo $LANG
    en_US.UTF-8

    命令替换

    命令替换可以把一个命令的输出作为一个扩展模式使用。

    实例

    a) 查看 cp 程序的文件属性。

    [huey@huey-K42JE Pictures]$ ls -l $(which cp)
    -rwxr-xr-x 1 root root 122736 Apr 17  2012 /bin/cp

    b) 可以使用反引号替代美元符号与圆括号。

    [huey@huey-K42JE Pictures]$ ls -l `which cp`
    -rwxr-xr-x 1 root root 122736 Apr 17  2012 /bin/cp
  • 相关阅读:
    javaEE企业级基础介绍(一)
    SQL学习笔记系列(十)窗口函数
    SQL学习笔记系列(九)索引优化分析
    Tableau教程笔记
    淘宝用户行为分析--基于MySQL、Tableau
    Stop thinking,start living--《心灵奇旅》观后感
    SQL刷题
    SQL学习笔记系列(八)流程控制结构
    SQL学习笔记系列(七)存储过程和函数
    在超算系统上使用sbatch提交MXNet分布式训练任务
  • 原文地址:https://www.cnblogs.com/huey/p/4852493.html
Copyright © 2011-2022 走看看