找回密码
 注册
关于网站域名变更的通知
查看: 286|回复: 1
打印 上一主题 下一主题

Linux Shell中的一些特殊字符

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-3-23 09:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

' R1 p( H, f0 V8 H特殊字符
0 P+ ?1 `6 R# T$ W" [) G% y% m/ s, \% Z" k4 ^( u: g5 \
# 注释
5 n3 D* H+ j0 S9 P+ {7 `表示注释   #注释
( l: I5 A; E$ X0 u! e在引号中间和\#等表示#本身4 a1 j2 t- m" t- q* S1 M
echo ${PATH#*:} # 参数替换,不是一个注释
$ T0 p& [0 k2 G+ q" Y5 d$ m3 G+ |echo $(( 2#101011 )) # 数制转换,不是一个注释
! d& j0 N8 n0 j4 z1 ^
" u! }1 Y( j/ h: [, c9 p; 分隔6 d6 d# T3 i2 W
命令分隔,在一行中写多个命令  echo "aa" ; echo "bb"2 f/ a7 \5 N) k2 ]# A2 q7 i
在条件中的if和then如果放在同一行,也用;分隔# d& T. |) G( {# ?2 [
;; case条件的结束
6 r. @& t* q/ |7 [2 w2 W8 H, \
+ b) P- k$ x  h& G% f. 命令相当于source命令
+ v# T5 {  u0 N) T0 |命令:source0 f: `* |" ]" I
文件名的前缀,隐藏文件# w5 l# Q' z, ]6 D0 ]8 {2 f
目录:.当前目录,..父目录
! s' w# ^# y3 k: s% |1 ?+ a正则表达式:匹配任意单个字符
6 X: W9 w9 j5 j) \& J; T% n"" 部分引用 支持通配符扩展& m3 s8 ^# u+ f6 n
1 [5 Q8 W- \2 [3 V( y
'  ‘ 全引用,不进行通配符扩展
) m  Y2 X# V& X0 m- }' {1 K% k% e) X9 z" q
\ 转义8 p1 p- N. g5 s7 C( U
+ H: t; U4 L! ]5 x" h
/ 目录分隔符
5 U; L" V6 r1 z+ {
0 _8 A  k% I5 s) G: j& {! G9 K,  多个命令都被执行,但返回最后一个: o2 x% I: M4 o3 N) G( O

8 ^6 @0 f  n! t  F/ O$ y% J6 Y% O` 后置引用2 z$ ~3 s$ {' O8 d
9 s& o" E$ f* h8 J$ M1 L, o( n8 p
: 操作符5 l; a3 q+ r: n* Y; x
空操作/ R: G, i0 L# a; B3 R! Z
死循环:    while :5 T: I  s0 F( J$ F+ L/ _/ e: A" g
在if/then中表示什么都不做,引出分支. c/ f' B5 h  g( M  B' h+ g" `
设置默认参数:   : ${username=`whoami`}0 N/ }- G% q% O  d! K
变量替换:    : ${HOSTNAME?} ${USER?} ${MAIL?}7 j9 a: E3 u/ o/ ]5 x) [/ \
在和 > (重定向操作符)结合使用时,把一个文件截断到0 长度,没有修改它的权限;如果文件在之前并不存在,那么就创建它.如:     
! N. e( o. b/ k! f  : > data.xxx #文件"data.xxx"现在被清空了. 与 cat /dev/null >data.xxx 的作用相同 然而,这不会产生一个新的进程,因为":"是一个内建命令.
. K' \0 J1 k. x在和>>重定向操作符结合使用时,将不会对想要附加的文件产生任何影响.  x) W" z$ D+ ~% g
如果文件不存在,将创建.
. f4 V4 I" s/ \$ B; S* 匹配0个或多个字符;数学乘法;**幂运算
' ]& v9 t7 `( u1 e" x- h3 k, Q( Q& ?7 o% F2 `! j7 T, I
? 匹配任意一个字符;但在((a>b?a:b))表示c语言中的三目运算
% P/ T+ Y1 l4 y* c# J5 i* S3 P  x( M# ?3 ?7 D( N& @
$ $ b, D1 ^$ h0 w
取变量的值 echo $PATH
7 m' f. V# H4 w4 J. j+ i! o( N% _) r1 b$ s正则表达式中表示行的结尾* I/ j) B* S6 i! a1 d! y0 ^
${} 参数替换 ${PAHT}
) ?0 A* j* w7 W# \: J. |. s$* 所有参数, T5 E7 Z4 o( J% M
$# 参数个数9 G  C' }8 Z3 I3 U% T
$$ 进程的ID
7 B  ?4 m- n" f) `$? 进程的返回状态1 i3 N) V  n- @, J
( )
9 X) t% c* N# P" b7 I" X! c( b, L. A命令组,在一个子Shell中运行   (a=3;echo $a) 其中定义的变量在后面不可用! W7 {3 _; b2 O/ @3 z% B1 R
数组初始化: array=(a,b,c)- I. j3 r+ d! E/ i$ u
{ } 代码块,即一个匿名函数,但其中定义的变量在后面依然可用
( `  h# Y; h6 c* W. g! M+ A
+ v1 ?7 _% \1 O{ } \; 用在find的-exec中 $find -name *.txt -exec cat {} \;
) ]$ k- [/ |4 s7 d9 c5 l8 c
6 l, q1 Q3 t$ q+ R[ ]. k' u  @5 b' ~. A4 j
测试 [-z $1]
) @: H0 z6 U7 R$ L" j) F数组元素 a[1]='test'
2 g( V* o3 H% r1 ]9 M6 Z8 T[[]]表示测试 使用[[ ... ]]条件判断结构, 而不是[ ... ], 能够防止脚本中的许多逻辑错误. 比如, &&, ||, <, 和> 操作符能够正常存在于[[ ]]条件判断结构中, 但是如果出现在[ ]结构中的话, 会报错.: n" ?- r/ W' ~5 v
(( ))数学运算0 Q5 `, R5 c$ t! C
在正则表达式中表示范围 [a-z]4 U3 i1 G6 `, L+ B4 k" G4 h3 ]
< <<  >  重定向和进程替换  ls -al > a.txt" I9 y; C, V! ^3 `0 P) x) Q0 H
+ E2 V# V) x$ E. `# u: Z  {, L% ?
>  <  还用在ASCII比较 if [[ "$veg1" < "$veg2" ]]8 W- u" t2 Z! p) x
: O; Q2 C% R4 R; ~
\<,\> 正则表达式中的单词边界.如:bash$grep '\<the\>' textfile
- H/ r6 q! u% l  W( U# V5 h| 管道# b- J4 C& E; W% H% f
>| 强制重定向(即使设置了noclobber 选项--就是-C 选项).这将强制的覆盖一个现存文件.8 I( M. B4 E  n* n
|| 逻辑或操作 ;用在两个命令之间的时候,表示在前一个命令结束时,若返回值为 false,继续执行下一个命令
" T: I' c5 Y# R8 N&& 逻辑与;用在两个命令之间的时候,表示在前一个命令结束时,若返回值为 true,继续执行下一个命令; W8 e- m( j+ E& ]
& 后台运行
2 s+ i4 Q1 ~! x9 N-2 ^& M& |7 Q( X+ p; O8 f" b  Q6 x6 ~
参数选项2 O) S" o' l3 ^) |" B8 H! G
减号
) ^  V/ t" ?1 n! i重定向stdin和stdout:cd /source/directory && tar cf - . ) | (cd /dest/directory && tar xpvf -)6 A/ Q2 L, J; n# q* s" v
先前的工作目录 cd -
# H. j" f" a8 l4 I- t注:使用-开头的文件名和变量名可能会出现一些问题
# {, B4 U$ O! p2 w- ]( s+   一个命令或者过滤器的选项标记.
9 t' z4 e2 X6 n- t4 c4 |1 W6 k+ r~ home目录! I5 h  w- b& G  j' {$ F& ~
~+ 当前工作目录
2 m/ k* R5 d2 M, v  Z~- 先前工作目录0 }+ L) H, s; Q6 G. p
^ 正则表达式中表示行首# x: N3 e. X& X# I- K: Z2 L6 g% I
$IFS 用来做一些输入命令的分隔符, 默认情况下是空白.
0 j% o2 Y7 X. [* X5 }$ U* B* O5 u控制字符
& u( B3 {" P$ P- F4 h* v' O0 a9 q* u6 \9 c  p
修改终端或文本显示的行为. . 控制字符以CONTROL + key这种方式进行组合(同时按下). 控制字符也可以使用8进制或16进制表示法来进行表示, 但是前边必须要加上转义符.
! z1 j  c( ]( u- c
  q* K  B0 W1 ]控制字符在脚本中不能正常使用.& X' p1 m8 N: }8 J& F. d/ \; ]

- U% X, s! Q, p$ p* S. @Ctl-B退格(非破坏性的), 就是退格但是不删掉前面的字符.
6 r: d- e1 C( v3 |$ V$ D8 L
6 i) N/ }  {$ _Ctl-C终结一个前台作业.
) ~: d$ ^& P/ i- o6 F# a8 K. g* F1 Q/ W/ l
Ctl-D   从一个shell中登出(与exit很相像).
- r" S$ b) B- u9 [4 E            "EOF"(文件结束). 这也能从stdin中终止输入.
6 z, E) v% |# p            在console或者在xterm窗口中输入的时候, Ctl-D将删除光标下字符. 当没有字符时, Ctl-D将退出当前会话, 在一个xterm窗口中, 则会产生关闭此窗口的效果.# m. r) f+ T3 O% |( L

