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
ハヌ

8
注意してください-ファイルが既に存在する場合、これは空になりません
-johanvdw

6

nullコマンド(:)リダイレクト(> filename)トリック(:>)を使用します。これにより、ゼロに切り捨てられるか、名前付きファイルが作成されます。

$ 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

常に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: -
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.