2013-08-04 198 views
0
#!/bin/bash 
echo "hello^H^H" #hello 
echo "hello^H^H " #hel o 

我知道^ H在控制檯中刪除一個字母。但爲什麼第一個回聲沒有效果,第二個回聲是「hel o」。^H在bash變量

+0

我試圖在我的Mac OS X( 10.8.4)併產生正確的輸出 –

回答

3

退格只是將光標向右移動一個位置而不實際擦除屏幕上打印的內容。只有你的第二條指令通過用字符串中的尾部空格覆蓋它而實際上消除了字符。

我會嘗試對其進行可視化:

$ echo "hello^H^H" 
hello 
^
    `-- cursor position 
$ echo "hello^H^H " 
hel o 
    ^
    `-- cursor position 
+0

是的,這是正確的答案。 &添加,一些終端模擬器用'\ b \ b'(其中'\ b'或'^ H'是退格字符)替換單個'\ b',以便退格字符實際顯示刪除的字符... – anishsane

+0

@anishsane哪個終端做到這一點? –

+0

我曾在Windows超級終端中看到過它,通常用於串行端口通信或串行TCP上。不確定,如果它在任何Linux終端上都可用。也許,我說「某些終端仿真器」是錯的,因爲我只知道一個。 – anishsane

0

$回聲 「你好^ H^H」 你好 ^ -- cursor position $ echo "hello^H^H " hel o ^ - 光標位置