#1 楼
使用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
#2 楼
> newfile
还将创建一个空文件。如果该文件已经存在,它将被截断(清空)。要保留文件内容,请使用
>>
进行附加,如下所示:>> file
即使文件存在,内容也不会被修改。
编辑:如果您没有要键入的任何内容,则此内容会更快:
user@host$ :> newfile
user@host$ :>> new_or_existing_file
注意。
:
是这里的命令。它不是提示的一部分。评论
现在是新的。它是bash特有的吗?
– tshepang
2011年1月15日下午6:40
我不这么认为。任何允许将输出流重定向到文件的外壳程序都应支持此功能。如果文件已经存在,它将截断该文件。如果您不想清空它,可以安全地使用它。
– Balki
2011年1月15日上午10:23
哇,我认为这就是所谓的作弊系统
– Bananarun
2014年6月23日12:00
#3 楼
cat /dev/null > file1.ext
确切的方法还有另一种方法
echo "" > file2.ext
区别是file1.ext将为零字节,而file2.ext将为零。一个字节。您可以通过
ls -l file*.*
进行检查
评论
不,'echo“”>'不会创建一个空文件,它会创建一个包含换行符的文件。如果出于某种原因要使用echo创建一个空文件,则必须使用'echo -n“”>',或者简单地使用'echo -n>'
– andol
2011年1月15日在8:00
#4 楼
使用vim
编辑器,您还可以创建一个空文件。vim filename
,然后保存
:wq
评论
好吧,在这种情况下,不是任何文本编辑器,而是vim。
– Nephente
2015年10月4日,12:15
这不是从命令行。也许如果您发布vim单线。
–阿西姆·贾利斯(Asim Jalis)
20年7月12日在20:45
#5 楼
如果您的echo
版本支持-n开关,则命令echo -n > file
将创建一个空文件。
或者您可以使用
printf
printf '' > file
#6 楼
通常,在Linux上创建任何normal1文件都涉及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流的运算符。 >
运算符使用>
标志专门调用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
(用于创建不需要的临时文件在重新启动之间存在!)当然,上面提到的所有实用程序都不专门创建文件。但是它们执行必要的系统调用,这使我们可以调整命令。
当然,在编程或脚本编制级别,我们可能还想创建一个文件,尤其是出于效率目的(因为从Perl脚本或Python调用诸如
tempfile
之类的外部命令将需要其他资源)。 -liner:$ 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 newfile.txt或其他扩展名(如果需要指定扩展名)。
–gotqn
2014年4月26日上午8:18
@gotqn用于python touch newfile.py和ruby newfile.rb吗?
– kouty
16年8月30日在12:56
但是,如果newfile已经存在并且不为空,则触摸newfile将使您拥有一个非空文件。也许不是您想要的。
– Camille Goudeseune
17年9月26日在14:47
@CamilleGoudeseune我认为,如果newfile已经存在,那么touch命令将只更新文件的时间戳(这正是命令的目的),而无需编辑文件的内容。
– C0deDaedalus
18年3月13日在11:20
您不必这么认为;这是真的!但这不是问题要问的。
– Camille Goudeseune
18年3月13日在16:21