Hvordan opretter jeg en ny tom fil i et bash-script?

Jeg kører et Perl-script fra tredjepart skrevet således, at det kræver en outputfil til outputflagget, -o.

Desværre ser scriptet ud til at kræve en faktisk fil, dvs. brugere skal oprette en tom fil filename.txt med 0 bytes og derefter indtaste denne tom fil på scriptkommandolinjen

perl script1.pl -o filename.txt 

Spørgsmål: Hvordan opretter jeg en tom fil inden for et bash-script? Hvis man blot prøver perl script1.pl -o filename.txt, scriptet giver en fejl om, at filen ikke findes.

Kommentarer

Svar

Brug touch comm og. touch filename.txt.

Kommentarer

  • echo -n >file
  • pas på – dette tømmer ikke din fil, hvis den allerede findes
  • Faktisk prøvede jeg at berøre og " echo -n > fil " inde i mit bash-script, men jeg får en fejl, når jeg udfører scriptet: " Ingen sådan fil eller katalog " på denne linje. Kan nogen hjælpe tak?
  • echo -n "" > filename tømmer filen, hvis den findes, eller opretter en fil, hvis den ikke ' t eksisterer.

Svar

Brug nul-kommandoen (:) omdirigering (> filename) trick (:>), da dette afkortes til nul eller opretter den navngivne fil.

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

(Dette mislykkes, hvis skallen angiver en NOCLOBBER-indstilling.)

Kommentarer

  • Hvis noclobber er indstillet, skal du bruge omdirigering >| til at clobber, så :>| filea – dokumenteret i manualen
  • Bare > filename.txt ville gøre, intet behov for :. Eller >> filename.txt hvis vi ikke ' ikke ønsker at kaste det, hvis det tilfældigvis eksisterer.
  • @ilkkachu selvom spørgsmålet angiver Bash, ved hjælp af : gør scriptet mere sandsynligt at udføre sin opgave med andre skaller f.eks. Zsh.

Svar

Du kan altid også bruge 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: - 

Svar

Den korteste vej:

>filename 

Kommentarer

  • Bedste svar. Kunne ' ikke være kortere.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *