Hvordan oppretter jeg en ny tom fil i et bash-skript?

Jeg kjører et Perl-skript fra tredjeparter skrevet slik at det krever en utdatafil for utdataflagget, -o.

Dessverre ser skriptet ut til å kreve en faktisk fil, det vil si at brukerne må opprette en tom fil filename.txt med 0 byte og deretter legge inn dette tom fil på skriptkommandolinjen

perl script1.pl -o filename.txt 

Spørsmål: Hvordan oppretter jeg en tom fil i et bash-skript? Hvis man bare prøver perl script1.pl -o filename.txt, skriptet gir en feil om at filen ikke eksisterer.

Kommentarer

Svar

Bruk touch comm og. touch filename.txt.

Kommentarer

  • echo -n >file
  • ta vare – dette tømmer ikke filen din hvis den allerede eksisterer
  • Egentlig prøvde jeg å berøre og " echo -n > fil " inne i bash-skriptet mitt, men jeg får en feil når jeg kjører skriptet: " Ingen slik fil eller katalog " på den linjen. Kan noen hjelpe deg?
  • echo -n "" > filename vil tømme filen hvis den eksisterer eller opprette en fil hvis den ikke ' t eksisterer.

Svar

Bruk null-kommandoen (:) omdirigering (> filename) triks (:>), da dette blir avkortet til null eller opprettet den navngitte filen.

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

(Dette mislykkes hvis skallet setter et NOCLOBBER-alternativ.)

Kommentarer

  • Hvis noclobber er angitt, bruk omdirigering >| til clobber, så :>| filea – dokumentert i manualen
  • Bare > filename.txt ville gjort, ikke noe behov for :. Eller >> filename.txt hvis vi ikke ' ikke vil kaste den hvis den tilfeldigvis eksisterer.
  • @ilkkachu selv om spørsmålet spesifiserer Bash, og bruker : gjør skriptet mer sannsynlig å utføre oppgaven med andre skall, f.eks. Zsh.

Svar

Du kan alltid bruke perl også.

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

>filename 

Kommentarer

  • Beste svaret. Kunne ikke ' ikke være kortere.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *