>filename.txt가 쉘 스크립트에서 수행하는 작업

>filename.txt가 쉘 스크립트에서 수행하는 작업

쉘코드를 보다가 이 명령어가 다른 쉘코드 사이에 쓰여 있는 것을 발견했습니다.

>filename.txt 

이 명령이 무엇을 하는지 몰랐기 때문에 데스크탑에서 시도해 보았습니다. 나는 쉘 스크립트를 만들고 쉘 스크립트에 이 명령을 썼는데 스크립트를 실행했을 때 아무 일도 하지 않는다는 것을 발견했습니다. >myfile.txt 이것은 무엇을 하는가?

답변1

당신이 쓴대로아무것도 없다리디렉션 기호 앞 >:

>filename.txt

말 그대로리디렉션 아무것도 없다입력하다 filename.txt. 이는 일반적으로 텍스트 파일의 내용을 지우거나 지우기 위해 수행됩니다. 아직 존재하지 않는 경우 filename.txt생성됩니다.

답변2

> file리디렉션 명령 없이 리디렉션만 가능합니다. 쉘에 따라 다음과 같습니다.

  • 구문 오류(Thompson shell csh,,, tcsh)fish
  • 그것은 작동한다빈 명령( zsh, 참조 info zsh NULLCMD) 출력이 로 리디렉션됩니다 file.
  • 리디렉션을 수행합니다(여기서 파일은 truncate( O_TRUNC), with 및 옵션이 설정된 경우 with 를 사용하여 쓰기 위해 열림 O_CREAT). 그런 다음 명령이 제공되지 않았기 때문에 아무 것도 하지 않고 해당 파일 설명자를 닫습니다( Bourne의 쉘( /emulation)을 제외하고, 쉘과 유사합니다.O_EXCLnoclobberzshshkshrc

이 코드는 파일을 자르거나 빈 내용으로 생성하기 위해 제3등급 셸용으로 작성되었을 가능성이 높습니다.

보다 이식 가능한 접근 방식은 출력을 생성하지 않는 명령을 리디렉션하는 것입니다.

printf '' > file

[ . ] > file

true > file # printf, [ and true are builtins in many shells

eval > file # eval is built-in in all shells but note that in POSIX ones, that
            # causes the shell to exit if the file can't be opened. Bourne-like
            # shells also have a ":" builtin with the same side-effect.

noclobber옵션이 켜져 있어도 강제로 잘림:

true >! file # csh (where noclobber comes from), tcsh, zsh
true >| file # ksh/POSIX (and zsh)

답변3

이 명령은 > myfile.txt파일을 생성하거나 파일 내용이 있는 경우 지우기만 합니다.

또한 이 명령은 이전 명령이 있는 경우 .txt 파일에 대한 속성을 지정합니다. 예를 들어, 폴더의 내용이 포함된 파일을 생성하려면 다음을 수행할 수 있습니다 ls -1 > myfile.txt. 이렇게 하면 파일 이름과 디렉터리 이름이 한 줄씩 포함된 파일이 생성됩니다.

이를 스크립트의 로그 파일로 사용할 수도 있으므로 명령은 화면에 출력을 표시하는 대신 출력을 파일에 저장합니다.

답변4

filename.txt와 같은 명령은 없습니다. filename이라는 이름의 텍스트 파일일 뿐입니다.

제목에서 물어보셨듯이

>filename.txt가 쉘 스크립트에서 수행하는 작업

">"는 명령 출력을 텍스트 파일로 리디렉션하는 데 사용됩니다. 예를 들어 터미널에서 다음 명령을 실행하면

ifconfig > filename.txt

그러면 ifconfig 명령의 출력이 터미널에 표시되지 않습니다. 하지만 작업 디렉터리에 새 파일이 생성되거나, 동일한 파일이 거기에 있으면 새 파일을 덮어쓰게 됩니다. filename.txt 파일에서 이 명령의 출력을 읽을 수 있습니다.

관련 정보