![.cshrc 명령 출력에 줄바꿈 추가](https://linux55.com/image/53686/.cshrc%20%EB%AA%85%EB%A0%B9%20%EC%B6%9C%EB%A0%A5%EC%97%90%20%EC%A4%84%EB%B0%94%EA%BF%88%20%EC%B6%94%EA%B0%80.png)
사용자가 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