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

Linux Shell中的一些特殊字符

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
9 k2 }' _9 c/ @9 B, r  u
特殊字符
+ R# I# _8 l: A. V' w3 I
7 l4 L' r, s3 n$ T# 注释
/ s  a# J  d' l7 g6 N表示注释   #注释( G/ d9 G3 {4 ~% h# M6 ?1 B' n
在引号中间和\#等表示#本身) X5 N2 O. J) H
echo ${PATH#*:} # 参数替换,不是一个注释
( m2 m/ T5 R# F6 r/ v) d7 Iecho $(( 2#101011 )) # 数制转换,不是一个注释
' I) z" O; B8 r  l, T, d
8 \! f7 t$ V6 ~  A; 分隔8 A! F; p& F. ~- `
命令分隔,在一行中写多个命令  echo "aa" ; echo "bb"6 W; E- o$ C/ Q8 Z) y
在条件中的if和then如果放在同一行,也用;分隔
. ?5 @8 q, e6 X2 r2 E;; case条件的结束: v( |! i0 N* f1 r

6 I. g/ Y2 h4 v# |2 W. 命令相当于source命令
8 }: \. j& @, _( B8 f5 P" h命令:source
; F7 A' b( E& n% R1 k% {文件名的前缀,隐藏文件
9 b% r% `5 @3 S* ?7 G; ]3 _目录:.当前目录,..父目录5 U5 c% G4 o$ N8 N9 ?* ?
正则表达式:匹配任意单个字符% f  w, f8 S) Z, s$ ^
"" 部分引用 支持通配符扩展
& m" f* @; W# I! y5 {# g9 m" D# C
6 H; _, k: v. p& ^' A; m$ l'  ‘ 全引用,不进行通配符扩展
# }* L$ T+ w' f6 `; i
3 ?# i3 r7 H2 U8 f7 W: [\ 转义
7 S4 `0 z: d- Q0 x) p% X' H( y( {& V  K+ l3 W$ d
/ 目录分隔符4 J2 q6 D) Y* z1 A
( O" r0 a9 m4 J1 \- K
,  多个命令都被执行,但返回最后一个' P* \; G1 n. x

/ ~# H* O& b( D7 m` 后置引用. ?7 @! O- a" K# R, T4 e

7 j. r8 c, {, X9 H; ^: n4 B3 x: 操作符/ @2 k0 R- F9 Q8 e8 t9 c) N7 q
空操作
% e' o0 O' b5 w# f) c8 ~死循环:    while :5 e6 v5 `3 Z; N2 O7 {0 X8 j3 v5 |3 n7 W# d
在if/then中表示什么都不做,引出分支* r: r! A% w( x" R
设置默认参数:   : ${username=`whoami`}
6 x+ R* f. R5 C9 `! O; f变量替换:    : ${HOSTNAME?} ${USER?} ${MAIL?}
6 f" W! _6 I' E) D7 B+ A在和 > (重定向操作符)结合使用时,把一个文件截断到0 长度,没有修改它的权限;如果文件在之前并不存在,那么就创建它.如:     / b6 v* \9 c( ?3 B
  : > data.xxx #文件"data.xxx"现在被清空了. 与 cat /dev/null >data.xxx 的作用相同 然而,这不会产生一个新的进程,因为":"是一个内建命令.
9 o8 J6 v# O( R! T# g* o2 J$ ^在和>>重定向操作符结合使用时,将不会对想要附加的文件产生任何影响.0 g0 H$ y, T; v0 V0 V( s
如果文件不存在,将创建.6 Z! d# }0 @! [3 @8 X
* 匹配0个或多个字符;数学乘法;**幂运算
1 L5 @2 [" \) n0 @. E6 G" H3 _% Q; w  e
? 匹配任意一个字符;但在((a>b?a:b))表示c语言中的三目运算
7 b' H4 ~7 D$ e3 ^% e
+ p. x  {" z, l9 t$ ! ]: h+ K% V; V: w, g' @0 s
取变量的值 echo $PATH7 a0 _8 l3 _/ b) P, l- `0 b1 a, Z
正则表达式中表示行的结尾
9 }3 S0 u/ e  W( o3 l( [${} 参数替换 ${PAHT}
5 E+ T2 W' ~6 q$* 所有参数
: \) H4 ?/ k6 f: t$# 参数个数
$ o5 j' y/ a+ t5 e  d2 e$$ 进程的ID4 X0 t  c: ^& O
$? 进程的返回状态" U. C2 D  ~/ C2 `8 U- {
( )' n% S3 A$ k  V
命令组,在一个子Shell中运行   (a=3;echo $a) 其中定义的变量在后面不可用3 T* z! Z. ]+ l* Q( P
数组初始化: array=(a,b,c)
7 K1 \2 b0 \# `* }0 W* U! L{ } 代码块,即一个匿名函数,但其中定义的变量在后面依然可用
- G) P5 m3 }1 k) T; B+ k- ^1 ~- t: k' U1 y+ i0 P: r# |
{ } \; 用在find的-exec中 $find -name *.txt -exec cat {} \;- H4 ^7 }1 s  u& H

