Як створити новий порожній файл у скрипті bash?


19

Я біг деяких третьої сторони Perl скрипта , написаний таким чином, що він вимагає вихідного файлу для прапора виведення, -o.

На жаль, сценарій вимагає фактичного файлу, тобто користувачі повинні створити порожній файл filename.txtз 0 байтами, а потім ввести цей порожній файл у командному рядку сценарію

perl script1.pl -o filename.txt

Питання: Як я можу створити порожній файл у скрипті bash? Якщо спробувати просто perl script1.pl -o filename.txt, сценарій видає помилку, що файл не існує.


1
touch filename.txt
hschou


Відповіді:


29

Використовувати touchкоманду. touch filename.txt.


8
echo -n >file
Ханну

8
подбайте - це не спорожнить ваш файл, якщо він уже є
johanvdw

6

Використовуйте трюк ( :) перенаправлення ( ) перенаправлення ( > filename) :>, оскільки це скоротить до нуля або створить названий файл.

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

(Це не вдасться, якщо оболонка встановить параметр NOCLOBBER.)


1
Якщо встановлено noclobber, використовуйте перенаправлення >|на clobber, так :>| filea- задокументовано в посібнику
glenn jackman

1
Просто > filename.txtзробив би, не потрібно :. Або >> filename.txtякщо ми не хочемо його сміття, якщо воно дійсно існує.
ilkkachu

2
@ilkkachu, хоча питання задає Bash, використання :сценарію робить більше шансів виконати своє завдання з іншими оболонками, наприклад, Zsh.
can-ned_food

3

Ви також завжди можете використовувати 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: -
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.