.cshrc 명령 출력에 줄바꿈 추가

.cshrc 명령 출력에 줄바꿈 추가

사용자가 FreeBSD 10에 로그인할 수 있도록 "동적" motd를 설정하려고 합니다. .cshrc를 사용하고 일부 정보를 출력하는 명령이 있도록 설정했습니다. 그러나 그 중 하나는 개행을 추가하는 대신 한 줄로 인쇄됩니다.

echo 'Uptime: '`uptime`
echo ''`who -H | awk '{print $0,"\n"}'`

산출WHO따로 가지 말고 한 줄로 오세요. 개행 문자를 추가하도록 어떻게 완료할 수 있나요?\N각 줄의 끝에? 나는 약간의 변화를 시도했다sed마찬가지지만 결과는 같습니다.

테스트를 위해 tcsh를 사용하고 있습니다.

답변1

귀하의 접근 방식에는 두 가지 문제가 있습니다.

첫 번째는 명령 대체의 출력을 인용하지 않는다는 것입니다. 이렇게 하면 쉘은 공백을 기반으로 출력을 토큰화하고 각 단어를 별도의 인수로 에 전달한 다음 모든 인수를 한 줄에 인쇄합니다 echo. 이 문제에 대한 해결책은 명령 대체를 인용하는 것입니다. 예를 들어:echo

echo "$(who -H | awk '{ print $0,"\n"}')"

두 번째 문제는 echo전혀 필요하지 않다는 것입니다. awk명령의 출력을 문자열로 캡처한 다음 아무 작업도 수행하지 않고 다시 에코합니다. 그래서 이것은 echo아무런 의미가 없습니다.

미니 스크립트를 다음으로 변환하세요.

echo "Uptime: $(uptime)"
who -H

awk행 추가 외에는 아무 작업도 수행하지 않았기 때문에 제거했습니다 .

이를 수행하는 다른 방법이 있습니다:

echo -n "Uptime: "
uptime
who -H

관련 정보