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

Linux Shell中的一些特殊字符

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

, j" V1 T* Y, Y特殊字符
7 ]8 ?1 q# v9 w+ z" v( X
& z2 u2 i% B5 c$ h& F4 o) T5 u# 注释
% |8 m6 ?# m7 ]3 D表示注释   #注释
6 m5 G- R& H& {在引号中间和\#等表示#本身) z7 S5 S) K4 h$ s
echo ${PATH#*:} # 参数替换,不是一个注释' Q* A+ ^& Y$ C& O
echo $(( 2#101011 )) # 数制转换,不是一个注释
8 t0 ^+ v/ W# |: |
" h( t1 c* W! f2 l/ m. h; 分隔
% e/ ~; [* C1 H命令分隔,在一行中写多个命令  echo "aa" ; echo "bb"
8 F4 v- t; R7 Y5 ]- A在条件中的if和then如果放在同一行,也用;分隔8 M0 z8 n+ J( ]5 w0 Q9 d, w0 t: S, R
;; case条件的结束
/ |, x9 H# d( H. B3 H  j& B$ }: Q% w/ U4 T
. 命令相当于source命令
( R" ~9 N2 @9 n4 N, T命令:source
" z: n& h7 t& _7 h/ B9 m2 y1 L( c5 M文件名的前缀,隐藏文件
" f' H( x- B( r. T4 [! z目录:.当前目录,..父目录/ Q% {. T1 |; \
正则表达式:匹配任意单个字符7 x; n" K1 C; z4 v
"" 部分引用 支持通配符扩展
1 d* n3 D5 Q8 V2 D* y% t* w) Q0 B8 T, R$ j$ ~  {$ S
'  ‘ 全引用,不进行通配符扩展
% L) c: v5 g* x0 ^+ c- N
' H5 P9 B! w3 m( e8 x\ 转义, \# j9 [7 o+ z. v* c* H
' K# l; e! q9 v: P( o( l, z0 @9 N
/ 目录分隔符
& I; M" h5 a. C' R$ S; j( [% g% ^4 S( Z% n, K8 p+ P% ]
,  多个命令都被执行,但返回最后一个
' l& x4 m) h7 i. S9 k8 l9 q7 p# `/ s' K0 {! f! w% a
` 后置引用8 c  c: T  O2 A' d, f! g3 @) v

  l6 g6 @6 F, U9 R# m" I: f: 操作符9 w3 E+ J+ ^5 E. ~9 Q
空操作
6 t+ S# k' O) h9 E( ?8 p( f死循环:    while :5 i! }$ [" T9 i8 }' p. q
在if/then中表示什么都不做,引出分支
8 @' l+ P1 w" H# O6 G设置默认参数:   : ${username=`whoami`}
7 p- R, S( j. T/ T1 g" E+ ]变量替换:    : ${HOSTNAME?} ${USER?} ${MAIL?}# U3 [) \, a) Z  i. N; C* M
在和 > (重定向操作符)结合使用时,把一个文件截断到0 长度,没有修改它的权限;如果文件在之前并不存在,那么就创建它.如:     
2 V  x% j' N$ c  : > data.xxx #文件"data.xxx"现在被清空了. 与 cat /dev/null >data.xxx 的作用相同 然而,这不会产生一个新的进程,因为":"是一个内建命令.
, A  E/ @% B+ G" }/ F在和>>重定向操作符结合使用时,将不会对想要附加的文件产生任何影响.
( B( F# X6 w8 |, P# i' r' j& u6 t: M4 r如果文件不存在,将创建., b) y0 S% U% B6 H- l; E7 N
* 匹配0个或多个字符;数学乘法;**幂运算
  Y" |3 D7 N% q/ T1 s
" }9 _1 p% U- d2 T5 |! o  |9 `? 匹配任意一个字符;但在((a>b?a:b))表示c语言中的三目运算0 [7 I% n# E! [  T$ B9 P! G
* ^1 u$ ~, E' v% m  v2 l8 C
$ % N* D) y. l; J. Y% g% K
取变量的值 echo $PATH
( r9 N; m" E( m. u$ q正则表达式中表示行的结尾
- V& K% }5 b  P% E9 X& w+ D+ |2 p${} 参数替换 ${PAHT}4 C4 C3 W/ z, W. e3 _/ t( Q! k
$* 所有参数, h$ q& d& t/ R3 p: y* w$ Z
$# 参数个数
9 |1 `% A1 {) W# Q; j2 I$$ 进程的ID7 t* `7 K: a* M
$? 进程的返回状态
0 M" \. p: g7 ?6 k* K( )
+ L8 X- S6 \- A2 W3 l命令组,在一个子Shell中运行   (a=3;echo $a) 其中定义的变量在后面不可用
+ {& p, k0 d7 m4 G8 O% W3 S" P% H数组初始化: array=(a,b,c)+ H: B: d! s, \9 O
{ } 代码块,即一个匿名函数,但其中定义的变量在后面依然可用3 w) y# E* E" [! ^; l
7 f+ I/ b5 f( l* R) V/ |4 E( m
{ } \; 用在find的-exec中 $find -name *.txt -exec cat {} \;
* w9 S  W' ?3 k. q
) s: J! z) w( x# ^8 E, O8 _[ ]) |3 A7 v+ D4 ^. i6 L; b
测试 [-z $1]
5 Y8 s# N: S5 z) E; U数组元素 a[1]='test'- ^, O1 W2 s$ H: v" |( j" j) X
[[]]表示测试 使用[[ ... ]]条件判断结构, 而不是[ ... ], 能够防止脚本中的许多逻辑错误. 比如, &&, ||, <, 和> 操作符能够正常存在于[[ ]]条件判断结构中, 但是如果出现在[ ]结构中的话, 会报错.9 \3 O! w6 Z7 q) i' G
(( ))数学运算$ Y% n! @2 R1 s# K' x2 l
在正则表达式中表示范围 [a-z]3 ~- c0 r1 C' D' v; p- {+ u5 {
< <<  >  重定向和进程替换  ls -al > a.txt
: K4 `3 [" b& G9 d7 q
( u7 k4 }+ q9 P+ h2 T>  <  还用在ASCII比较 if [[ "$veg1" < "$veg2" ]]( J" \0 R4 H) _) h8 H  i" M0 T8 M

7 ]& S0 s8 ], e\<,\> 正则表达式中的单词边界.如:bash$grep '\<the\>' textfile3 t  H  x6 H% c" m
| 管道+ E8 m- j) b" s; L3 N4 n+ @
>| 强制重定向(即使设置了noclobber 选项--就是-C 选项).这将强制的覆盖一个现存文件.
1 g- H0 C/ g# X+ T0 M/ X, B|| 逻辑或操作 ;用在两个命令之间的时候,表示在前一个命令结束时,若返回值为 false,继续执行下一个命令' w5 R  P9 F$ K: p- M! ~
&& 逻辑与;用在两个命令之间的时候,表示在前一个命令结束时,若返回值为 true,继续执行下一个命令
8 i7 X1 q+ _- V* a* U0 x9 \, x3 s& 后台运行/ w* D2 w# p  G" f$ [
-+ X5 _3 z" c6 |% u+ D6 O1 ^
参数选项
  N6 s' x: X' c; e5 k减号
  T( e# L- ~9 ]( E; c重定向stdin和stdout:cd /source/directory && tar cf - . ) | (cd /dest/directory && tar xpvf -), W  {9 r+ d) y+ H1 k
先前的工作目录 cd -5 [% I, u2 C" r: A
注:使用-开头的文件名和变量名可能会出现一些问题" U; j3 `" }8 j) ]& J1 j
+   一个命令或者过滤器的选项标记.2 {5 j2 B- U$ [% n& R- f" F& N
~ home目录
- y8 ^% t2 u. Z% L~+ 当前工作目录
! Y$ D" X% ]1 q; s$ E3 u1 [: I~- 先前工作目录
* a& K; ^# d4 v% P5 J4 C^ 正则表达式中表示行首! N, P1 \; y. i4 _, \
$IFS 用来做一些输入命令的分隔符, 默认情况下是空白./ b' X0 L; |- R
控制字符
) y9 L+ {* U4 ^9 ~5 P9 L* a; _; \. n8 R7 d0 T8 J2 F5 g1 ~6 Z
修改终端或文本显示的行为. . 控制字符以CONTROL + key这种方式进行组合(同时按下). 控制字符也可以使用8进制或16进制表示法来进行表示, 但是前边必须要加上转义符.; _/ c3 _3 y: ^) T* }4 ]

0 j& E2 a' L2 k+ e控制字符在脚本中不能正常使用.
6 L7 s& V5 `. L& d
+ a3 q. U1 s# vCtl-B退格(非破坏性的), 就是退格但是不删掉前面的字符.$ {: ~; O# p: K9 f
  C4 o9 K# y1 R. K
Ctl-C终结一个前台作业.
+ F' u, `" S! d7 ^7 ]7 A
  \- }0 H9 m8 j. T  v) OCtl-D   从一个shell中登出(与exit很相像).
/ D3 R, ^, L9 V4 G6 Y            "EOF"(文件结束). 这也能从stdin中终止输入.
0 T5 u4 |) `6 U            在console或者在xterm窗口中输入的时候, Ctl-D将删除光标下字符. 当没有字符时, Ctl-D将退出当前会话, 在一个xterm窗口中, 则会产生关闭此窗口的效果.
0 Z0 R* |6 S& v% C- Y: W& C
* s( x4 f+ g) n* B, `) dCtl-G "哔" (beep). 在一些老式的打字机终端上, 它会响一下铃.+ H$ T3 b/ x! ]; Z

2 ?4 c5 u8 g; l' x2 jCtl-H "退格"(破坏性的), 就是在退格之后, 还要删掉前边的字符./ m8 d9 ^) i1 P2 q

1 ?, p+ r/ ]) YCtl-I 水平制表符.5 z. {4 A' `" R3 j+ c* s, \

7 W( o8 R. W9 E0 k6 eCtl-J 重起一行(换一行并到行首). 在脚本中, 也可以使用8进制表示法 -- '\012' 或者16进制表示法 -- '\x0a' 来表示.
1 P' U) o6 S1 g8 N- E( A2 f
# o- o, c( a$ q# e; w! C9 u! lCtl-K垂直制表符.
. [9 l, i/ }2 z( N5 @7 I# v5 Z# |( d$ e+ e- D2 F' B/ E' ~
Ctl-L 清屏(清除终端的屏幕显示). 在终端中, 与clear命令的效果相同. 当发送到打印机上时, Ctl-L会让打印机将打印纸卷到最后.8 b. W$ v7 D4 I+ ~+ f

5 g+ x" ^. R  |Ctl-M 回车.6 b: P, l0 G. s0 f' S+ t
" ?& J$ r7 W" T% \$ K9 l+ C
Ctl-Q 恢复(XON).在一个终端中恢复stdin.
7 M1 v$ a; X9 h& _
( b' O4 c% ]3 CCtl-S 挂起(XOFF).3 {" U# U8 f. ]& O8 T( ~' U( [$ j4 }
         在一个终端中冻结stdin. (使用Ctl-Q可以恢复输入.)
6 V% l- }% ^' p* k( K% K% A
' P4 ]6 F3 a) s- T* Q9 tCtl-U 删除光标到行首的所有字符. 在某些设置下, 不管光标的所在位置Ctl-U都将删除整行输入.
4 i! w+ {7 e; _% F
6 a4 z0 l+ h2 d+ ICtl-V当输入字符时, Ctl-V允许插入控制字符. 8 J# w; b$ r6 E

2 |! l: U) N/ A. nCtl-V主要用于文本编辑.4 ~- u! R2 L8 ]. d8 Z! E) p

$ H, ]$ g% t+ T+ F. p$ c0 F5 `Ctl-W
9 G9 {+ ~( O. s* x9 z当在控制台或一个xterm窗口敲入文本时, Ctl-W将会删除当前光标到左边最近一个空格间的全部字符. 在某些设置下, Ctl-W将会删除当前光标到左边第一个非字母或数字之间的全部字符.% P9 Q8 g5 t* i( t
- U* I; }0 @3 C, p  a
Ctl-Z暂停前台作业.5 U$ Z2 Z8 @( K. }4 P3 b! b
参考:《高级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 19:50 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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