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

Linux Shell中的一些特殊字符

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

; C. G! w# p2 B7 E& Z* b/ P4 D4 r特殊字符
0 c/ \, Z9 E2 O/ g8 x7 I# \
3 A" n7 }3 h" v6 S5 F( }% K# 注释2 J- F( Y+ S2 v! ?. q( r& p! f% @
表示注释   #注释
! F1 M) @# Y, ~在引号中间和\#等表示#本身
! Y: B/ D2 \6 U2 b5 Oecho ${PATH#*:} # 参数替换,不是一个注释
. r4 y2 W3 c  E6 E, V! N5 pecho $(( 2#101011 )) # 数制转换,不是一个注释- |/ }4 ~3 d* d4 p) J" y$ s  \
1 C: z! \1 h, o8 t( T
; 分隔
5 f) c4 ~3 R8 A8 f4 w* g8 v命令分隔,在一行中写多个命令  echo "aa" ; echo "bb"- M3 w& Y& ~7 V/ D
在条件中的if和then如果放在同一行,也用;分隔' c, J, w2 ~  n3 a% x
;; case条件的结束+ T8 x( V4 T! ^1 k4 i! x
* L/ u! l5 [' ^& ?1 A
. 命令相当于source命令* A1 B6 |+ s7 j4 Y% _$ e
命令:source( D6 K' {# Z/ l5 ]5 P7 m; @4 ^
文件名的前缀,隐藏文件
9 _# S+ Q( J' Q2 f7 B3 b目录:.当前目录,..父目录; C% ~+ V- S( M) |1 c* w8 ^, v
正则表达式:匹配任意单个字符. O- p& V7 h( A3 m8 s$ c9 N" G) _5 v; ?
"" 部分引用 支持通配符扩展
: J& H0 _$ M9 R; B8 E& Z- R0 C% v7 s! Z- E2 m, ~( b, ^
'  ‘ 全引用,不进行通配符扩展
2 J7 r4 K6 ~+ N0 o3 `6 m' H7 E9 ^2 v* k5 Y$ Y5 A
\ 转义* \! U% c2 d* m; k, V

9 F0 L7 q. I+ Y1 M0 n/ 目录分隔符2 l; J, z, z) H- b4 S

* S4 O1 F; A3 J,  多个命令都被执行,但返回最后一个) q( O4 x, O6 E
  v: o3 W: M; [/ p, O
` 后置引用
" l; f& i# W' S2 j) D0 O2 ]# Q& u* ]. a! U+ R' v
: 操作符
8 d0 z2 a! K/ N8 h* j* \( }空操作
7 r6 z+ P8 S" C! \2 [1 ]8 g死循环:    while :4 f4 N4 o: Y& I  w  P0 ]
在if/then中表示什么都不做,引出分支6 f* n8 }  u3 H. K. }7 u/ j! P
设置默认参数:   : ${username=`whoami`}
8 O4 W3 n( k2 p  g变量替换:    : ${HOSTNAME?} ${USER?} ${MAIL?}
- j3 M/ n) R* |4 G5 K) d$ T  s在和 > (重定向操作符)结合使用时,把一个文件截断到0 长度,没有修改它的权限;如果文件在之前并不存在,那么就创建它.如:     
% F0 G7 I0 n0 P1 S5 K  : > data.xxx #文件"data.xxx"现在被清空了. 与 cat /dev/null >data.xxx 的作用相同 然而,这不会产生一个新的进程,因为":"是一个内建命令.  z4 a# l, V, k# r9 ^
在和>>重定向操作符结合使用时,将不会对想要附加的文件产生任何影响.) h8 ~" M  \* t0 t1 _4 d. o! y
如果文件不存在,将创建.+ @. m; C7 U4 ~( O& k
* 匹配0个或多个字符;数学乘法;**幂运算4 }4 |0 [6 s3 G

2 Q& q0 Q5 ]* x9 d8 K, I8 k+ B; d: u? 匹配任意一个字符;但在((a>b?a:b))表示c语言中的三目运算
' i$ F/ w! T) g/ d' d. y8 @
" x& x9 L! W0 B2 x; q7 j$
# F( R! g: j# Z5 \5 f3 Y取变量的值 echo $PATH* V9 n: f' N, ^7 ~
正则表达式中表示行的结尾
* D# w# J3 S8 P+ f+ m${} 参数替换 ${PAHT}
0 O9 {( n' ?) I$* 所有参数$ |# ^8 o" ^! G. Y7 h
$# 参数个数( _& z1 A, g; i4 D+ Y
$$ 进程的ID; |. l; H; C; Y
$? 进程的返回状态
& X( L, ^6 x* g0 m9 c/ v) o' I( )
0 }' T& J2 N; Y! e; {: R* U  X命令组,在一个子Shell中运行   (a=3;echo $a) 其中定义的变量在后面不可用
, w+ ]& n4 U! S, q" m5 P数组初始化: array=(a,b,c)' Z( A  _8 Y$ e+ k; |1 U. s
{ } 代码块,即一个匿名函数,但其中定义的变量在后面依然可用' e+ c  a  E9 X: {1 q
  x9 W# y' \: a% y2 \
{ } \; 用在find的-exec中 $find -name *.txt -exec cat {} \;
& Y. @- N' U. p0 ?7 S' q" y( X! O! C& s# {
[ ]
$ z! H- x4 A7 U测试 [-z $1]
' Y& k! o9 l$ s5 X0 l# r, R4 |数组元素 a[1]='test'. A' ~! @4 H1 L* m! o
[[]]表示测试 使用[[ ... ]]条件判断结构, 而不是[ ... ], 能够防止脚本中的许多逻辑错误. 比如, &&, ||, <, 和> 操作符能够正常存在于[[ ]]条件判断结构中, 但是如果出现在[ ]结构中的话, 会报错.
3 Q; `. J0 t" V: a  j' j(( ))数学运算) X: z% l" \5 k5 _, l# W; l0 r
在正则表达式中表示范围 [a-z]: C4 b' R* N1 I8 x; j% Q
< <<  >  重定向和进程替换  ls -al > a.txt
# p) }8 o  u9 P2 j, P
. K) C5 ^# N3 C9 y3 K) Z- @>  <  还用在ASCII比较 if [[ "$veg1" < "$veg2" ]]
! Y3 J+ D  E% n) {
$ [; g4 @! O8 Q/ m\<,\> 正则表达式中的单词边界.如:bash$grep '\<the\>' textfile- H* u; x9 ]3 l7 _$ d
| 管道  I; W; }  H! m* c8 x9 P. O0 S- {
>| 强制重定向(即使设置了noclobber 选项--就是-C 选项).这将强制的覆盖一个现存文件.
' f* i1 N4 U* T4 Z|| 逻辑或操作 ;用在两个命令之间的时候,表示在前一个命令结束时,若返回值为 false,继续执行下一个命令; C4 y9 q, h6 x- U$ m' r0 ?. }& ^
&& 逻辑与;用在两个命令之间的时候,表示在前一个命令结束时,若返回值为 true,继续执行下一个命令
$ q+ z. o* E+ j1 n7 H, ^: J& 后台运行; d9 Y/ s, @: x/ @* H; Q; B+ K
-
" O3 L1 I1 g$ N  C3 c参数选项9 k3 s% S! {6 V8 V0 b7 C
减号
2 p+ }# J  z4 x重定向stdin和stdout:cd /source/directory && tar cf - . ) | (cd /dest/directory && tar xpvf -)7 J6 X1 o3 ?1 R3 q) \) J6 o
先前的工作目录 cd -/ g8 p% ?, p9 ^+ @* ]9 x
注:使用-开头的文件名和变量名可能会出现一些问题
5 Y$ g% x6 I, Q+   一个命令或者过滤器的选项标记.
; z3 b/ s% r" j5 W% P! F# i~ home目录
5 y; u! W; ]* O7 [0 e~+ 当前工作目录0 a+ J' y+ H1 _  e6 t7 d
~- 先前工作目录
7 {( {) N& }% i  Y1 e7 U. K' X^ 正则表达式中表示行首% \  _5 ^% k  {% ]8 n4 i2 s  \
$IFS 用来做一些输入命令的分隔符, 默认情况下是空白.
) L4 k, O" f/ C8 x! J控制字符/ l0 K3 A6 w5 z; P# W
( N; J5 x  v# p% `, C
修改终端或文本显示的行为. . 控制字符以CONTROL + key这种方式进行组合(同时按下). 控制字符也可以使用8进制或16进制表示法来进行表示, 但是前边必须要加上转义符.
& I4 f7 @5 V7 K- A5 e
5 d& c6 m+ [! J, l1 ]0 A控制字符在脚本中不能正常使用.
* g$ k% G) `1 Y' D( C1 \- w  w5 G# l$ X7 Q8 y5 O! H; h
Ctl-B退格(非破坏性的), 就是退格但是不删掉前面的字符.
' p5 b: V5 D9 r; R5 O% v  b, H! h, O
Ctl-C终结一个前台作业.) U9 m3 c  w, t$ I$ \6 w

: C/ c. S0 r' z+ L! TCtl-D   从一个shell中登出(与exit很相像).0 B' }9 B* B  x+ Z9 k& s
            "EOF"(文件结束). 这也能从stdin中终止输入.; p' q2 l' |! i2 Y
            在console或者在xterm窗口中输入的时候, Ctl-D将删除光标下字符. 当没有字符时, Ctl-D将退出当前会话, 在一个xterm窗口中, 则会产生关闭此窗口的效果.
( \( P: O+ o, @% ^) D0 }6 Z* @$ y1 s4 s2 s! y. p+ A/ J
Ctl-G "哔" (beep). 在一些老式的打字机终端上, 它会响一下铃.; X' u9 W$ s- X9 N1 v1 W$ ]) _$ V

3 z$ X! o: D  q( K& Q9 F, P/ m- w. cCtl-H "退格"(破坏性的), 就是在退格之后, 还要删掉前边的字符.% @$ Q/ ]3 R; v0 R) b$ r1 W. V! a8 q

* t) p. R" O/ |, |$ {3 S) vCtl-I 水平制表符.
8 T& c7 A! L1 e! y
/ A2 t( a2 u4 I3 @" d4 yCtl-J 重起一行(换一行并到行首). 在脚本中, 也可以使用8进制表示法 -- '\012' 或者16进制表示法 -- '\x0a' 来表示.
( }% M$ }9 F6 }- _6 S) k- A+ P3 l( A
4 c. C/ Z+ m% y' g( NCtl-K垂直制表符.$ x; C0 ?" M# \% ~7 \( \

0 V. y1 \7 i- T( d6 }/ w8 D, @Ctl-L 清屏(清除终端的屏幕显示). 在终端中, 与clear命令的效果相同. 当发送到打印机上时, Ctl-L会让打印机将打印纸卷到最后.
% r8 n7 h9 \# a. }- b( N! a. R; C9 B% c9 @% T5 s4 T
Ctl-M 回车.
& T4 u% Z: x5 U5 o" Q; E% W( Y6 O8 N5 s' X5 p# C
Ctl-Q 恢复(XON).在一个终端中恢复stdin.5 X& M- w0 ]  w: m/ E; W. j. R, D

* P, B# ?( n" v$ ^  t. G: U: [/ ^Ctl-S 挂起(XOFF).6 w; H# H' b5 t; P9 k
         在一个终端中冻结stdin. (使用Ctl-Q可以恢复输入.)
7 B1 G+ h0 n  [/ d+ ?4 T& w) j5 o* p
Ctl-U 删除光标到行首的所有字符. 在某些设置下, 不管光标的所在位置Ctl-U都将删除整行输入.* L, z7 q3 M: |/ E+ q

2 Z  ^6 {5 u- C8 F( }/ _0 ^Ctl-V当输入字符时, Ctl-V允许插入控制字符.
6 I: ?: v$ ], H( I' M0 E( f
  a+ J* J+ f: BCtl-V主要用于文本编辑.
+ n, p* v& s# `2 N% v- F! @+ M2 ~- d. _, C1 N' t5 V
Ctl-W - j0 F* k8 k3 r  a; H
当在控制台或一个xterm窗口敲入文本时, Ctl-W将会删除当前光标到左边最近一个空格间的全部字符. 在某些设置下, Ctl-W将会删除当前光标到左边第一个非字母或数字之间的全部字符.
) D$ Z$ ?; s: `4 g4 H# v
3 e* H" `% R. H) j# P1 C6 _$ W7 WCtl-Z暂停前台作业.: l9 p+ Z% v' [8 C- v* K
参考:《高级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-24 05:06 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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