-
1 # 冉冉v時光
-
2 # 只需五分鐘
echo
echo是非常常用的shell命令。引數如下:
-e:開啟反斜槓字元backslash-escaped的解析,即對/n,/t等字元進行解析,而不視之為兩個字元
-E:關閉反斜槓字元的解析,/n作為兩個字元,這是系統預設模式
/a : 發出警告鈴音(ALERT or CTRL-G (bell))
/b : 退格(BACKSPACE or CTRL-H )
/E : 同上(Escape character)
/f : 換頁符,在某些現實中會清屏,有些會換行(FORMFEED or CTRL-L )
/n : 換行(NEWLINE (not at end of command) or CTRL-J )
/r : 從行頭開始,和換行不一樣,仍在本行(RETURN (ENTER) or CTRL-M )
/t : tab鍵(TAB or CTRL-I )
/v : 豎直tab,和/f一樣,顯示不同機器有所不一樣,通常會引起換行VERTICAL TAB or CTRL-K
/n : 在cygwin中使用/65,無法正確顯示"A’但是下面兩種方法否可以顯示。ASCII character with octal (base-8) value n, where n is 1 to 3 digits
/0nnn : 用8進位制的值表示一個字元,例如/0101,即65,表示字元’A’(The eight-bit character whose value is the octal (base-8) value nnn where nnn is 1 to 3 digits )
/xHH : 用16進位制的值表示一個字元,例如/x41,即65,表示字元’A’The eight-bit character whose value is the hexadecimal (base-16) value HH (one or two digits)
printf
printf和C語言的使用方式類似。和echo不一樣,它不會在最後自動加上換行,需要寫入命令中。例如printf "Hello, world/n"。printf的命令格式如下:
printf format-string [arguments]
%c:ASCII字元,如果引數給出字串,則列印第一個字元
%d:10進位制整數
%i:同%d
%e:浮點格式([-]d.精度[+-]dd)
%E:浮點格式([-]d.精度E[+-]dd)
%f:浮點格式([-]ddd.precision)
%o:8進位制
%s:字串
%u:非零正整數
%x:十六進位制
%X:非零正數,16進位制,使用A-F表示10-15
%%:表示字元"%"
-
3 # 產品經理老胡
經理認為:
如果shell的環境是bash,那麼在一般的使用過程中,echo和printf的功能相差無幾。echo也可以透過-e引數來實現擴充套件格式的輸出。但是如果一定要分個高下的話,那麼printf肯定是要更勝一籌的。從前的bash版本中printf不是內建命令,呼叫時的開銷要比echo略大,但現在最近的Linux發行版中printf已經是內建的命令了,並且printf與C版本的printf幾乎是完全一樣的,所以printf在功能和效率上都要更加強大。
echo與printf的功能差異一是末尾換行符以及對跳脫字元的處理不一樣:echo命令的幫助頁中描述其功能的第一句話就是:將它後面的引數輸出到標準輸出流。
printf命令的幫助頁描述是:在 FORMAT 的控制下格式化並列印 ARGUMENTS 引數。
echo在列印自己的引數的時候,會進行自動的換行,而printf不會:
另外就是對跳脫字元的處理也不一樣:
如果printf需要輸出後換行,則必須在末尾加上換行符:
三是printf支援的格式化功能比echo更多:儘管echo可以透過-e引數實現對一些特殊字元的輸出,並且也可以輸出8\16進位制的ASCII字元以及其它控制字元,但printf全部都能夠支援,除此之外還可以實現左對齊右對齊等格式化輸出。這是它比echo強大的主要原因。
echo與printf的效能差異在早現版本的bash裡,printf不是內建實現的,所以效率比較低。當前版本的bash已經內建了printf,所以效率有了很大提升。經理我專門做了一下測試,分別呼叫echo和printf命令一百萬次,看看用時長短:
從測試的結果來看,時間上都差不多,printf還稍微快了一些。
總結echo和printf命令我們都比較常用,printf已經變成了內建實現,效率和功能都更加優秀。使用起來和C語言的版本基本相同,同時支援格式化輸出、控制字元輸出、多進位制輸出和字元顏色主題輸出。並且在一些特殊場景下的相容性更好,所以在輸出語句的角度來講,printf更加強大。
回覆列表
相對而言,printf命令比echo命令好。
其一、printf命令模仿 C 語言裡的printf,所以其移植性好。
其二、printf命令使用引用文字或空格分隔的引數,外面可以在printf中使用格式化字串。
其三、printf命令還可以制定字串的寬度、左右對齊方式等。
注意:預設printf命令不會像echo命令那樣自動新增換行符,所以需要手動新增“\n”