echo -e 동작

echo -e 동작

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 루트와 같은 실험을 수행하지 마십시오. 루트로 자신의 발에 총을 쏘는 것은 일반 계정을 사용하는 것보다 더 많은 피해를 입힐 수 있습니다.

관련 정보