Linux shell之打印輸出
經常需要和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來輸出。
Linux shell之打印輸出