Come faccio a creare un nuovo file vuoto in uno script bash?


19

Sto lavorando con un po 'di terze parti Perl script scritto tale da richiedere un file di output per la bandiera di uscita, -o.

Sfortunatamente, lo script sembra richiedere un file effettivo, ovvero gli utenti devono creare un file vuoto filename.txtcon 0 byte e quindi immettere questo file vuoto nella riga di comando dello script

perl script1.pl -o filename.txt

Domanda: come potrei creare un file vuoto all'interno di uno script bash? Se uno prova semplicemente perl script1.pl -o filename.txt, lo script dà un errore che il file non esiste.


1
touch filename.txt
hschou,


Risposte:


29

Usa il touchcomando. touch filename.txt.


8
echo -n >file
Hannu,

8
fai attenzione - questo non svuoterà il tuo file se esiste già
johanvdw il

6

Usa il comando null ( :) redirect ( > filename) trick ( :>), poiché questo troncerà a zero o creerà il file indicato.

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

(Questo fallirà se la shell imposta un'opzione NOCLOBBER.)


1
Se è impostato noclobber, usa il reindirizzamento >|al clobber, quindi :>| filea- documentato nel manuale
glenn jackman

1
Lo > filename.txtfarei, non c'è bisogno del :. O >> filename.txtse non vogliamo cestinarlo se dovesse accadere.
ilkkachu,

2
@ilkkachu sebbene la domanda specifichi Bash, l'uso :rende lo script più probabile per svolgere il suo compito con altre shell, ad esempio Zsh.
can-ned_food,

3

Puoi sempre usare anche 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: -
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.