7, 从shell的角度看世界

1, Pathname Expansion    路径扩展

用已有文件路径来填充,例如:

echo *s

echo [[:upper:]]*

echo /usr/*/share

echo *

echo .*

echo .[!.]*

 

2,Tilde Expansion  波浪号扩展

~代表用户,例如 

echo ~ 当前登录用户家目录

~后面还可以跟用户名,例如

[me@linuxbox ~]$ echo ~foo

/home/foo

 

3,Arithmetic Expansion, 算术运算,只支持整数。

$((expression))

Operator   Description

+               加

-               减

*               乘

/                Division (but remember, since expansion supports only integer arithmetic, results are integers).

%             取模

**              乘方

expression 可以使用小括号, 

echo $(($((5**2)) * 3))   等价于  echo $(((5**2) * 3))

 

4, Brace Expansion 大括号展开

大括号里边可以是以逗号','分割的字符串list;也可以是一定范围内的整数或者一定范围内的单个字符,以'.'分割。但是不能包含不带引号的空格。例如:

[me@linuxbox ~]$ echo Front-{A,B,C}-Back

Front-A-Back Front-B-Back Front-C-Back

[me@linuxbox ~]$ echo Number_{1..5}
Number_1 Number_2 Number_3 Number_4 Number_5

[me@linuxbox ~]$ echo {01..15}
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
[me@linuxbox ~]$ echo {001..15}
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015

[me@linuxbox ~]$ echo {Z..A}
Z Y X W V U T S R Q P ON M L K J I H G F E D C B A

大括号还可以级联

[me@linuxbox ~]$ echo a{A{1,2},B{3,4}}b

aA1b aA2b aB3b aB4b

酷!

mkdir {2007..2009}-{01..12}

 

5,Parameter Expansion  参数扩展

例如

echo $USER

6,Command Substitution   命令替换

例如

echo $(ls)

老式shell里边使用特殊引号

ls -l `which cp`

 

引号

1,双引号

双引号里边只有,“$”, “\” , “`”有特殊作用,其他都是其字面量。意味着,word-splitting、pathname expansion、tilde expansion、brace expansion 被禁用,但是arithmetic expansion、parameter expansion、command substitution仍然有效。

例如:

[me@linuxbox ~]$ ls -l "two words.txt"
-rw-rw-r-- 1 me me 18 2016-02-20 13:03 two words.txt

[me@linuxbox ~]$ echo "$USER $((2+2)) $(cal)"

2,单引号

禁用所有的扩展expansions。

例如:

[me@linuxbox ~]$ echo text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER

text /home/me/ls-output.txt a b foo 4 me


[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

3,转义符   Escaping Characters

在双引号里边用反斜线“\”用作转义符,需要转义的字符包括,“$”, “!”, “&”, 空格, and others,例如

[me@linuxbox ~]$ echo "The balance for user $USER is: \$5.00"

The balance for user me is: $5.00

To include a special character in a filename we can do this:

[me@linuxbox ~]$ mv bad\&filename good_filename

可以使用“\\”来表示反斜线本身。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值