tlcl-從shell眼中看世界echo

來源:互聯網
上載者:User

標籤:linux   shell   echo   

從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{1,2,3}   將會輸出hello1 hello2 hello3

echo hello {1,2,3}  將會輸出hello 1 2 3

echo hello{a,b,c}   將會輸出helloa hellob helloc

注意:{}中的元素要用,分隔,可以是字元,也可以是字串

最常見的應用是建立一系列的檔案或目錄

mkdir hello{1,2,3,4,5}

 

參數展開

echo $USER     列印出使用者名稱

查看變數列表

printenv |less

當展開的變數是不存在的時候,系統會將其展開成為一個Null 字元串

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

tlcl-從shell眼中看世界echo

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.