UNIT06 Shell Mata-Characters

\回车,

续行符

\

跳脱符,将元字符还原成一般字符

>,>>

输出重定向

<,<<

输入重定向

!

调用历史记录;

!

逻辑运算中的not

/

路径分割符

|

两个命令之间的管道

;

分割执行多个命令

$

置换,引用:

#

批注,常用在脚本中

~

家目录

&

将命令置为后台工作

 

 

 

.转义字符=跳脱符=逃逸字符——\

反斜线是使后续的字符恢复原来作为单纯字符的用途,换言之,这是要除去特殊字符的作用。下表的每一个字符都是bash的特殊字符。要显示这些字符本身,必须在其前面加上跳脱符。

\’

\”

\*

\?

\\

\/

\#

\$

\<

\>

\&

\|

\[

\]

\;

\!

\(

\)

\~

\`

\{

\}

 

 

.通配符元字符——万用字符

1.?一定有一个字符‘.’,不可为空,但不匹配‘.’打头的

#ls test?.dat             #ls –la ???

2.*代表0或多个字符‘.’,可以是空字符串,‘.’打头的除外

*zip*——文件名中含zip    z*e——头是z并且尾是e

ls???——ls打头长度为5   /*/*.conf——某个下一级目录中的.conf

3.连字符“-”仅在方括号内有效,而*和?只在方括号外面是通配符

[a-dm]?   以a.b.c.d.m开头且后面只跟一个字符的文件的名称

-a[*?]abc         *和?均为普通字符,它匹配的字符串只能是-a*abc和-a?abc。

.三种引号

echo Jack\`s book;echo “Jack\`s book”;echo ‘Jack\`s book’

1.‘’单引号逐个地取一串字符,不具有变量置换功能

#echo ‘echo $UID’

echo $UID

mkdir ’a b’

2.“”双引号内容作字串允许变量置换

#echo “echo $UID”

echo 0

3.``引用命令的结果,两反引号间为优先执行的命令

#echo `echo $UID`

0

.三种括号的基用法

命令替换行=命令行扩展=bash在解释命令前替换某些元字符,在操作上,用 $( ) 或 ` `"个人"比较喜欢用 $( ) ,理由是:

` ` 很容易与 ' ' ( 单引号)搞混乱。

在多层次的复合替换中,` ` 须要额外的跳脱( \` )处理,而 $( ) 则比较直观。

1.():command group置于nested sub-shell去执行

$(ls /)

//命令替换

$((9**2))

//算术扩展

$var ,$(var)

//Shell和环境变量

2.[]:任一字符

[]内任一字符

[a-z] [A-Z] [0-9]  [a-Za-z0-9]* [wxy]

匹配列表外任意一个字符

[!abc]* [^abc]*

A1 b1 c1 ab1 ac1 ba1 bc1

#ls [^ab]*只显示c1

#rm [abc]*以上都会被删除

#cp  -r /etc/sysconfig /bak/etc-$[$(date %Y%m%d) -1]

3.{}:枚举,字串集合,每个都分别匹配; 在中间为区块的组合

echo s{ab,cd}y——saby scdy

/bin/z{[ef]gre,cm}p——/bin/zegrep /bin/zfgrep /bin/zcmp

ls /etc/*{conf,cf,org}

ls /etc/profile{,.bak}

ls /etc/sources.list{,.bak}

mkdir –p /root/tmp/{dir1,dir2,dir3}/{a,b,c}

echo {1,2,3,4,5,5,6,7,8,9}\*{1,2,3,4,5,5,6,7,8,9}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值