출력 플래그에 대한 출력 파일이 필요하도록 작성된 타사 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
댓글
- 우수 답변. ' 더 짧을 수 없습니다.
touch filename.txt