1
我想知道什麼一些轉義序列不包括下列內容: b, f, n, r做什麼?有什麼區別?
\b backspace
\f form feed
\n new line
\r carriage return
\t tab
而且,是什麼形式的飼料,新的生產線,並回車之間的區別? \ t和空格有什麼區別?它們看起來都一樣...
我想知道什麼一些轉義序列不包括下列內容: b, f, n, r做什麼?有什麼區別?
\b backspace
\f form feed
\n new line
\r carriage return
\t tab
而且,是什麼形式的飼料,新的生產線,並回車之間的區別? \ t和空格有什麼區別?它們看起來都一樣...
您可以使用printf
來測試這些轉義序列,例如在C程序中或使用Unix/Linux shell(如Bash),如下所示。
printf
使用的字符串格式)更可靠,因爲使用選項卡仍可能導致列交錯。查看此答案底部的示例。$
表示shell提示符,不應輸入。它是爲了區分你輸入的內容和輸出內容而包含的。我在每個字符串的末尾包含一個換行符\n
,所以輸出佔用了自己的行。
$ printf 'help\blo - backspace\n'
hello - backspace
$ printf 'two\nlines - newline\n'
two
lines - newline
$ printf 'clocks - carriage return\rsla\n'
slacks - carriage return
$ printf 'Fruit\tColor\tQuantity\ngrapes\tgreen\t100\nbananas\tyellow\t50\n- tabs\n'
Fruit Color Quantity
grapes green 100
bananas yellow 50
- tabs
欲瞭解更多信息,請參閱ASCII Control Characters。
試試這個看printf
格式如何能夠改進在標籤:
$ array=(A B C 'apple pie' 'banana split' 'cherry turnover' 100 200 300)
$ for ((i=0; i<12; i+=3)); do printf '%s\t%s\t%s\n' "${array[@]:i:3}"; done
A B C
apple pie banana split cherry turnover
100 200 300
$ for ((i=0; i<12; i+=3)); do printf '%-16s%-16s%s\n' "${array[@]:i:3}"; done
A B C
apple pie banana split cherry turnover
100 200 300
正如你所看到的,列不在第二版交錯和整體輸出相同的寬度。