首頁 > 運維 > linux運維 > 總結Shell中的特殊字符

總結Shell中的特殊字符

巴扎黑
發布: 2017-08-15 15:55:38
原創
1966 人瀏覽過

這篇文章主要為大家總結了關於Shell中特殊字符的相關資料,文中包括分好、&、#、! 、$、大於號、單雙引號等等一系列特殊字元的用法,透過範例程式碼介紹的非常詳細,對大家的學習或工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧。

前言

眾所周知shell既是類別Unix作業系統的命令解析器,用來解釋執行使用者輸入的一連串指令,它類似於DOS下的command和後來Windows的cmd.exe。同時shell也是一種程式設計語言。作為命令解釋型的腳本語言,它交互式解釋和執行用戶輸入的命令或自動地解釋和執行預先設定好的一連串的命令;作為程式設計語言,它預定義了各種環境變量,保留了一些關鍵字以及一些特殊字元的含義,並提供了許多在高階語言中才具有的控制結構,包括循環和分支判斷。

本文將介紹給大家關於Shell特殊字元用法的相關內容,話不多說,來一起看看詳細的介紹:

1、;分號

連續運行指令


#
# ifdown eth0;ifup eth0
登入後複製

2、| 管道

正規表示式中表示或


#
# echo "ooooee" |egrep '(oo|ee)'{2} 表示匹配 oooo 或者 eeee 的字符
登入後複製

前面指令的標準輸出作為後面指令的標準輸入


# ifconfig|grep eth0 表示ifconfig查出来的信息然后过滤出eth0的这一行
登入後複製

3、&

#將指令放到背景執行


# mysqld_safe --user=mysql & 将MySQL放到后台启动
登入後複製

表示標準輸出與標準錯誤輸出


#
# ifconfig &>/dev/null 将ifconfig执行得到的结果输出到/dev/null里面
登入後複製

##4、 &&

前面指令回傳值為0才執行後面的指令



# ls && echo "ok"
登入後複製

5、||

前面指令回傳值為非0才執行後面的指令



# lls || echo "ok"
登入後複製

6、# 井號

# 表示註解


$# 表示位置參數的數目



# echo $#
0
登入後複製

${#變數名稱} 表示變數的長度



# a='hello'
# echo ${#a}
5
登入後複製

${#變數名[@]} 表示陣列的數量



# a=(1 2 3)
# echo ${#a[@]}
3
登入後複製

7、!驚嘆號

將指令或條件表達式的回傳值取反



# if ! [ 1<2 ]; then echo &#39;ok&#39;; else echo &#39;no&#39;; fi
ok
登入後複製

執行歷史指令



# history 
1 ls
2 tail test1.txt
3 mysql -uroot -p123
4 ls /tmp/
5 cd /tmp/
[root@localhost ~]# !994
ls /tmp/
account.sql data.sql mysql.sock t1.txt t2.txt
登入後複製

vi或ftp中執行外部shell指令


例如:在vim中,想要執行一條指令,就在末行模式,輸入!感嘆號後面加上要執行的指令


間接應用變數


例如:

${!a} ---- 間接取b 的值

8、$ 美元符號

#取變數的值



# a=10
# echo $a
10
登入後複製

正規表示式表示行尾



egrep &#39;:$&#39; /etc/inittab 
egrep ‘^hello$&#39; file
登入後複製

9、> 大於號碼

#輸出重定向



echo &#39;123&#39; >test.txt 表示将123 输入到文件test.txt中 条件测试中的大于号
登入後複製

11、< 小於號碼

輸入重定向


條件測試中的小於號


#= 等號


##變數賦值- 例如:設定變數a=10


條件測試中的等- 例如:[ a=b ] 判斷變數a是否等於b


數值比較== - 例如:(( a==20 )) 判斷變數a是否等於20


#12、+ 加號 ##算術運算中的加號- 例如:1+3

正規表示式中1個或多個前面的字元- 例如:ab+c 表示符合ab和c之間有1個或多個字元


13、>>

#輸出重定向追加- 例如:
echo "123" >> test.txt

將123追加到檔案test.txt中


14、<<

here document

例如:


#
# passwd <<end
> 123
> 123
> end
登入後複製

更改使用者root 的密碼。


15、- 減號

#算術運算中的減號- 例如:10-2

指令的選項- 例如:ls -l

上一次工作目錄- 例如:cd -

通配符和正規表示式中表示範圍- 例如:[a-z]


tar -cvf - /home | tar -xvf -
登入後複製

表示輸出流或輸入流

將前面的輸出,透過管道交給後面的指令,前面的壓縮,後面的解壓縮


16、'' 單引號

解决变量赋值空格的问题

例如:a='1 2'

阻止shell替换

17、"" 双引号

解决变量赋值空格的问题

例如:a="1 2"

阻止shell部分字符替换,对$、!等无效

18、`` 反引号 相当于 $()

命令行替换

例如:可以设变量a=`ls`

19、% 百分号

算术运算中的模运算

例如:echo $((100%10)) 就是100除以10的余数为0

vi中替换操作中表示所有行 (末行模式下,替换所有前面加 %)

例如:在末行模式下输入 :% s/D/d 表示将文本中的所有的D替换为d

20、() 单圆括号

子shell中执行命令,会继承父shell的变量

括起数组元素

例如:定义一个数组 a=(1 2 3 4)

21、(()) 双圆括号

算术运算

例如: echo $((10/2)) 结果就是5

整数比较测试

例如: (( 10>2 )) 判断10是否大于2

22、[] 单方括号

通配符和正则中表示匹配括号中的任意一个字符

例如: [abc] 表示匹配abc中的任意一个字符

条件测试表达式

例如: [ -f /etc/passwd ] // 测试是不是文件

数组中下标括号

例如:echo ${a[0]} 表示取数组中下标为0的值

23、[[]] 双方括号

字符串比较测试

例如: [[a=b]] 用来字符串的比较

24、. 英文句点号

正则中表示任意1个字符

例如:a...b 表示 匹配 a和b之间夹三个字符的字符串

当前shell执行脚本命令

例如: ./test.sh 执行当前路径下的shell脚本test.sh

表示当前目录

例如:cd ./bgk 进入当前目录下的bgk目录下

25、{} 大括号

通配符扩展 abc{1,2,3}

正则表达式中表示范围

例如:a{3} 匹配3个 a

for i in {1...10} 循环指定范围

匿名函数{ cmd1;cmd2;cmd3;} &> /dev/null

{ } 里面的命令,是在当前shell执行

注意: { } 第一条命令前面要有空格,后面的命令要有分号

括起变量名 ${abc}a

26、/ 正斜杠

算术运算中的除法

例如:echo $((10/2)) 结果就是5

根目录或路径分割符

例如:cd /usr/local/ 表示路径

27、^

在通配符中表示取反

例如:[^abc] 表示匹配除了abc外的任意一个字符

在正则表达式中表示以什么开头

例如:


egrep ‘^hello$&#39; file
登入後複製

以上是總結Shell中的特殊字符的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板