一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Linux|Centos|Ubuntu|系統進程|Fedora|注冊表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服務器之家 - 服務器系統 - Linux - linux特殊字符及其作用大全

linux特殊字符及其作用大全

2022-03-06 21:54不及路遠 Linux

這篇文章主要介紹了linux特殊字符及其作用,文中給大家補充介紹了linux特殊字符用法,需要的朋友可以參考下

1.通配符

? 匹配單個字符

* 代表所有字符

[abcd] 匹配[]里任意一個字符。4選1 [a-d]

[!abcd]  匹配不含[]里任意一個字符的字符。[^abcd]

2.路徑相關

~     用戶的家目錄,超級用戶為/root,普通用戶為/home

-      代表上一次(相對于當前路徑)用戶所在的路徑 $OLDPWD控制

.      代表當前目錄(點號還有很多其它含義,暫且不表)

..     代表上一級目錄

3.引號

''     單引號 引號里面是啥,就一直是啥不會改變,輸出和處理,都是所見即所得。

“”    雙引號 解析引號里的命令和變量,然后,輸出和處理

``    反引號 引命令的 等價$()

注:沒有特殊需求,就用雙引號引用字符串,純數字可以不用引號。

4.其他

;     命令結束符或者分隔符。

#    注釋,給人看的。機器忽略,root提示符。

|     管道 把一個命令的標準輸出作為標準輸入傳給另一個命令!

$    美元 普通用戶提示符,放在變量前面,代表變量內容

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@chuanwen ~]# echo $PS1
[\u@\h \W]\$
[root@chuanwen~]# echo PS1
PS1
[root@chuanwen ~]# echo $PS1
[\u@\h \W]\$
[root@chuanwen~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@chuanwen~]# echo $OLDPWD
/root/test
\*  讓有意義的字符還原成為它本身的意義
{}  序列 {1..10} {a..z} {a,c,m}  seq
touch {1..10}.txt
[root@chuanwen ~]# cp /etc/ssh/sshd_config{,.ori}
[root@chuanwen ~]# ls /etc/ssh/sshd_config{,.ori}
/etc/ssh/sshd_config /etc/ssh/sshd_config.ori
[root@chuanwen~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.ori
&  將程序放入后臺運行符,例如:/bin/sh /scripts/chuanwen.sh &

補充:下面看下linux 特殊字符用法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
# 井號 (comments)
#管理員 $普通用戶
 
腳本中
 
#!/bin/bash #!/bin/sh
井號也常出現在一行的開頭,或者位于完整指令之后,這類情況表示符號后面的是注解文字,不會被執行。
 
# This line is comments.
echo "a = $a" # a = 0
由于這個特性,當臨時不想執行某行指令時,只需在該行開頭加上 # 就行了。這常用在撰寫過程中。
#echo "a = $a" # a = 0
如果被用在指令中,或者引號雙引號括住的話,或者在倒斜線的后面,那他就變成一般符號,不具上述的特殊功能。
 
=======================================================================================
 
~ 帳戶的 home 目錄
 
代表使用者的 home 目錄 cd ~ 也可以直接在符號后加上某帳戶的名稱:cd ~ user或者當成是路徑的一部份:~/bin
 
~+ 當前的工作目錄,這個符號代表當前的工作目錄,她和內建指令 pwd的作用是相同的。
 
# echo ~+/var/log
 
~- 上次的工作目錄,這個符號代表上次的工作目錄。
# echo ~-/etc/httpd/logs
 
====================================================================================
 
; 分號 (Command separator)
 
在 shell 中,擔任"連續指令"功能的符號就是"分號"。譬如以下的例子:cd ~/backup ; mkdir startup ;cp ~/.* startup/.
 
=====================================================================================
 
;; 連續分號 (Terminator)
 
專用在 case 的選項,擔任 Terminator 的角色。
case "$fop" inhelp) echo "Usage: Command -help -version filename";;version) echo "version 0.1" ;;esac
 
=====================================================================================
 
. 逗號 (dot,就是“點”)
 