; t( C# c% z2 Y$ p3 Z2 ?0 H* X[ ]& H, h9 D2 \5 g, c
测试 [-z $1]7 U, ~2 ^& S2 D' A# r6 G) ?
数组元素 a[1]='test'" F0 s. x  f2 o, W0 X. B
[[]]表示测试 使用[[ ... ]]条件判断结构, 而不是[ ... ], 能够防止脚本中的许多逻辑错误. 比如, &&, ||, <, 和> 操作符能够正常存在于[[ ]]条件判断结构中, 但是如果出现在[ ]结构中的话, 会报错.7 k& R0 b$ @' I( `2 i3 u& T# M5 ]. v' @
(( ))数学运算
4 m4 `7 t/ Z; w; l, y在正则表达式中表示范围 [a-z]
; [  K3 o1 Y' ?7 w# s  t" |< <<  >  重定向和进程替换  ls -al > a.txt
9 I" Y' y5 X( Z# P* Q& X) V( W1 G# o/ p* X) p" m- w% ^. |* a: P
>  <  还用在ASCII比较 if [[ "$veg1" < "$veg2" ]]9 ^+ H2 d' S3 M: e
  \" V+ t& p1 Q; ]- k; b! g) I
\<,\> 正则表达式中的单词边界.如:bash$grep '\<the\>' textfile& I0 M- G/ M1 x9 L2 u+ k3 `
| 管道5 N5 X  V9 u) k! m% |
>| 强制重定向(即使设置了noclobber 选项--就是-C 选项).这将强制的覆盖一个现存文件.
3 F; q" c6 \7 [+ `- e, d; `- Q7 y|| 逻辑或操作 ;用在两个命令之间的时候,表示在前一个命令结束时,若返回值为 false,继续执行下一个命令" J. w* h/ C( J* ?! t
&& 逻辑与;用在两个命令之间的时候,表示在前一个命令结束时,若返回值为 true,继续执行下一个命令/ q: F% c- V, H( I/ c- c
& 后台运行: I+ X% K6 C) I9 S
-. u! i- h7 {9 ]! [+ J: Z
参数选项+ t  ]% o5 Q1 S# }4 P' ?
减号& \8 h1 Q9 N" v
重定向stdin和stdout:cd /source/directory && tar cf - . ) | (cd /dest/directory && tar xpvf -)
2 d$ _& }5 G# w先前的工作目录 cd -
, @2 `6 ~' l) e- b: I$ l$ M注:使用-开头的文件名和变量名可能会出现一些问题
  K5 g/ W) S1 `+   一个命令或者过滤器的选项标记.
