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

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

我正在运行一些第三方 Perl 脚本,该脚本需要一个输出文件作为输出标志-o.

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

perl script1.pl -o filename.txt

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

答案1

使用touch命令。touch filename.txt

答案2

最短路线:

>filename

答案3

使用空命令 ( :) 重定向 ( > filename) 技巧 ( :>),因为这将截断为零或创建指定文件。

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

(如果 shell 设置了 NOCLOBBER 选项,这将会失败。)

答案4

dd可以用来创建一个空文件,如下所示:

dd if=/dev/null of=filename.txt count=0

dd比其他方法更有用的一种情况是通过efivars文件系统 ( /sys/firmware/efi/efivars) 创建 EFI 变量 (PK)。

在某些平台和 Linux 发行版中,该文件是使用“ immutible”属性集创建的(显示为i带“ lasattr”的“ ”标志)。因此,对该文件的任何后续操作都会失败。

例如,touch不仅创建文件,而且在文件上设置时间戳。同样,通过管道传输到文件>不仅会创建文件,还会执行失败的其他操作。该dd命令似乎不会以同样的方式失败。

相关内容