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
-
touch filename.txt - Möjlig duplikat av Hur skapar man en enkel .txt (text) -fil med terminal?
- se även Varför finns det inte ' något shell-kommando för att skapa filer?
Svar
Använd touch comm och. touch filename.txt.
Kommentarer
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.txtskulle göra det, inget behov av:. Eller>> filename.txtom 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.
echo -n >fileecho -n "" > filenametömmer filen om den finns eller skapar en fil om den inte ' Det finns inte.