我正在运行一些第三方 Perl 脚本,该脚本需要一个输出文件作为输出标志-o
.
不幸的是,该脚本似乎需要一个实际的文件,即用户必须创建一个filename.txt
0 字节的空文件,然后在脚本命令行中输入这个空文件
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
命令似乎不会以同样的方式失败。