Linux shell之列印輸出

pursuer.chen發表於2016-04-06

介紹

經常需要和shell命令打交道,但是一直沒有系統的學習,接下來會花1到2個月的時間系統的學習一下shell命令,接下來就開啟shell命令的奇妙旅行吧。本章主要介紹shell的列印輸出。

 

 

知識要點

  • shell指令碼都是以#!/bin/bash開頭;這是固定的寫法,其中/bin/bash是bash命令的路徑。
  • 一般都會通過chmod授予shell指令碼的可執行許可權。
  • 在shell指令碼中的列印輸出通常會有echo和printf兩種,前者會自動換行。
  • 在shell中如果用雙引號("")作為列印輸出的內容時,如果雙引號中有特殊字元需要在特殊字元前加上轉義字元\,當然也可以使用單引號或者不使用引號直接輸出,使用單引號或者不使用就不需要用到轉義字元。

 

格式替代符

有一些常用的格式替代符會經常在列印輸出中被用到,格式替代符只能用在printf輸出中

%-5s:表示5個字元寬度,其中的-表示左對齊

%-4.2f:其中的f表示浮點型,4.2代表長度為4個字元且小數點2位,如果小數點超過2會進行四捨五入,-表示左對齊。

整形:

%d:整數的引數會被轉成一有符號的十進位制數字

%u:整數的引數會被轉成一無符號的十進位制數字

%o:整數的引數會被轉成一無符號的八進位制數字

%x:整數的引數會被轉成一無符號的十六進位制數字, 並以小寫abcdef表示

%X:整數的引數會被轉成一無符號的十六進位制數字, 並以大寫ABCDEF表示


浮點型數

%f double型的引數會被轉成十進位制數字, 預設取小數點以下六位, 四捨五入

%e double型的引數以指數形式列印, 有一個數字會在小數點前, 六位數字在小數點後, 而在指數部分會以小寫的e來表示.

%E 與%e作用相同, 唯一區別是指數部分將以大寫的E來表示.

%g double型的引數會自動選擇以%f或%e的格式來列印, 其標準是根據欲列印的數值及所設定的有效位數來決定.

%G 與%g作用相同, 唯一區別在以指數形態列印時會選擇%E格式.


字元及字串:

%c 讀字串的第一個字元 

%s 輸出指定寬度的字元內容.

%p 如果是引數是"void *"型指標則使用十六進位制格式顯示

 

列印輸出

在寫指令碼的時候更多的會使用echo作為列印輸出,且習慣性的會使用雙引號。

echo

[root@localhost tmp]# echo "hello word"
hello word

printf

預設printf是不換行的

[root@localhost tmp]# printf "hello word"
hello word[root@localhost tmp]# 

需要換行加上\n引數

[root@localhost tmp]# printf "hello word\n"
hello word
[root@localhost tmp]# 

編寫shell指令碼

 vim scrip.sh

#!/bin/bash
printf "%-5s %-10s %-4s\n" No Name Mark;
printf "%-5s %-10s %-4.2f\n" 1 aaa 10.111;
printf "%-5s %-10s %-4.2f\n" 2 bbb 20.146;

授予指令碼執行許可權:chmod u+x scrip.sh

 

如果使用echo就不能用格式替代符

#!/bin/bash
echo No Name Mark;
echo 1 aaa 10.111;
echo 2 bbb 20.146;

 

注意事項

在echo,printf中使用-e,-n引數時,-e,-n應該出現在命令列其它字元之前。

-e:如果要在echo的雙引號使用轉義序列作為引數得需要使用-e引數

-n:忽略末尾的換行符

不使用-e引數
[root@localhost tmp]# echo "1\n2"
1\n2
使用-e引數
[root@localhost tmp]# echo -e "1\n2"
1
2

轉義序列:

/n:換行

/t:tab鍵

 

彩色輸出

字型顏色包括:0=重置,30=黑色,31=紅色,32=綠色,33=黃色,34=藍色,35=洋紅,36=青色,37=白色

背景顏色包括:0=重置,40=黑色,41=紅色,42=綠色,43=黃色,44=藍色,45=洋紅,46=青色,47=白色

echo -e "\e[1;32m hello word \e[0m"

\e[1;32m:將字型顏色設為綠色,\e[0m:將顏色重置

總結

如果輸出的內容涉及到特殊字元建議使用printf來輸出。

 

 

備註:

    作者:pursuer.chen

    部落格:http://www.cnblogs.com/chenmh

本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明連結。

《歡迎交流討論》

相關文章