bash 스크립트에서 새 빈 파일을 어떻게 생성합니까?

출력 플래그에 대한 출력 파일이 필요하도록 작성된 타사 Perl 스크립트를 실행 중입니다. -o.

안타깝게도 스크립트에 실제 파일이 필요한 것 같습니다. 즉, 사용자는 0 바이트의 빈 파일 filename.txt를 만든 다음이를 입력해야합니다. 스크립트 명령 줄의 빈 파일

perl script1.pl -o filename.txt 

질문 : bash 스크립트 내에서 빈 파일을 어떻게 생성합니까? 단순히 , 스크립트는 파일이 존재하지 않는다는 오류를 표시합니다.

설명

답변

touch 통신 사용 과. touch filename.txt.

댓글

  • echo -n >file
  • 주의-파일이 이미 존재하는 경우 비워지지 않습니다.
  • 실제로 터치를 시도하고 " echo -n > 파일 " 내 bash 스크립트 내부에 있지만 스크립트를 실행할 때 오류가 발생합니다. " 해당 파일 없음 또는 해당 줄의 디렉토리 ". 누군가 도와 주시겠습니까?
  • echo -n "" > filename 파일이있는 경우 비우거나없는 경우 파일을 생성합니다. ' t 존재합니다.

Answer

null 명령 (:) 리디렉션 (> filename) 트릭 (:>)은 0으로 잘 리거나 명명 된 파일을 생성합니다.

$ echo foo > filea $ :> filea $ wc -c filea 0 filea $ rm filea $ :> filea $ wc -c filea 0 filea 

(셸이 NOCLOBBER 옵션을 설정하면 실패합니다.)

코멘트

  • noclobber가 설정되어 있으면 리디렉션 >|을 사용하여 clobber를 수행하므로 :>| filea-문서화 됨 매뉴얼
  • > filename.txt 만하면됩니다. :는 필요하지 않습니다. 또는 >> filename.txt 존재하는 경우 폐기하고 싶지 않은 경우 '
  • @ilkkachu 질문은 Bash를 지정합니다. :를 사용하면 스크립트가 다른 셸로 작업을 수행 할 가능성이 더 높습니다. Zsh.

답변

항상 perl도 사용할 수 있습니다.

$ stat filename.txt stat: cannot stat "filename.txt": No such file or directory $ perl -e "open($fh,">","filename.txt") or die $!;close($fh)" $ stat filename.txt File: "filename.txt" Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 801h/2049d Inode: 280728 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 1000/ xieerqi) Gid: ( 1000/ xieerqi) Access: 2017-02-08 13:51:01.479121995 -0700 Modify: 2017-02-08 13:51:01.479121995 -0700 Change: 2017-02-08 13:51:01.479121995 -0700 Birth: - 

답변

가장 짧은 방법 :

>filename 

댓글

  • 우수 답변. ' 더 짧을 수 없습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다