![echo -e 동작](https://linux55.com/image/175122/echo%20-e%20%EB%8F%99%EC%9E%91.png)
echo와 함께 사용되는 -e 스위치를 사용하면 다음과 같이 이스케이프 시퀀스를 이해할 수 있습니다.
[root@localhost~]# echo -e 'hello\b\bhi'
helhi
[root@localhost~]#
그러나 다음 코드 조각에서는 이스케이프 시퀀스가 생략된 것으로 보입니다.
[root@localhost~]# echo -e 'hello\b\b'
hello
[root@localhost~]#
위 코드 조각의 동작을 이해하는 데 도움을 줄 수 있는 사람이 있습니까?
위의 동일한 코드 조각이 "-n" 스위치와 함께 실행되면 작동합니다! (물론 -n 동작을 사용하면 개행 문자가 제거됩니다)
[root@localhost~]# echo -n -e 'hello\b\b'
hel[root@localhost~]#
인사
답변1
백스페이스 문자( echo -e '\b'
)는 커서를 왼쪽으로 이동하지만 표시된 내용을 변경하지는 않습니다. 따라서 echo -e 'hello\b\b'
표시 하려면 hello
단어 끝에 커서를 놓은 다음 커서를 왼쪽으로 두 위치 이동한 다음 ( echo
개행을 추가하지 않기 때문에 -n
) 커서를 다음 줄의 시작 부분으로 이동합니다. 이것은 시각적으로 구별할 수 없습니다 echo hello
.
실제 작동 모습 보기:
for c in h e l l o '\b' '\b' '\n'; do
echo -e "$c"; sleep 1
done
PS 루트와 같은 실험을 수행하지 마십시오. 루트로 자신의 발에 총을 쏘는 것은 일반 계정을 사용하는 것보다 더 많은 피해를 입힐 수 있습니다.