bash 스크립트에서 빈 파일을 새로 만들려면 어떻게합니까?


19

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

불행히도, 스크립트는 실제 파일을 요구하는 것으로 보입니다. 즉, 사용자는 filename.txt0 바이트의 빈 파일을 만든 다음 스크립트 명령 줄에이 빈 파일을 입력해야합니다

perl script1.pl -o filename.txt

질문 : bash 스크립트 내에 빈 파일을 어떻게 만들 수 있습니까? 하나만 시도 perl script1.pl -o filename.txt하면 스크립트가 파일이 존재하지 않는다는 오류를 표시합니다.


1
touch filename.txt
hschou


답변:


29

touch명령을 사용하십시오 . touch filename.txt.


8
echo -n >file
Hannu

8
주의 – 파일이 이미 존재하는 경우 파일을 비우지 않습니다.
johanvdw 2016.

6

null 명령 ( :) redirect ( > filename) 트릭 ( :>)을 사용하면 0으로 잘 리거나 명명 된 파일이 만들어집니다.

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

쉘이 NOCLOBBER 옵션을 설정하면 실패합니다.


1
에서는 noclobber가 설정되어있는 경우, 리디렉션 사용 >|하므로 소지품, :>| filea문서화 - 매뉴얼에를
글렌 잭맨

1
그냥 > filename.txt할 필요가 없습니다 :. 또는 >> filename.txt존재하지 않을 경우 휴지통을 비우고 싶지 않은 경우.
ilkkachu

2
@ilkkachu는 질문에 Bash를 지정하지만을 사용 :하면 스크립트가 Zsh와 같은 다른 쉘로 작업을 수행 할 가능성이 높아집니다.
can-ned_food

3

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

$ 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: -
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.