首頁>Club>
9
回覆列表
  • 1 # 冉冉v時光

    相對而言,printf命令比echo命令好。

    其一、printf命令模仿 C 語言裡的printf,所以其移植性好。

    其二、printf命令使用引用文字或空格分隔的引數,外面可以在printf中使用格式化字串。

    其三、printf命令還可以制定字串的寬度、左右對齊方式等。

    注意:預設printf命令不會像echo命令那樣自動新增換行符,所以需要手動新增“\n”

  • 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更加強大。

  • 中秋節和大豐收的關聯?
  • 始祖鳥小包的使用方法?