원하는 모든 것을 리디렉션 할 수는 echo
있지만 아무것도하지 않습니다. echo
표준 입력을 읽지 않습니다. 그것은이하는 모든 표준 출력에 쓰기입니다 인수는 공백 문자로 구분하고 개행 문자로 종료 (및 일부 echo
그들의 일부 이스케이프 시퀀스 구현 확장 및 / 또는 함께 인수는 시작 -
가능한 옵션으로 처리).
당신이 원하는 경우 echo
파일의 내용을 표시하려면 인수로 콘텐츠를 전달해야합니다 echo
. 다음과 같은 것 :
echo "$(cat my_file.txt)"
참고 $(...)
후행 개행 문자 스트립 들 그 출력에서 cat
명령 및 echo
추가 한 다시.
또한를 제외하고 zsh
는 명령 인수에 NUL 문자를 전달할 수 없으므로 위의 바이너리 파일은 일반적으로 작동하지 않습니다. yash
유효한 문자의 일부를 구성하지 않는 바이트도 제거합니다.
당신이 원하기 때문에 그렇게하고 싶은 이유 인 경우 echo
을 확장 \n
, \b
, \0351
(UNIX의 준수의로 ... 파일의 이스케이프 시퀀스는 echo
구현, 이렇게 전부는 아니지만 ) 다음, 당신은 오히려 사용하는 것 printf
대신 :
printf '%b\n' "$(cat my_file.txt)"
반대로 echo
, 파일은 휴대용이며 파일의 내용이로 시작하면 문제가 없습니다 -
.
에 대한 대안으로 $(cat file)
, 와 ksh
, zsh
와 bash
, 하나는도 수행 할 수 있습니다$(<file)
. 그것은 확장을 구성하기 위해 파일의 내용 을 읽는 것과 반대로 쉘 이 특수 연산자 cat
입니다. 여전히 후행 줄 바꿈을 제거하고에서를 제외하고 NUL 바이트를 질식 zsh
시킵니다. 에서 bash
여전히 추가 프로세스가 중단됩니다. 또한 디렉토리 유형의 파일을 그런 식으로 읽으려고하면 오류가 발생하지 않습니다. 또한 $(< file)
특별 $(< file; other command)
하지는 않지만 ( zsh
다른 쉘을 에뮬레이션하지 않는 file
경우 암시 적 $READNULLCMD
명령 (일반적으로 호출기) 을 실행하여 여전히)의 내용을 확장합니다 ).
echo
합니까?