echo 0>file.txt와 echo 0>file.txt의 차이점은 무엇입니까?

echo 0>file.txt와 echo 0>file.txt의 차이점은 무엇입니까?

나는 이것이 다음과 같이 행동하는 것을 보았습니다.

[root@divinity test]# echo 0 > file.txt
[root@divinity test]# cat file.txt
0
[root@divinity test]# echo 0> file.txt

[root@divinity test]# cat file.txt

또한 포함하면 ""예상대로 작동한다는 것도 확인했습니다.

[root@divinity test]# echo 0""> file.txt
[root@divinity test]# cat file.txt
0

나는 이것이 IO 리디렉션의 일부일 뿐이라고 생각하지만 echo 0>무슨 일이 일어나고 있는지 잘 이해하지 못합니다.

답변1

in echo 0 > file.txt(공백 포함)을 사용하면 > file.txt쉘이 표준 출력을 리디렉션하여 표준 출력에 쓸 수 있도록 합니다 file.txt(파일이 이미 있는 경우 파일을 자른 후). 나머지 명령은 echo 0리디렉션이 적용된 상태로 실행됩니다.

언제리디렉션 연산자구분 기호 없이 따옴표가 없는 숫자로 접두사를 붙입니다.리디렉션은 해당 파일 설명자에 적용됩니다.기본값 대신. 0은 파일 설명자입니다.표준 입력, 따라서 0> file.txt표준 입력을 file.txt.(1은 표준 출력, 2는 표준 오류)로 리디렉션합니다. 이 숫자는 리디렉션 연산자의 일부로 간주되며 더 이상 명령 인수의 일부가 아닙니다 echo.

매개변수에 더 많은 콘텐츠를 포함하면 이러한 현상이 더욱 명확하게 나타나는 것을 볼 수 있습니다 echo.

$ echo number 0 > file.txt
$ echo number 0> file.txt
number

number두 번째 경우에는 표준 출력이 리디렉션되지 않기 때문에 발생합니다.

이러한 리디렉션 연산자 변형은 표준 오류에서 더 일반적으로 나타납니다 2> file.txt.

이런 방식으로 표준 입력을 리디렉션하면 표준 입력에서 읽으려는 실제 시도가 중단됩니다. 쓰기를 허용하면서 실제로 표준 입력을 리디렉션하려면 연산자를 사용하여 다음을 수행할 수 있습니다 <>.

cat 0<> file.txt

답변2

파일 설명자 0은 입력 스트림입니다. 0>filename은 입력 스트림을 filename에 넣습니다. 0 > filename은 filename 파일에 0을 넣습니다. 간격에 주의하세요.

관련 정보