在 shell 中,使用者應該都清楚,一個 dot 代表當前目錄,兩個 dot 代表上層目錄。
CDPATH=.:~:/home:/home/web:/var:/usr/local
在上行 CDPATH 的設定中,等號后的 dot 代表的就是當前目錄的意思。
如果檔案名稱以 dot 開頭,該檔案就屬特殊檔案,用 ls 指令必須加上 -a 選項才會顯示。除此之外,在 regularexpression 中,一個 dot 代表匹配一個字元。
 
===================================================================================
 
'string' 單引號 (single quote)
 
被單引號用括住的內容,將被視為單一字串。在引號內的代表變數的$符號,沒有作用,也就是說,他被視為一般符號處理,防止任何變量替換。
heyyou=homeecho '$heyyou' # We get $heyyou
 
"string" 雙引號 (double quote)
被雙引號用括住的內容,將被視為單一字串。它防止通配符擴展,但允許變量擴展。這點與單引數的處理方式不同。
heyyou=homeecho "$heyyou" # We get home
 
`command` 倒引號 (backticks)
 
在前面的單雙引號,括住的是字串,但如果該字串是一列命令列,會怎樣?答案是不會執行。要處理這種情況,我們得用倒單引號來做。
fdv=`date +%F`echo "Today $fdv"
在倒引號內的 date +%F 會被視為指令,執行的結果會帶入 fdv 變數中。
 
 ====================================================================================
 
, 逗點 (comma,標點中的逗號)
 
這個符號常運用在運算當中當做"區隔"用途。如下例
#!/bin/bashlet "t1 = ((a = 5 + 3, b = 7 - 1, c = 15 / 3))"echo "t1= $t1, a = $a, b = $b"
 
====================================================================================
 
/ 斜線 (forward slash)
 
在路徑表示時,代表目錄。
cd /etc/rc.dcd ../..cd /
通常單一的 / 代表 root 根目錄的意思;在四則運算中,代表除法的符號。
let "num1 = ((a = 10 / 2, b = 25 / 5))"
====================================================================================
\ 倒斜線
 
在交互模式下的escape 字元,有幾個作用;放在指令前,有取消 aliases的作用;放在特殊符號前,則該特殊符號的作用消失;放在指令的最末端,表示指令連接下一行。
# type rmrm is aliased to `rm -i'# \rm ./*.log
上例,我在 rm 指令前加上 escape 字元,作用是暫時取消別名的功能,將 rm 指令還原。
# bkdir=/home# echo "Backup dir, \$bkdir = $bkdir"Backup dir,$bkdir = /home
上例 echo 內的 \$bkdir,escape 將 $ 變數的功能取消了,因此,會輸出 $bkdir,而第二個 $bkdir則會輸出變數的內容 /home
 
=======================================================================================
 
| 管道 (pipeline)
 
是 UNIX 系統,基礎且重要的觀念。連結上個指令的標準輸出,做為下個指令的標準輸入。
who | wc -l
善用這個觀念,對精簡 script 有相當的幫助。
 
====================================================================================
 
! 驚嘆號(negate or reverse)
 
通常它代表反邏輯的作用,譬如條件偵測中,用 != 來代表"不等于"
if [ "$?" != 0 ]thenecho "Executes error"exit 1fi
在規則表達式中她擔任 "反邏輯" 的角色
ls a[!0-9]
上例,代表顯示除了a0, a1 .... a9 這幾個文件的其他文件。
 
=====================================================================================
 
: 冒號
 
bash 中,這是一個內建指令:"什么事都不干",但返回狀態值 0。
:
echo $? # 回應為 0
: > f.[Math Processing Error]。不僅寫法簡短了,而且執行效率也好上許多。
有時,也會出現以下這類的用法
: ${HOSTNAME?} ${USER?} ${MAIL?}
這行的作用是,檢查這些環境變數是否已設置,沒有設置的將會以標準錯誤顯示錯誤訊息。像這種檢查如果使用類似 test if這類的做法,基本上也可以處理,但都比不上上例的簡潔與效率。
除了上述之外,還有一個地方必須使用冒號
 
在使用者自己的HOME 目錄下的 .bash_profile或任何功能相似的檔案中,設定關于"路徑"的場合中,我們都使用冒號,來做區隔。
 
====================================================================================
 
? 問號 (wild card)
 
