Linux Bash Shell學習(十八):String I/O——echo和printf

來源:互聯網
上載者:User

  本文也即《Learning the bash Shell》3rd Edition的第七章Input/Output and Command-Line Processing之讀書筆記之二。

echo

  echo是非常常用的shell命令。參數如下:

  • -e:開啟反斜線字元backslash-escaped的解析,即對/n,/t等字元進行解析,而不視之為兩個字元
  • -E:關閉反斜線字元的解析,/n作為兩個字元,這是系統預設模式
  • -n:刪除最後的換行

  backslash-escaped有下面參數,注意需要加上選擇-e方可生效。


/a

: 發出警告鈴音(ALERT or CTRL-G (bell))

/b

: 退格(BACKSPACE or CTRL-H )

/c

: 刪除最後的字元及最後的換行(Omit final NEWLINE )

/e

: 刪除後面的一個字元(Escape character (same as /E) )

/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)

//

: 表示‘/’Single backslash

  倒數第2-4,用數值來表示字元和裝置相關,通常用於複雜的IO操作,例如游標控制和特殊的圖形符號。

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|

+:對於數位給予加號或減號。

#:給出另一種格式:

  • %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。

0:對於數目,不使用空格,而使用0來作為補齊。

  介紹兩個特別的字元顯示格式%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的輸入。

相關連結: 我的Linux操作相關文章

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.