Bagaimana cara membuat file kosong baru di skrip bash?


19

Saya menjalankan beberapa skrip Perl pihak ketiga yang ditulis sedemikian rupa sehingga memerlukan file output untuk flag output -o,.

Sayangnya, skrip tampaknya memerlukan file aktual, yaitu, pengguna harus membuat file kosong filename.txtdengan 0 byte dan kemudian memasukkan file kosong ini pada baris perintah skrip

perl script1.pl -o filename.txt

Pertanyaan: Bagaimana cara saya membuat file kosong dalam skrip bash? Jika seseorang mencoba perl script1.pl -o filename.txt, skrip memberikan kesalahan bahwa file tidak ada.


1
touch filename.txt
hschou


Jawaban:


29

Gunakan touchperintah. touch filename.txt.


8
echo -n >file
Hannu

8
hati-hati - ini tidak akan mengosongkan file Anda jika sudah ada
johanvdw

6

Gunakan perintah null ( :) redirect ( > filename) trick ( :>), karena ini akan terpotong menjadi nol atau membuat file bernama.

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

(Ini akan gagal jika shell menetapkan opsi NOCLOBBER.)


1
Jika noclobber diatur, gunakan pengalihan >|ke clobber, jadi :>| filea- didokumentasikan dalam manual
glenn jackman

1
Hanya > filename.txtakan lakukan, tidak perlu untuk :. Atau >> filename.txtjika kita tidak ingin membuangnya jika memang ada.
ilkkachu

2
@ilkkachu meskipun pertanyaannya menentukan Bash, penggunaan :membuat skrip lebih mungkin untuk menyelesaikan tugasnya dengan shell lain misalnya Zsh.
can-ned_food

3

Anda selalu bisa menggunakan perl juga.

$ 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: -
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.