在文件名擴展(Filename expansion)上扮演的角色是匹配一個任意的字元,但不包含 null字元。
# ls a?a1
善用她的特點,可以做比較精確的檔名匹配。
 
* 星號 (wild card)
相當常用的符號。在文件名擴展(Filename expansion)上,她用來代表任何字元,包含null 字元。
# ls a*a a1 access_log
在運算時,它則代表 "乘法"
let "fmult=2*3"
除了內建指令 let,還有一個關于運算的指令expr,星號在這里也擔任"乘法"的角色。不過在使用上得小心,他的前面必須加上escape 字元。
======================================================================================
 
** 次方運算
兩個星號在運算時代表 "次方" 的意思。
let "sus=2**3" echo "sus = $sus" # sus = 8
=====================================================================================
 
$ 錢號(dollar sign)
變量替換(Variable Substitution)的代表符號。
vrs=123 echo "vrs = $vrs" # vrs = 123
另外,在 Regular Expressions 里被定義為 "行" 的最末端 (end-of-line)。這個常用在grepsedawk 以及 vim(vi) 當中。
=====================================================================================
 
${} 變量的正規表達式
bash 對 ${} 定義了不少用法。以下是取自線上說明的表列
 
$*
$* 引用script的執行引用變量,引用參數的算法與一般指令相同,指令本身為0,其后為1,然后依此類推。引用變量的代表方式如下:
$0, $1, $2, $3, $4, $5, $6, $7, $8, $9, ${10}, ${11}.....
個位數的,可直接使用數字,但兩位數以上,則必須使用 {} 符號來括住。
$* 則是代表所有引用變量的符號。使用時,得視情況加上雙引號。
echo "$*"
還有一個與 $* 具有相同作用的符號,但效用與處理方式略為不同的符號。
 
$@
$@ 與 $* 具有相同作用的符號,不過她們兩者有一個不同點。
符號 $* 將所有的引用變量視為一個整體。但符號 $@ 則仍舊保留每個引用變量的區段觀念。
 
$#
這也是與引用變量相關的符號,她的作用是告訴你,引用變量的總數量是多少。
echo "$#"
 
$? 狀態值 (status variable)
一般來說,UNIX(linux) 系統的進程以執行系統調用exit()來結束的。這個回傳值就是status值。回傳給父進程,用來檢查子進程的執行狀態。
一般指令程序倘若執行成功,其回傳值為 0;失敗為 1。
tar cvfz dfbackup.tar.gz /home/user > /dev/nullecho"$?"$$
由于進程的ID是唯一的,所以在同一個時間,不可能有重復性的 PID。有時,script會需要產生臨時文件,用來存放必要的資料。而此script亦有可能在同一時間被使用者們使用。在這種情況下,固定文件名在寫法上就顯的不可靠。唯有產生動態文件名,才能符合需要。符號$$或許可以符合這種需求。它代表當前shell 的 PID。
echo "$HOSTNAME, $USER, $MAIL" > ftmp.$$
使用它來作為文件名的一部份,可以避免在同一時間,產生相同文件名的覆蓋現象。
ps: 基本上,系統會回收執行完畢的 PID,然后再次依需要分配使用。所以 script 即使臨時文件是使用動態檔名的寫法,如果script 執行完畢后仍不加以清除,會產生其他問題。
 
====================================================================================
 
( ) 指令群組 (command group)
用括號將一串連續指令括起來,這種用法對 shell 來說,稱為指令群組。如下面的例子:(cd ~ ; vcgh=`pwd` ;echo $vcgh),指令群組有一個特性,shell會以產生subshell來執行這組指令。因此,在其中所定義的變數,僅作用于指令群組本身。我們來看個例子
# cat ftmp-01#!/bin/basha=fsh(a=incg ; echo -e "\n $a \n")echo $a#./ftmp-01incgfsh
除了上述的指令群組,括號也用在 array 變數的定義上;另外也應用在其他可能需要加上escape字元才能使用的場合,如運算式。
 
(( ))
這組符號的作用與 let 指令相似,用在算數運算上,是 bash 的內建功能。所以,在執行效率上會比使用 let指令要好許多。
#!/bin/bash(( a = 10 ))echo -e "inital value, a = $a\n"(( a++))echo "after a++, a = $a"
 
