每次输入命令行按下 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

Linux - 扩展的更多相关文章

  1. 给VMware下的Linux扩展磁盘空间(以CentOS6.5为例)

    #查看挂载点:df -h#显示: 文件系统 容量 已用 可用 已用%% 挂载点/dev/mapper/vg_dc01-lv_root47G 12G 34G 25% /tmpfs 504M 88K 50 ...

  2. 给VMware下的Linux扩展磁盘空间(以CentOS6.3为例)转

    #查看挂载点:df -h#显示:文件系统 容量 已用 可用 已用%% 挂载点/dev/mapper/vg_dc01-lv_root 47G 12G 34G 25% /tmpfs 504M 88K 50 ...

  3. linux扩展lvm磁盘

    env: centos 6.5 x64 hyper-v虚拟机 这个方法可以在当前运行的系统中扩展root磁盘 详细步骤 之前想创建的一个虚拟机的磁盘空间不够用了,所以想扩容一下磁盘. 正好使用的时候是 ...

  4. linux 扩展文件系统

    1. 创建新分区 [root@localhost ~]# fdisk -l Disk /dev/sda: bytes, sectors Units = sectors of * = bytes Sec ...

  5. 给VMware下的Linux扩展磁盘空间(以CentOS6.3为例)

    参照这篇文章进行的,但是和作者的步骤有些不一样. #查看挂载点:df -h#显示: 文件系统 容量 已用 可用 已用%% 挂载点/dev/mapper/vg_dc01-lv_root 47G 12G ...

  6. Linux扩展文件分区

    **************操作之前请看章节6,看系统是否支持LVM分区管理方式*************** 1:新增磁盘 插入新的磁盘,比如物理机可以直接在卡槽插入,虚拟机可以在控制台添加磁盘或者 ...

  7. Linux扩展根目录下的空间

    自己通过root创建了一个新用户,然而当我使用这个新用户时发现,/home/my中的空间只有几十M,完全不能满足我的使用,所以通过下面的方法扩展根下的空间. 我的本次操作,参考于 http://www ...

  8. Linux扩展根目录

    一.简介 使用linux系统的过程中,有时发现系统根目录(/)的空间不足,导致系统运行很慢,针对该现象,本文详细介绍根目录(/)的空间扩展方法.   二.操作步骤 1)查看根目录大小 df 2)查找系 ...

  9. Linux扩展正则表达式

    1. 扩展正则表达式 1.1 +(加号) + 表示前一个字符出现1次或1次以上 1.1.1 理解+ 要求:取出文件内容连续出现的小写字母 [root@oldboyedu50-lnb /oldboy]# ...

  10. linux扩展根目录空间

    转自:http://blog.chinaunix.net/uid-363820-id-2181838.html Linux用户如何扩展磁盘空间? 这里以B型VPS为例,说明磁盘空间的具体扩展方法如下: ...

随机推荐

  1. perl unload utf-8 oracle Wide character in print at unload_oracle.pl line 105.

    #!/usr/bin/perl use DBI; use Encode; my $dbName = 'oadb'; my $dbUser = 'vxspace'; my $dbUserPass = ' ...

  2. 在服务 ObtainData 实现的协定列表中找不到协定名称 "IMetadataExchange"。将 ServiceMetadataBehavior 添加到配置文件或直接添加到 ServiceHost,以启用对该协定的支持。

    第一种解决方法:最暴力的 配置去掉<endpoint address="mex" binding="mexHttpBinding" contract=&q ...

  3. WordPress Tweet Blender插件跨站脚本漏洞

    漏洞名称: WordPress Tweet Blender插件跨站脚本漏洞 CNNVD编号: CNNVD-201310-645 发布时间: 2013-10-30 更新时间: 2013-10-30 危害 ...

  4. (转载)Chrome 快捷键 整理版

    (转载)http://www.douban.com/group/topic/13802153/ chrome窗口和标签页快捷键: Ctrl+N 打开新窗口 Ctrl+T 打开新标签页 Ctrl+Shi ...

  5. HDU-2568 前进

    http://acm.hdu.edu.cn/showproblem.php?pid=2568 前进 Time Limit: 2000/1000 MS (Java/Others)    Memory L ...

  6. HDOJ/HDU 1015 Safecracker(枚举、暴力)

    Problem Description === Op tech briefing, 2002/11/02 06:42 CST === "The item is locked in a Kle ...

  7. JavaScript高级程序设计48.pdf

    设备中的键盘事件 任天堂Wii等设备可以通过键码知道用户按下了哪个键 复合事件 复合事件是DOM3级事件新添加的一类事件,用于处理IME的输入序列.IME(Input Method Editor,输入 ...

  8. bat坐拥大数据。数据挖掘/大数据给他们带来什么。

    阿里巴巴CTO即阿里云负责人王坚博士说过一句话:云计算和大数据,你们都理解错了.   实际上,对于大数据究竟是什么业界并无共识.大数据并不是什么新鲜事物.信息革命带来的除了信息的更高效地生产.流通和消 ...

  9. RGB Bayer Color分析

    RGB Bayer Color分析 Bayer色彩滤波阵列 拜耳色彩滤波阵列(Bayer Color Filter Array,CFA)是非常有名的彩色图片的数字采集格式.色彩滤波器的模式如上图所示, ...

  10. C随便练练手的题

    判断101-200之间有多少个素数,并输出所有素数 #include <stdio.h> int main(){ ; ; ; ){ while(may<cur){ ){ break; ...