기억나는데, ^H
의미는 Backspace. CTRL+V을 눌러 생성합니다 CTRL+H.
따라서 ^H
마지막 문자는 이 위치를 Backspace누를 때와 동일한 효과를 가지므로 제거해야 합니다 Backspace.
대신 출력이 echo abc^H
여전히 존재 하는 이유는 무엇입니까 ?abc
ab
답변1
backspace커서를 뒤로 이동하면 됩니다.
backspace(또는 delete구성에 따라 임의의 문자) 다음과 같은 경우에만 마지막으로 인쇄된 문자를 제거합니다.
echo
예제처럼 명령어 출력이 아닌 키보드로 입력됩니다.- 최종 장치가 조리 모드에 있습니다(정상 상황).
예제에서 해당 문자를 제거하려면 c다음과 같이 다른 문자로 덮어써야 합니다.
echo "abc^H "
답변2
^V^H를 입력하면 백스페이스 명령을 실행하는 대신 백스페이스 코드를 문자열에 삽입할 수 있습니다. ^H는 파괴적인 백스페이스 키일 필요는 없습니다. 일부 소프트웨어에서는 이를 중복 인쇄하는 데 사용합니다.
나중에 생각하기: echo(1)의 작성자는 ^V와 제어 코드를 입력하면 제어 코드를 구문 분석하기 위해 다른 프로세스(echo(1)가 아님)가 필요하기 때문에 그렇게 하는 것이라고 추론했습니다. Ctrl-H를 사용하면 echo(1)는 0x08을 출력 문자열에 넣고 캐럿 및 H와 함께 표시합니다. 문자열이 INPUT에서 파괴적인 백스페이스로 0x08을 확인하는 항목으로 리디렉션되면 원하는 결과를 얻을 수 있습니다.
답변3
stty erase ^H
문제가 해결될 것입니다.