常忘記的特殊字元

2021-09-02 21:46:35 字數 1871 閱讀 7329

shell 中有很多特殊字元,比如表示轉義的「\」、表示命令替換的「`」等,其中有些用得少了就很容易忘記,包括某個字元或是某個功能等的用法。以下是本人自己的備忘錄,僅供參考。

1、「:」(冒號):等價於"no op",是乙個什麼也不幹的命令, 同shell 內建命令 true 的作用相同。可用來作命令佔位符。具體用法如下。

# 1)用在迴圈中

while : # 同:while true

dooperation

done

# 2)在 if/then 中的佔位符

if condition

then : # 什麼都不做,引出分支

else

take-some-action

fi# 3)在引數替換中

: $ $ $ # 如果有任何乙個環境變數沒被設定則列印錯誤資訊

# 4)同重定向操作符結合(這只適用於正規檔案,而不適用於管道、符號鏈結等特殊檔案)

: > data.***

# 清空檔案「data.***」,同 cat /dev/null >data.***,不過不會產生乙個新的程序,因

# 為「:」是乙個內建命令

2、「?」:除了常用的作為測試操作符、三元操作符,以及用在萬用字元和正規表示式中以外,還可以用來測試乙個變數是否被設定了,用法見上面「:」用於引數替換的情況。

3、「$*」和「$@」:表示引用所有位置引數。

4、「$$」:程序 id 變數。

5、「(xx; yy; ...)」:在乙個子 shell 中執行。由於是在子 shell 中,所以括號中的變數對於外界來說是不可用的。

a=123

(a=233; echo $a) # 233

echo $a # 123

6、「」:作笛卡爾擴充套件。其中不允許有空白,除非這個空白被引用或轉義。

cat >combfile # 把 f1、f2 和 f3 連線在一起,並重定向到 comfile 中

cp file. # 同:cp file.txt file.backup

echo \ : # f1 : a f1 : b f1 : c f2 : a f2 : b f2 : c

7、「」:當大括號裡面包含**塊時(注意**塊兩邊要有空格),它相當於建立了乙個匿名函式,只是在其中宣告的變數在大括號外部也是可見的。此外,它不會像上面的「(xx; yy; ...)」一樣會開啟乙個子 shell。

$ a=123

$ # 注意**塊兩邊要有空格

$ echo $a # 321

$ cat rpm-check.sh

#!/bin/bash

err_noargs=65

if [ -z "$1" ]; then

echo "usage: `basename $0` rpm-file"

exit $err_noargs

fi > "$1.test" # 將查詢結果儲存到乙個檔案

echo "results of rpm test in file $1.test"

exit 0

8、「[i]<>filename」:開啟 filename 用來讀寫,並可選地分配檔案描述符 i 給該檔案。如果該檔案不存在,則會被建立。

9、「\<」、「\>」:正規表示式中的單詞邊界,如:grep '\' textfile。

個人常用 常忘記 的GIT命令

之前右鍵的時候,選單上沒有 git bash相關命令,解除安裝重灌,git bash here的選項,勾選 git branch 檢視本地所有分支,並且會標註目前是在哪個分支 git checkout b 本地分支名 origin 遠端分支名 拉取遠端分支並建立本地分支,切換到新分支 git bra...

shell的特殊字元

點 命令 點 命令是乙個shell內部命令,它可以使使用者在當前的shell中執行程式,而不建立子程序。注釋 shell指令碼的注釋符號 重定向符 用法 command filename,可以將command的輸出儲存在filename檔案中。同 類似,但表示追加。用法 command filena...

特殊字元的分隔

特殊字元的分隔 system.out.println 方法一 string aa sss ccc string vv aa.split system.out.println 以 分隔的陣列長度 vv.length system.out.println 方法二 string bb aaaa cccc ...