Enter 및 echo 명령

Enter 및 echo 명령

\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

관련 정보