從shell眼中看世界
echo-顯示一行文字
當輸入乙個命令,bash在執行命令之前,會對輸入的字元做展開處理。
路徑展開
echo *
shell將*展開為當前目錄下的檔名稱,會列印出當前目錄下的檔名稱,
echo d* 列印出當前目錄下所有以d開頭的檔案
echo *d 列印出當前目錄下所有以d結尾的檔案
~展開
echo ~ 列印出當前使用者的家目錄資訊
echo ~test 列印出test使用者的家目錄資訊
算術表示式展開
echo $((expression))
echo $(((2*3)+5))
echo $(((2**3)*5))
注意表示式的格式,算術表示式只支援整數和加減乘除、取餘、冪運算。
花括號展開
從乙個花括號的模式中建立多個文字字串
echo hello 將會輸出hello1 hello2 hello3
echo hello 將會輸出hello 1 2 3
echo hello 將會輸出helloa hellob helloc
注意:{}中的元素要用,分隔,可以是字元,也可以是字串
最常見的應用是建立一系列的檔案或目錄
mkdir hello
引數展開
echo $user 列印出使用者名稱
檢視變數列表
printenv |less
當展開的變數是不存在的時候,系統會將其展開成為乙個空字串
echo $hello
命令替換
將乙個命令的輸出作為展開式
echo $(ls)
ls -l $(which cp) 將whic cp的輸出資訊作為ls的引數
或是 ls -l `which cp` 舊版的shell支援,倒引號
引用
echo hello world
將會在螢幕上列印出hello world
echo the total is $100.00
將會在螢幕上列印出 the total is 00.00
在第乙個中,shell會刪除多餘的空格,在第二個中,$會對1進行變數展開,而1並不是變數,所以會將其展開成為空字串
shell提供了一種引用的機制,它會有效的控制字元的展開
雙引號
第一種引用型別來控制字元的展開
如果在文字兩端新增」」,那麼文字中除了$ \ `(倒引號)外,其他字元都將不會有特殊展開含義
在雙引號中,引數展開、表示式展開、命令展開仍然有效
echo 「$user $((2**3)) $(ls)」
echo 「hello world」 會列印出hello world
單詞分割機制
echo hello world
這時會輸出hello world
在預設情況下,單詞分割機制會在單詞中尋找空格、製表符、換行符,並把它們看作單詞之間的界定符,而每個單詞都是乙個引數,在上例中就有兩個引數,列印出每個引數用空格界定
同樣,如果你輸入 echo $(cal)
那麼此時列印出的是一行有空格界定的資料,而不含有換行符
如果輸入 echo 「hello world」
單詞分割被禁止,其實就是」」內部的內容作為乙個引數存在,而不加」」卻是兩個引數
看看 echo $(cal)與echo 「$(cal)」的區別
單引號第二種引用限制字元展開,單引號會限制所有字元的展開,所有的字元只有本身的含義,不存在特殊含義
轉義字元
用\來禁止特殊字元的展開,注意在單引號中\將失去作用
echo \」hello world\」
反斜槓轉義序列的使用
\a 發出警告聲;
\b 刪除前乙個字元;
\c 最後不加上換行符號;
\f 換行但游標仍舊停留在原來的位置;
\n 換行且游標移至行首;
\r 游標移至行首,但不換行;
\t 插入tab;
\v 與\f相同;
例如\a響鈴
echo -e 『\a』 -e選項來解釋轉義字元,雖然\在單引號中失去作用,但-e選項解釋了它
echo $』\a』
不能夠直接echo 「\a」
最後學習乙個-n選項
-n 不換行的輸出
echo 「hello」;echo 「world」 此時會兩行輸出hello world
echo -n 「hello」;echo 「world」 則會一行輸出helloworld
從 hell眼中看世界 TLCL
字元展開 echo 路徑名展開 echo d 隱藏檔案路徑名展開 ls d 波浪線展開 echo 算術表示式展開 expression 花括號展開 echo number 最常見的應用,建立一系列的檔案或目錄列表。引數展開 echo user printenv less 命令展開 把乙個命令的輸出作...
shell基礎篇(一)從hello world開始
前記 這裡是我做的shell筆記 接下來會提供一系列。shell是一種指令碼語言,那麼,就必須有直譯器來執行這些指令碼。unix linux上常見的shell指令碼直譯器有bash sh csh ksh等,習慣上把它們稱作一種shell。我們常說有多少種shell,其實說的是shell指令碼直譯器。...
shell從函式檔案裡呼叫函式
碰到乙個shell中函式呼叫的小問題,記錄一下。shell中函式有三種呼叫方式,一種是在檔案前面定義函式,然後在以下直接呼叫 一種是通重載入shell,在shell中直接呼叫 第三種是將函式寫入檔案。然後在其它shell中呼叫函式。這裡寫一下關於第三種方法的樣例 is it a directory ...