\r
아래와 같이 옵션(캐리지 리턴)을 사용하여 echo 명령을 연습하고 있습니다 .
echo -e "This is \r my college"
산출:
my college
\r
그런데 아래와 같이 앞에 단어를 추가하면
echo -e "This is the \r my college"
그러면 다음과 같은 결과가 나옵니다.
my college the
다른 예시
echo -e "This is \r valid data"
valid data
echo -e "This is not a \r valid data"
valid data a
그렇다면 여기서 캐리지 리턴의 실제 목적이 무엇인지 궁금합니다.
답변1
그것은 \r
단지 "캐리지 리턴" 문자일 뿐이며 다른 것은 없습니다. 이는 다음 내용이 \r
인쇄된 내용의 시작 부분을 덮어쓰게 됨을 의미합니다.
예를 들어:
echo -e "1234\r56"
다음이 표시됩니다.
5634
echo
이 인쇄된 1234
다음 줄의 시작 부분으로 돌아가서 56
맨 위에 인쇄됩니다 12
.
새로운 줄을 찾으려면 \n
대신 시도해 보세요. 공백도 필요하지 않습니다. 예를 들어:
echo -e "This is\nmy college"
그러면 다음이 출력됩니다.
This is
my college
캐리지 리턴 문자는 다음과 같은 경우에 유용합니다.
#!/bin/sh
i=0
while [ $i -lt 3 ]
do
echo -ne "\r"`date` #you should remove new line too
sleep 1
i=$(($i + 1))
done
exit
date
각 루프 후에 새 행을 생성하는 대신 자체 상단에 나타납니다 .
답변2
Tigger는 그것이 무엇을 하는지에 관해 훌륭한 대답을 가지고 있습니다 \r
. Bourne 쉘의 또 다른 트릭(다른 쉘에서는 다르게 작동함)은 다음과 같이 줄 끝을 지우는 것입니다.
#/bin/sh -e
echo "this is a first line...\r\c"
...other code...
echo "another line\033[K\r\c"
그것 없이는 \033[K
(줄 끝을 죽이는 것) 당신은 얻을 것입니다:
another lineirst line...
\033[K
커서 위치부터 줄 끝까지의 출력이 지워지므로 위의 결과는 다음과 같습니다 .
another line
이는 시간이 오래 걸리고 사용자에게 자신이 어디에 있는지 알려주기를 원하는 스크립트에 유용합니다(예: 스크립트가 작업 중인 한 경로와 다음 경로는 더 짧음).
노트:참고로 이것이 \n
커서를 다음 줄로 보내는 것임을 지정하고 싶습니다. 이전 MS-DOS 콘솔에서는 같은 열 아래에 한 줄만 있었습니다. 그렇기 때문에 MS-Windows에서는 여전히 두 문자( )를 써야 합니다 \r\n
. 대부분의 경우 사람들은 글을 쓰고 \n
모든 것이 예상대로 작동합니다. 각 항목 앞에 하나를 삽입하는 FILE
"텍스트 모드"가 있기 때문입니다 (그리고 종종 바이너리를 깨뜨리기도 합니다...).\r
\n