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

알고 계시 겠지만^H는 콘솔에서 문자를 삭제합니다. 그러나 첫 번째 메아리가 효과가없고 두 번째 메아리가 "hel o"를 얻는 이유는 무엇입니까?^H in bash 변수

+0

커서 위치 (10.8.4) 올바른 출력을 생성합니다. –

답변

3

백 스페이스는 화면에 표시된 내용을 실제로 지우지 않고 커서를 오른쪽으로 한 칸 이동합니다. 두 번째 명령 만 실제로 번째 문자를 문자열에서 후행 공백으로 덮어 쓰면 지워집니다.

나는 그것을 시각화하려고합니다 :

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

예 정답입니다. &를 추가하기 위해 일부 터미널 에뮬레이터는 단일 '\ b'를'\ b \ b' (여기서'\ b' 또는'^ H'는 백 스페이스 문자)로 대체합니다. 그래서 백스 페이스 문자가 실제로 지워진 문자를 보여줍니다. – anishsane

+0

@anishsane 어떤 단말이 이것을합니까? –

+0

Windows 하이퍼 터미널에서 본 적이 있는데, 일반적으로 직렬 포트 통신 또는 직렬 오버 TCP에 사용됩니다. 그것이 모든 리눅스 터미널에서 가능하다면 확실하지 않습니다. 어쩌면, 나는 단 하나만 알고 있기 때문에 "일부 터미널 에뮬레이터"를 말하는 것이 잘못되었습니다. – anishsane

0

$는 "안녕하세요^H^H"에코 안녕하세요 ^ -- cursor position $ echo "hello^H^H " hel o ^ - 내 맥 OS X에 그것을 시도