: H0 P5 j) J; P' ?Ctl-G "哔" (beep). 在一些老式的打字机终端上, 它会响一下铃.5 }7 n! o. x4 [7 y
9 B1 E; D! {! |3 v
Ctl-H "退格"(破坏性的), 就是在退格之后, 还要删掉前边的字符.
" O, T/ M1 w* g2 e8 I3 m
6 ~. Y4 L1 K' z. y8 W; m: zCtl-I 水平制表符.1 V/ N7 D4 g& r
% ?2 Q. h4 m' w5 V6 q4 H8 O
Ctl-J 重起一行(换一行并到行首). 在脚本中, 也可以使用8进制表示法 -- '\012' 或者16进制表示法 -- '\x0a' 来表示.
4 }! s0 m8 Y% w
2 y: n* }% W: w5 oCtl-K垂直制表符.
* f+ x% X3 A* h% o, V; h9 [1 m' o) @& O$ e* K: p, Z" B
Ctl-L 清屏(清除终端的屏幕显示). 在终端中, 与clear命令的效果相同. 当发送到打印机上时, Ctl-L会让打印机将打印纸卷到最后.
+ R9 ~1 ~1 g/ L, @: ?& S. |
4 z7 n- f# d( Y3 B4 ?& E& R: N2 BCtl-M 回车.
4 O2 u8 _+ Y7 m0 z" u6 o' P! o* J
4 n! J. H9 f5 D0 ^/ H. X6 W' fCtl-Q 恢复(XON).在一个终端中恢复stdin.+ {, m* J4 u" ^+ ~  c6 o, f

: C. K, }1 ]7 D6 ACtl-S 挂起(XOFF).1 S  }" U' }2 M8 n
         在一个终端中冻结stdin. (使用Ctl-Q可以恢复输入.)/ L- f1 u3 R3 T3 ?# N+ ~1 D3 k2 m
  g6 H9 W' |  ?8 o/ U$ |0 O) }' B
Ctl-U 删除光标到行首的所有字符. 在某些设置下, 不管光标的所在位置Ctl-U都将删除整行输入.
1 r$ r( p8 k" z; T) A' x1 q. s. ~
Ctl-V当输入字符时, Ctl-V允许插入控制字符.
( P& H1 f' d; T, }& A/ Z
( @1 K  E9 Q2 v( V9 ?% vCtl-V主要用于文本编辑.
8 d8 j9 Q, m( k2 v4 G) X# j$ Y) x4 ?3 m9 c
Ctl-W
2 W! \* Y& t3 n& n当在控制台或一个xterm窗口敲入文本时, Ctl-W将会删除当前光标到左边最近一个空格间的全部字符. 在某些设置下, Ctl-W将会删除当前光标到左边第一个非字母或数字之间的全部字符.
1 G! o+ O3 ~' M8 s* Z" v: q+ G" {+ s, i1 z( m
Ctl-Z暂停前台作业.
0 v# q8 d# m& i  V" a, E+ i, T参考:《高级Bash脚本编程指南》
  • TA的每日心情

    2019-11-29 15:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-3-23 18:42 | 只看该作者
    Linux Shell中的一些特殊字符
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-10-25 13:46 , Processed in 0.140625 second(s), 24 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表