常用linux打印命令
日常使用中或shell腳本中linux終端打印命令有echo和printf。
echo命令
功能說明:顯示文字。
語 法:echo [-ne][字符串]或 echo [--help][--version]
補充說明:echo會將輸入的字符串送往標准輸出。輸出的字符串間以空白字符隔開, 並在最后加上換行號。
參 數:-n 不要在最后自動換行
-e 若字符串中出現以下字符,則特別加以處理,而不會將它當成一般
文字輸出:
\a 發出警告聲;
\b 刪除前一個字符;
\c 最后不加上換行符號;
\f 換行但光標仍舊停留在原來的位置;
\n 換行且光標移至行首;
\r 光標移至行首,但不換行;
\t 插入tab;
\v 與\f相同;
\\ 插入\字符;
\nnn 插入nnn(八進制)所代表的ASCII字符;
–help 顯示幫助
–version 顯示版本信息
echo命令的功能是在顯示器上顯示一段文字,一般起到一個提示的作用。
該命令的一般格式為: echo [ -n ] 字符串
其中選項n表示輸出文字后不換行;字符串能加引號,也能不加引號。用echo命令輸出加引號的字符串時,將字符串原樣輸出;用echo命令輸出不加引號的字符串時,將字符串中的各個單詞作為字符串輸出,各字符串之間用一個空格分割。
echo要變換顏色的時候,要使用參數-e
格式: echo -e "\033[字背景顏色;字體顏色m字符串\033[0m"
例如:
echo -e "\033[41;36m something here \033[0m"
其中41的位置代表底色, 36的位置是代表字的顏色
那些ascii code 是對顏色調用的始末.
\033[ ; m …… \033[0m
讓字體變為紅色並且不停的閃爍
#echo -e "\033[31m \33[05m 請確認是否要停止當前的squid進程,輸入 [Y/N] \033[0m"
或者
#echo -e "\033[31m \033[05m 請確認是否要停止當前的squid進程,輸入 [Y/N] \033[0m"
字背景顏色范圍:40----49
40:黑
41:深紅
42:綠
43:黃色
44:藍色
45:紫色
46:深綠
47:白色
字顏色:30-----------39
30:黑
31:紅
32:綠
33:黃
34:藍色
35:紫色
36:深綠
37:白色
===============================================ANSI控制碼的說明
\33[0m 關閉所有屬性
\33[1m 設置高亮度
\33[4m 下划線
\33[5m 閃爍
\33[7m 反顯
\33[8m 消隱
\33[30m -- \33[37m 設置前景色
\33[40m -- \33[47m 設置背景色
\33[nA 光標上移n行
\33[nB 光標下移n行
\33[nC 光標右移n行
\33[nD 光標左移n行
\33[y;xH設置光標位置
\33[2J 清屏
\33[K 清除從光標到行尾的內容
\33[s 保存光標位置
\33[u 恢復光標位置
\33[?25l 隱藏光標
\33[?25h 顯示光標
或參考這篇博客,也寫的不錯:
Linux的shell中echo改變輸出顯示樣式 - 生活費 - 博客園
http://www.cnblogs.com/276815076/archive/2011/05/11/2043367.html
printf命令
Linux提供一個功能更強大,更靈活的打印命令printf。printf和C語言的使用方式類似。和echo不一樣,它不會在最后自動加上換行,需要寫入命令中。例如printf "Hello, world/n"。printf的命令格式如下:
printf format-string [arguments]
例子為:printf "%s, %s/n" hello world。如果格式需要的參數比后面給出的多,超出的部分為0或者null。格式如下。
%c:ASCII字符,如果參數給出字符串,則打印第一個字符
%d:10進制整數
%i:同%d
%e:浮點格式([-]d.精度[+-]dd)
%E:浮點格式([-]d.精度E[+-]dd)
%f:浮點格式([-]ddd.precision)
%g:%e或者%f的轉換,如果后尾為0,則刪除它們
%G:%E或者%f的轉換,如果后尾為0,則刪除它們
%o:8進制
%s:字符串
%u:非零正整數
%x:十六進制
%X:非零正數,16進制,使用A-F表示10-15
%%:表示字符"%"
如果需要限定輸出的寬度,格式為%flags width.precision format-specifier,width是整數,右邊對齊,如果需要左邊對齊,在前面加“-”,例如"%-20s"表示從左邊開始對齊,寬度為20,如果字符串長度少於20,通過空格補齊。precision在浮點值中提供四舍五入。例如%5.6G,長度為5,精度為6。精度是可選的。長度和精度的值可以參數中指定,例如printf "%*.*G/n" 5 6 $myvalue。長度指顯示中占的字符長度,與字符長度的同義。如果長度比實際的少,例如實際字符長度更大或者所要求的精度更大,則顯示按實際長度。
%d, %I, %o, %u, %x, %X:在里面使用精度,表示最小顯示的數字。如果顯示的數字比需求少,則補充0。缺省值為1.
%e, %E:在里面使用精度,表示最小顯示的數字。如果顯示的數字比需求少,在小數點后面補充0。缺省值為10.精度度為0經隱藏小數點。
%f:在這里的精度,表示小數點后面的數字的數目。
%g, %G:這里的精度,表示最大的有效數字的數目。
%s:這里的精度,表示最大的字符數目。
在前面,介紹了”-“作為左對齊,下面介紹這些特殊符號
-:左對齊
space:正數前面加空格,負數前面加符號,例如12.12,|% f|,顯示| 12.120000|,注意前面留了一個空格。例如-12.12,|% f|,顯示|-12.120000|
+:對於數碼給予正負號。
#:給出另一種格式:0:對於數目,不使用空格,而使用0來作為補齊。
- %o以8進制顯示整數,而%#o則在前面加上零,表明是八進制,例如12,顯示014
- %x或者%X以16進制的方式顯示整數,而%#x或者%#X,在16進制的整數前面加上0x或者0X來表示,例如12,顯示0XC
- %#e,%#E, %#f,將只以十進制顯示
- %#g,%#G,將不刪除最后無關的補齊0,例如12.1200,將全部顯示,而不是12.12。
介紹兩個特別的字符顯示格式%b和%q。
%b:表示解析字符串的特殊的字符,包括/n等等。例如printf "%s/n" 'hello/nworld',顯示hello/nworld,要將/n作為換行符,則需要用printf "%b/n" 'hello/nworld' 。
%q:printf "%q/n" "greetings to the world"顯示為greetings/ to/ the/ world,可以作為shell的輸入。
寫在后面的小筆記:
有時候想在shell代碼中寫個提示,即打印一個命令的執行結果,例如打印“系統中oracle的進程個數是:135個”這句話:
[aaa@cc_svr ~]$ echo “系統中oracle的進程個數是:$(ps -ef|wc -l)個” “系統中oracle的進程個數是:135個”
[aaa@cc_svr ~]$ echo "系統中oracle的進程個數是:`ps -ef|wc -l` 個" 系統中oracle的進程個數是:135 個
[aaa@cc_svr ~]$ echo -n "系統中oracle的進程個數是:";echo -n `ps -ef|wc -l`;echo "個"; 系統中oracle的進程個數是:135個 [aaa@cc_svr ~]$
在echo中的命令替換部分加上雙“`”(~鍵)號,即可執行語句里面的命令部分。
借助echo -n不換行,將換行的輸入連成一句話,也可以使用printf變量輸出。