Comment créer un nouveau fichier vide dans un script bash?

19

Je suis en cours d' exécution un script Perl tiers écrit telle qu'elle exige un fichier de sortie pour le drapeau de sortie, -o.

Malheureusement, le script semble nécessiter un fichier réel, c'est-à-dire que les utilisateurs doivent créer un fichier vide filename.txtavec 0 octet, puis entrer ce fichier vide sur la ligne de commande du script

perl script1.pl -o filename.txt

Question: Comment créer un fichier vide dans un script bash? Si l'on essaie simplement perl script1.pl -o filename.txt, le script donne une erreur indiquant que le fichier n'existe pas.

ShanZhengYang
la source

Réponses:

29

Utilisez la touchcommande. touch filename.txt.

MKT
la source
8
echo -n >file
Hannu
8
faites attention - cela ne videra pas votre fichier s'il existe déjà
johanvdw
6

Utilisez la commande null ( :) redirect ( > filename) trick ( :>), car elle sera tronquée à zéro ou créera le fichier nommé.

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

(Cela échouera si le shell définit une option NOCLOBBER.)

branler
la source
1
Si noclobber est défini, utilisez la redirection >|vers clobber, donc :>| filea- documenté dans le manuel
glenn jackman
1
Je > filename.txtle ferais, pas besoin de :. Ou >> filename.txtsi nous ne voulons pas le jeter s'il existe.
ilkkachu
2
@ilkkachu bien que la question spécifie Bash, l'utilisation :rend le script plus susceptible d'accomplir sa tâche avec d'autres shells, par exemple Zsh.
can-ned_food
3

Vous pouvez également toujours utiliser 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: -
Sergiy Kolodyazhnyy
la source