( d- [& T0 j7 E# i) o~ home目录- Z: _* C# J4 ~, m+ H' @
~+ 当前工作目录
  B( Y$ B' \* V0 S~- 先前工作目录  q( s1 ?' o; Z
^ 正则表达式中表示行首
# G( N# p) P+ d# ?* k2 F$IFS 用来做一些输入命令的分隔符, 默认情况下是空白." Y, }! [- K4 m* k8 ~3 H
控制字符0 B/ h2 t% R( e

; W0 ?& w  G  K+ }: _6 G修改终端或文本显示的行为. . 控制字符以CONTROL + key这种方式进行组合(同时按下). 控制字符也可以使用8进制或16进制表示法来进行表示, 但是前边必须要加上转义符.6 g& X& [7 [6 j% @% i6 _$ E. x

! P& [! K5 v0 V0 j控制字符在脚本中不能正常使用.' `6 n4 `0 D4 _  B+ G; t4 t3 e

9 u* O9 t2 u- k& n# B, [* ~; XCtl-B退格(非破坏性的), 就是退格但是不删掉前面的字符.9 e( B, \: D  ?8 L9 Y* D% z
# c) r) K4 h) n
Ctl-C终结一个前台作业.: W/ ?+ [/ ~' N
1 Y9 W0 ^  u/ f; M- X, z" `9 Y
Ctl-D   从一个shell中登出(与exit很相像).
4 \3 y7 x5 [$ M            "EOF"(文件结束). 这也能从stdin中终止输入.
- s9 C6 V8 [% q+ P4 |) F3 x            在console或者在xterm窗口中输入的时候, Ctl-D将删除光标下字符. 当没有字符时, Ctl-D将退出当前会话, 在一个xterm窗口中, 则会产生关闭此窗口的效果.! F4 u+ x1 t: P8 D% Y7 o
0 l9 I2 h# `8 s, O% V! R
Ctl-G "哔" (beep). 在一些老式的打字机终端上, 它会响一下铃.. `$ T$ c, V/ H! {& `( }" N# `

! j7 p& b* G1 {# @* I1 `$ pCtl-H "退格"(破坏性的), 就是在退格之后, 还要删掉前边的字符.
0 J* S+ v7 h% {8 r4 r
& T$ k" e" ]! ]0 O  ?" ]6 nCtl-I 水平制表符.
8 `  f. E: `  [) ]: D1 G
1 E4 [6 c7 h2 J$ @( SCtl-J 重起一行(换一行并到行首). 在脚本中, 也可以使用8进制表示法 -- '\012' 或者16进制表示法 -- '\x0a' 来表示.2 Z9 v7 ?3 Q1 {; p: E4 y

0 f/ p& y( |* z5 B+ n/ t5 ]Ctl-K垂直制表符.
8 `2 C2 q) w: y; O. p/ {; m# x# U3 K) Z6 u$ R
Ctl-L 清屏(清除终端的屏幕显示). 在终端中, 与clear命令的效果相同. 当发送到打印机上时, Ctl-L会让打印机将打印纸卷到最后.
' b" Z: q4 b3 G; Z9 U7 j; f2 \7 i- ?, W5 C- g+ O0 @
Ctl-M 回车.
) s' I: K: q' ~! R- B+ m: ?
, k' @; `+ l! U5 h) d/ Q. mCtl-Q 恢复(XON).在一个终端中恢复stdin., r  K5 l2 d1 i# g3 f& b

1 d/ g4 w6 J0 x0 S" RCtl-S 挂起(XOFF).
; Z1 f+ {$ @  Q7 b: `( X         在一个终端中冻结stdin. (使用Ctl-Q可以恢复输入.)
; G6 s; T  Z6 S8 ~/ V
5 d3 H# `& P+ x. x. q; hCtl-U 删除光标到行首的所有字符. 在某些设置下, 不管光标的所在位置Ctl-U都将删除整行输入." [& ]7 e0 `7 m# |: i2 T$ y
, v# S. O& z- c& s2 T( P
Ctl-V当输入字符时, Ctl-V允许插入控制字符.
* H( J/ l; j7 [% p$ @; P1 n2 A1 M% n
Ctl-V主要用于文本编辑.
: B( d2 e7 B' n3 ?7 t( k
( b+ C2 |  D/ j4 ~* lCtl-W
0 E1 r* [* |& t3 N3 u6 X) d当在控制台或一个xterm窗口敲入文本时, Ctl-W将会删除当前光标到左边最近一个空格间的全部字符. 在某些设置下, Ctl-W将会删除当前光标到左边第一个非字母或数字之间的全部字符.3 [5 G' a2 Y: q2 c7 K3 I8 v
+ f; s+ `- S$ y& r
Ctl-Z暂停前台作业.
, K2 q0 g3 j/ a参考:《高级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-11-23 18:57 , Processed in 0.156250 second(s), 24 queries , Gzip On.

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

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

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