NES Asked: 2011-01-15 11:03:10 +0800 CST2011-01-15 11:03:10 +0800 CST 2011-01-15 11:03:10 +0800 CST 如何从命令行创建一个空文件 772 如何从命令行创建一个空文件? command-line 6 个回答 Voted Best Answer Isaiah 2011-01-15T11:06:09+08:002011-01-15T11:06:09+08:00 使用touch命令: The touch utility sets the modification and access times of files to the current time of day. If the file doesn't exist, it is created with default permissions. 例子: touch newfile balki 2011-01-15T11:38:36+08:002011-01-15T11:38:36+08:00 > newfile 还将创建一个空文件。如果文件已经存在,它将被截断(清空)。要保留文件内容,请使用>>for append,如下所示: >> file 即使文件存在,其内容也不会受到影响。 编辑:如果您没有任何要输入的内容,这个更快: user@host$ :> newfile user@host$ :>> new_or_existing_file 笔记。:是这里的命令。它不是提示的一部分。 indianwebdevil 2011-01-15T22:56:40+08:002011-01-15T22:56:40+08:00 cat /dev/null > file1.ext 确切的方式还有另一种方式 echo "" > file2.ext 不同之处在于 file1.ext 将是零字节,而 file2.ext 将是一个字节。您可以通过以下方式检查 ls -l file*.* nrider 2012-04-04T01:41:26+08:002012-04-04T01:41:26+08:00 使用vim编辑器,您还可以创建一个空文件。 vim filename 然后保存 :wq A.B. 2015-06-23T01:47:40+08:002015-06-23T01:47:40+08:00 命令 echo -n > file echo如果您的版本支持 -n 开关,则创建一个空文件。 或者你可以使用printf printf '' > file Sergiy Kolodyazhnyy 2017-07-11T03:17:00+08:002017-07-11T03:17:00+08:00 通常,在 Linux 上创建任何常规1文件都涉及 open(2)、openat(2)和creat(2)系统调用(特别是带有O_CREAT标志)。这意味着如果您调用任何执行这些系统调用的命令行实用程序,您可以创建一个新的空文件。 最常见的新文件名是这样创建的: touch /tmp/new_file : > /tmp/new_file true > /tmp/new_file > /tmp/new_file(仅限 bash 外壳) touch是一个独立的实用程序。它最初的目的是更新文件的访问和修改时间,但是如果文件不存在 - 它将被创建。另请注意,文件名-经过特殊处理,因此如果您确实要创建一个以字面命名的文件,则-必须将其括在单引号或双引号中。 相比之下,>是stdout stream的 shell 重定向运算符。>操作员专门调用openat()带有 O_WRONLY|O_CREAT|O_TRUNC 标志的系统调用。这意味着,如果文件名不存在 - 它将被创建,如果存在 - 数据将被截断(因此消失,因此>应谨慎使用)。在现在的大多数 shell中,true或者:是内置的,这样做: > /tmp/new_file会更有效率,尽管与touch /tmp/new_file. 但当然它并不止于此。如前所述,任何可以执行的open()系统调用都将创建一个文件。因此,我们可以这样做:openat()create() true|dd of=/tmp/newfile truncate --size 0 /tmp/new_filename.txt cp /dev/null /tmp/null_file true|tee /tmp/some_other_file mktemp或tempfile(用于创建不需要在重新启动之间存在的临时文件!) 当然,上述所有实用程序都不会专门创建文件。但是它们执行必要的系统调用,这使我们能够调整命令。 当然,在编程或脚本级别上,我们也可能希望创建一个文件,尤其是为了提高效率(因为touch从 Perl 脚本或 Python 调用外部命令将需要额外的资源)。 Python单线: $ python -c 'import sys,os;f=sys.argv[1];os.utime(f,None) if os.path.exists(f) else open(f,"a").close' myfile.txt 我们可以用这个来缩短它: $ python -c 'import sys,os;f=sys.argv[1];'$'\n''with open(f,"a"): os.utime(f,None)' mysecondfile.txt 在 Perl 中: $ perl -e 'open(my $fh,">","/tmp/perlfile")' 1其他类型的文件,例如硬/软链接、字符或块特殊设备、目录、命名管道或套接字,需要完全不同的系统调用。
使用
touch
命令:例子:
还将创建一个空文件。如果文件已经存在,它将被截断(清空)。要保留文件内容,请使用
>>
for append,如下所示:即使文件存在,其内容也不会受到影响。
编辑:如果您没有任何要输入的内容,这个更快:
笔记。
:
是这里的命令。它不是提示的一部分。确切的方式还有另一种方式
不同之处在于 file1.ext 将是零字节,而 file2.ext 将是一个字节。您可以通过以下方式检查
使用
vim
编辑器,您还可以创建一个空文件。然后保存
命令
echo
如果您的版本支持 -n 开关,则创建一个空文件。或者你可以使用
printf
通常,在 Linux 上创建任何常规1文件都涉及
open(2)
、openat(2)
和creat(2)
系统调用(特别是带有O_CREAT
标志)。这意味着如果您调用任何执行这些系统调用的命令行实用程序,您可以创建一个新的空文件。最常见的新文件名是这样创建的:
touch /tmp/new_file
: > /tmp/new_file
true > /tmp/new_file
> /tmp/new_file
(仅限 bash 外壳)touch是一个独立的实用程序。它最初的目的是更新文件的访问和修改时间,但是如果文件不存在 - 它将被创建。另请注意,文件名
-
经过特殊处理,因此如果您确实要创建一个以字面命名的文件,则-
必须将其括在单引号或双引号中。相比之下,
>
是stdout stream的 shell 重定向运算符。>
操作员专门调用openat()
带有O_WRONLY|O_CREAT|O_TRUNC
标志的系统调用。这意味着,如果文件名不存在 - 它将被创建,如果存在 - 数据将被截断(因此消失,因此>
应谨慎使用)。在现在的大多数 shell中,true
或者:
是内置的,这样做: > /tmp/new_file
会更有效率,尽管与touch /tmp/new_file
.但当然它并不止于此。如前所述,任何可以执行的
open()
系统调用都将创建一个文件。因此,我们可以这样做:openat()
create()
true|dd of=/tmp/newfile
truncate --size 0 /tmp/new_filename.txt
cp /dev/null /tmp/null_file
true|tee /tmp/some_other_file
mktemp
或tempfile
(用于创建不需要在重新启动之间存在的临时文件!)当然,上述所有实用程序都不会专门创建文件。但是它们执行必要的系统调用,这使我们能够调整命令。
当然,在编程或脚本级别上,我们也可能希望创建一个文件,尤其是为了提高效率(因为
touch
从 Perl 脚本或 Python 调用外部命令将需要额外的资源)。Python单线:
我们可以用这个来缩短它:
在 Perl 中:
1其他类型的文件,例如硬/软链接、字符或块特殊设备、目录、命名管道或套接字,需要完全不同的系统调用。