Hur skapar jag en ny tom fil i ett bash-skript?

Jag kör något Perl-skript från tredje part skrivet så att det kräver en utdatafil för utdataflaggan, -o.

Tyvärr verkar skriptet kräva en verklig fil, det vill säga användare måste skapa en tom fil filename.txt med 0 byte och sedan mata in den här tom fil på skriptkommandoraden

perl script1.pl -o filename.txt 

Fråga: Hur skulle jag skapa en tom fil i ett bash-skript? Om man bara försöker perl script1.pl -o filename.txt, skriptet ger ett fel att filen inte finns.

Kommentarer

Svar

Använd touch comm och. touch filename.txt.

Kommentarer

  • echo -n >file
  • ta hand – detta tömmer inte filen om den redan finns
  • Egentligen försökte jag peka och " echo -n > fil " inuti mitt bash-skript men jag får ett fel när jag kör skriptet: " Ingen sådan fil eller katalog " på den raden. Kan någon hjälpa till?
  • echo -n "" > filename tömmer filen om den finns eller skapar en fil om den inte ' Det finns inte.

Svar

Använd kommandot null (:) omdirigering (> filename) trick (:>), eftersom detta kommer att avkortas till noll eller skapa den namngivna filen.

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

(Detta misslyckas om skalet ställer in ett NOCLOBBER-alternativ.)

Kommentarer

  • Om noclobber är inställt, använd omdirigeringen >| till clobber, så :>| filea – dokumenterad i manualen
  • Bara > filename.txt skulle göra det, inget behov av :. Eller >> filename.txt om vi inte ' inte vill skräp det om det verkligen finns.
  • @ilkkachu även om frågan specificerar Bash, med : gör skriptet mer sannolikt att utföra sin uppgift med andra skal, t.ex. Zsh.

Svar

Du kan alltid använda perl också.

$ 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: - 

Svar

Den kortaste vägen:

>filename 

Kommentarer

  • Bästa svaret. Kunde ' inte vara kortare.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *