Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
^bash变量中的H_Bash_Shell - Fatal编程技术网

^bash变量中的H

^bash变量中的H,bash,shell,Bash,Shell,我知道^H在控制台中删除回一封信。但是为什么第一个回音没有效果,而第二个回音得到“hel o”。退格只是将光标向右移动了一个位置,而没有实际擦除屏幕上打印的内容。只有第二条指令通过在字符串中使用尾随空格覆盖第四个字符来实际擦除它 我将尝试将其形象化: $echo“你好^H^H” 你好 ^ `--光标位置 $echo“你好^H^H” hel o ^ `--光标位置 退格仅将光标向右移动一个位置,而不会实际擦除屏幕上打印的内容。只有第二条指令通过在字符串中使用尾随空格覆盖第四个字符来实际擦除它 我将

我知道^H在控制台中删除回一封信。但是为什么第一个回音没有效果,而第二个回音得到“hel o”。

退格只是将光标向右移动了一个位置,而没有实际擦除屏幕上打印的内容。只有第二条指令通过在字符串中使用尾随空格覆盖第四个字符来实际擦除它

我将尝试将其形象化:

$echo“你好^H^H”
你好
^
`--光标位置
$echo“你好^H^H”
hel o
^
`--光标位置

退格仅将光标向右移动一个位置,而不会实际擦除屏幕上打印的内容。只有第二条指令通过在字符串中使用尾随空格覆盖第四个字符来实际擦除它

我将尝试将其形象化:

$echo“你好^H^H”
你好
^
`--光标位置
$echo“你好^H^H”
hel o
^
`--光标位置
$echo“你好^H^H” 你好 ^
——光标位置
$echo“你好^H^H”
hel o
^
--光标位置

$echo“hello^H^H” 你好 ^
——光标位置
$echo“你好^H^H”
hel o
^

--光标位置

我在我的Mac OS X(10.8.4)上试过,它产生了正确的输出。我在我的Mac OS X(10.8.4)上试过,它产生了正确的输出。这是正确的答案要添加,一些终端模拟器将单个
\b
替换为
\b\b
(其中
\b
^H
是backspace字符)。因此,backspace字符实际上显示已擦除的字符…@anishsane哪个终端执行此操作?我在windows hyper terminal中见过它,通常用于串行端口通信或TCP上的串行通信。不确定,如果它在任何linux终端上都可用。也许,我说“一些终端模拟器”是错的,因为我只知道一个。是的,这是正确的答案另外,一些终端模拟器将单个
\b
替换为
\b\b
(其中
\b
^H
是退格字符)。因此退格字符实际上显示已擦除的字符…@anishsane哪些终端会这样做?我在windows hyper terminal中看到过它,通常用于串行端口通信或TCP上的串行通信。不确定,如果它在任何linux终端上都可用。也许,我说“一些终端模拟器”是错的,因为我只知道一个。
#!/bin/bash
echo "hello^H^H"   #hello
echo "hello^H^H "  #hel o