如何在bash脚本中创建一个新的空文件?


19

我正在运行一些第三方Perl脚本,编写该脚本时需要输出标记为的输出文件-o

不幸的是,脚本似乎需要一个实际的文件,也就是说,用户必须创建一个filename.txt0字节的空文件,然后在脚本命令行上输入该空文件。

perl script1.pl -o filename.txt

问题:如何在bash脚本中创建一个空文件?如果只是尝试perl script1.pl -o filename.txt,脚本会给出一个错误,指出该文件不存在。


1
touch filename.txt
hschou


Answers:


29

使用touch命令。touch filename.txt


8
echo -n >file
Hannu

8
注意-如果文件已经存在,这不会清空您的文件
johanvdw

6

使用null命令(:)redirect(> filename)技巧(:>),因为这会将其截断为零或创建命名文件。

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

(如果外壳程序设置了NOCLOBBER选项,这将失败。)


1
如果设置了noclobber,请使用重定向>|来管理内容,因此:>| filea- 手册中所述
glenn jackman

1
只是> filename.txt会做,不需要:。或者>> filename.txt,如果它确实存在,我们不想将其丢弃。
ilkkachu

2
@ilkkachu尽管该问题确实指定了Bash,但使用:确实使该脚本更有可能通过其他shell(例如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: -
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.