{ } 大括號 (Block of code)
有時候 script 當中會出現,大括號中會夾著一段或幾段以"分號"做結尾的指令或變數設定。
# cat ftmp-02#!/bin/basha=fsh{a=inbc ; echo -e "\n $a \n"}echo $a#./ftmp-02inbcinbc
這種用法與上面介紹的指令群組非常相似,但有個不同點,它在當前的 shell 執行,不會產生 subshell。
大括號也被運用在 "函數" 的功能上。廣義地說,單純只使用大括號時,作用就像是個沒有指定名稱的函數一般。因此,這樣寫 script也是相當好的一件事。尤其對輸出輸入的重導向上,這個做法可精簡 script 的復雜度。
此外,大括號還有另一種用法,如下
{xx,yy,zz,...}
這種大括號的組合,常用在字串的組合上,來看個例子
mkdir {userA,userB,userC}-{home,bin,data}
我們得到 userA-home, userA-bin, userA-data, userB-home, userB-bin,userB-data, userC-home, userC-bin,userC-data,這幾個目錄。這組符號在適用性上相當廣泛。能加以善用的話,回報是精簡與效率。像下面的例子
chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
如果不是因為支援這種用法,我們得寫幾行重復幾次呀!
 
[ ] 中括號
常出現在流程控制中,扮演括住判斷式的作用。if [ "$?" != 0 ]thenecho "Executes error"exit1fi
這個符號在正則表達式中擔任類似 "范圍" "集合" 的角色
rm -r 200[1234]
上例,代表刪除 2001, 2002, 2003, 2004 等目錄的意思。
 
[[  ]]
這組符號與先前的 [] 符號,基本上作用相同,但她允許在其中直接使用 || 與&& 邏輯等符號。
#!/bin/bashread akif [[ $ak > 5 || $ak< 9 ]]thenecho $akfi
 
==============================================================================
 
|| 邏輯符號
這個會時常看到,代表 or 邏輯的符號。
 
&& 邏輯符號
這個也會常看到,代表 and 邏輯的符號。
 
& 后臺工作
單一個& 符號,且放在完整指令列的最后端,即表示將該指令列放入后臺中工作。
tar cvfz data.tar.gz data > /dev/null&
 
\<...\> 單字邊界
這組符號在規則表達式中,被定義為"邊界"的意思。譬如,當我們想找尋 the 這個單字時,如果我們用
grep the FileA
你將會發現,像 there 這類的單字,也會被當成是匹配的單字。因為 the 正巧是 there的一部份。如果我們要必免這種情況,就得加上 "邊界" 的符號
grep '\' FileA
 
+ 加號 (plus)
在運算式中,她用來表示 "加法"
expr 1 + 2 + 3
此外在規則表達式中,用來表示"很多個"的前面字元的意思。
# grep '10\+9' fileB109100910000910000931010009#這個符號在使用時,前面必須加上escape 字元。
 
- 減號 (dash)
在運算式中,她用來表示 "減法"
expr 10 - 2
此外也是系統指令的選項符號。
ls -expr 10 - 2
在 GNU 指令中,如果單獨使用 - 符號,不加任何該加的文件名稱時,代表"標準輸入"的意思。這是 GNU指令的共通選項。譬如下例
tar xpvf -
這里的 - 符號,既代表從標準輸入讀取資料。
不過,在 cd 指令中則比較特別
cd -
這代表變更工作目錄到"上一次"工作目錄。
 
===================================================================================
% 除法 (Modulo)
在運算式中,用來表示 "除法"
expr 10 % 2
此外,也被運用在關于變量的規則表達式當中的下列
${parameter%word}${parameter%%word}
一個 % 表示最短的 word 匹配,兩個表示最長的 word 匹配。
 
===============================================================================
= 等號 (Equals)
常在設定變數時看到的符號。
vara=123echo " vara = $vara"
或者像是 PATH 的設定,甚至應用在運算或判斷式等此類用途上。
 
== 等號 (Equals)
常在條件判斷式中看到,代表 "等于" 的意思。
if [ $vara == $varb ]
...下略
 
