Hogyan hozhatok létre új üres fájlt egy bash szkriptben?

Olyan harmadik féltől származó Perl szkriptet futtatok, amely úgy van megírva, hogy a kimeneti zászlóhoz kimeneti fájl szükséges, -o

Sajnos úgy tűnik, hogy a szkript tényleges fájlt igényel, vagyis a felhasználóknak létre kell hozniuk egy 0 byte-os üres fájlt filename.txt, majd be kell ezt írni üres fájl a parancsfájl parancssorán

perl script1.pl -o filename.txt 

Kérdés: Hogyan hozhatnék létre egy üres fájlt egy bash szkripten belül? Ha valaki egyszerűen megpróbálja perl script1.pl -o filename.txt, a szkript hibát ad, hogy a fájl nem létezik.

Megjegyzések

Válasz

Használja a touch comm és. touch filename.txt.

Megjegyzések

  • echo -n >file
  • vigyázni – ez nem üríti a fájlt, ha már létezik
  • Valójában megpróbáltam érinteni és " echo -n > fájl " a bash szkriptemen belül, de hibaüzenetet kapok, amikor végrehajtom a szkriptet: " Nincs ilyen fájl vagy az adott sor " könyvtár. Tud valaki segíteni?
  • echo -n "" > filename ki fogja üríteni a fájlt, ha létezik, vagy létrehoz egy fájlt, ha nem ' t létezik.

Válasz

Használja a null parancsot (:) átirányítás (> filename) trükk (:>), mivel ez nullára csonkol, vagy létrehozza a megnevezett fájlt.

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

(Ez sikertelen lesz, ha a shell NOCLOBBER beállítást állít be.)

Megjegyzések

  • Ha a noclobber be van állítva, használja a >| átirányítást klobra, így :>| filea – dokumentált a kézikönyvben
  • Csak > filename.txt tenné, nem kell a :. Vagy >> filename.txt ha nem ' nem akarjuk kukába tenni, ha történetesen létezik.
  • @ilkkachu bár a kérdés megadja a Bash-t, a : használatával a szkript nagyobb valószínűséggel teljesíti a feladatát más héjakkal, pl. Zsh.

Válasz

A perl-t is mindig használhatja.

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

Válasz

A legrövidebb út:

>filename 

Megjegyzések

  • A legjobb válasz. Nem lehet ' t rövidebb.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük