Execut un script Perl terț scris astfel încât să necesite un fișier de ieșire pentru semnalizatorul de ieșire, -o
.
Din păcate, scriptul pare să necesite un fișier real, adică utilizatorii trebuie să creeze un fișier gol filename.txt
cu 0 octeți și apoi să introducă acest fișier gol pe linia de comandă a scriptului
perl script1.pl -o filename.txt
Întrebare: Cum aș crea un fișier gol într-un script bash? Dacă se încearcă pur și simplu perl script1.pl -o filename.txt
, scriptul arată o eroare că fișierul nu există.
Comentarii
-
touch filename.txt
- Posibil duplicat al Cum se creează un fișier simplu .txt (text) folosind terminalul?
- vezi și De ce nu există ' vreo comandă shell pentru a crea fișiere?
Răspuns
Utilizați touch
și. touch filename.txt
.
Comentarii
Răspuns
Utilizați comanda nulă (:
) redirect (> filename
) truc (:>
), deoarece acest lucru se va trunchia la zero sau va crea fișierul numit.
$ echo foo > filea $ :> filea $ wc -c filea 0 filea $ rm filea $ :> filea $ wc -c filea 0 filea
(Acest lucru va eșua dacă shell-ul setează o opțiune NOCLOBBER.)
Comentarii
- Dacă noclobber este setat, utilizați redirecționarea
>|
pentru a clobber, deci:>| filea
– documentat în manual - Doar
> filename.txt
ar face, nu este nevoie de:
. Sau>> filename.txt
dacă ' nu vrem să îl aruncăm dacă există. - @ilkkachu deși întrebarea specifică Bash, folosind
:
face ca scriptul să își îndeplinească sarcina cu alte shell-uri, de ex. Zsh.
Răspuns
Puteți folosi întotdeauna și 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: -
Răspunde
Cel mai scurt mod:
>filename
Comentarii
- Cel mai bun răspuns. ' nu ar putea fi mai scurt.
echo -n >file
echo -n "" > filename
va goli fișierul dacă există sau creează un fișier dacă nu ' nu există.