!= 不等于
常在條件判斷式中看到,代表 "不等于" 的意思。
if [ $vara != $varb ]
...下略
 
^
這個符號在規則表達式中,代表行的 "開頭" 位置,在[]中也與"!"(嘆號)一樣表示“非”
 
============================================================================
輸出/輸入重導向
>  >> < << :> &> 2&> 2<>>& >&2
 
文件描述符(File Descriptor),用一個數字(通常為0-9)來表示一個文件。
常用的文件描述符如下:
文件描述符   名稱   常用縮寫  默認值
  0    標準輸入  stdin   鍵盤
  1    標準輸出  stdout   屏幕
  2   標準錯誤輸出 stderr   屏幕
我們在簡單地用<或>時,相當于使用 0< 或 1>(下面會詳細介紹)。
* cmd > file
把cmd命令的輸出重定向到文件file中。如果file已經存在,則清空原有文件,使用bash的noclobber選項可以防止復蓋原有文件。
* cmd >> file
把cmd命令的輸出重定向到文件file中,如果file已經存在,則把信息加在原有文件後面。
* cmd < file
使cmd命令從file讀入
* cmd << text
從命令行讀取輸入,直到一個與text相同的行結束。除非使用引號把輸入括起來,此模式將對輸入內容進行shell變量替換。如果使用<<- ,則會忽略接下來輸入行首的tab,結束行也可以是一堆tab再加上一個與text相同的內容,可以參考後面的例子。
* cmd <<< word
把word(而不是文件word)和後面的換行作為輸入提供給cmd。
* cmd <> file
以讀寫模式把文件file重定向到輸入,文件file不會被破壞。僅當應用程序利用了這一特性時,它才是有意義的。
* cmd >| file
功能同>,但即便在設置了noclobber時也會復蓋file文件,注意用的是|而非一些書中說的!,目前僅在csh中仍沿用>!實現這一功能。
: > filename  把文件"filename"截斷為0長度.# 如果文件不存在, 那么就創建一個0長度的文件(與'touch'的效果相同).
cmd >&n把輸出送到文件描述符n
cmd m>&n 把輸出 到文件符m的信息重定向到文件描述符n
cmd >&-關閉標準輸出
cmd <&n 輸入來自文件描述符n
cmd m<&n m來自文件描述各個n
cmd <&-關閉標準輸入
cmd <&n-移動輸入文件描述符n而非復制它。(需要解釋)
cmd >&n-移動輸出文件描述符 n而非復制它。(需要解釋)
注意: >&實際上復制了文件描述符,這使得cmd > file 2>&1與cmd 2>&1 >file的效果不一樣。

總結

以上所述是小編給大家介紹的linux特殊字符及其作用大全,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://www.cnblogs.com/pingsheng/p/8696814.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本性爱 | 99久久精品免费看国产 | 女子监狱第二季在线观看免费完整版 | 国产一级网站 | 日本三级免费看 | 免费看欧美一级特黄a大片一 | 国产在视频线精品视频 | 成人影院在线观看视频 | 欧美 亚洲 一区 | 91精品国产91久久久久久麻豆 | 四虎影院在线免费 | 色哟哟精品 | 欧美亚洲一区二区三区在线 | 欧美一级特黄特色大片免费 | 天天天综合网 | 特级www| 亚洲一区二区三区在线播放 | 水多多www视频在线观看高清 | 久久中文字幕亚洲精品最新 | 日本人护士免费xxxx视频 | 亚洲电影成人 成人影院 | 亚洲男人精品 | 艹b小说 | 欧美成人aaaa免费高清 | 国产午夜免费视频 | 免费叼嘿视频 | 亚洲国产无线码在线观看 | 欧美日韩精品一区二区三区视频在线 | 国产麻豆麻豆 | 欧乱色国产精品兔费视频 | 色香婷婷 | 国产成人看片免费视频观看 | 91亚洲精品国产自在现线 | 精品国产精品国产偷麻豆 | 成人福利网站 | 调教女秘书 | 色老板最新网站视频地址 | 国产一成人精品福利网站 | 第一福利在线视频 | 夫妇交换小说全文阅读 | 日韩高清在线免费看 |