출력을 파일로 다시 리디렉션 [중복]

출력을 파일로 다시 리디렉션 [중복]

콘텐츠를 가져와서 foo.txt처리한 후 원본 파일에 다시 쓸 것이라고 생각하여 다음 명령을 실행했습니다. 대신 파일을 열면 비어 있습니다.

cat foo.txt | tr " " "\n" > foo.txt

이 줄에서 정확히 무슨 일이 일어나고 있으며 출력을 다시 리디렉션하도록 다시 작성할 수 있습니까 foo.txt?

답변1

Redirect( >foo.txt)는 명령이 실행되기 전에 상위 쉘에 의해 수행되어 cat파일을 0바이트로 재설정합니다. 다음과 같은 것을 사용하십시오

tr " " "\n" foo.txt >foo.new && \
  mv foo.new foo.txt

또한 쓸모없는 사용을 피하십시오 cat.

관련 정보