Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 生成空白文件_Linux_Shell - Fatal编程技术网

Linux 生成空白文件

Linux 生成空白文件,linux,shell,Linux,Shell,我想清空3个文件或生成它们,如果它们不存在。以下命令正确吗 > myone.txt > mytwo.txt > mythree.txt 或者有更好的方法吗?没有,不是从外壳上。读取为此生成的系统调用,对于shell内置程序来说也非常有效: matt@stanley:~$ strace bash -c '> a > b > c' ... open("a", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 3 fcnt

我想清空3个文件或生成它们,如果它们不存在。以下命令正确吗

> myone.txt > mytwo.txt > mythree.txt

或者有更好的方法吗?

没有,不是从外壳上。读取为此生成的系统调用,对于shell内置程序来说也非常有效:

matt@stanley:~$ strace bash -c '> a > b > c'
...
open("a", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 3
fcntl64(1, F_GETFD)                     = 0
fcntl64(1, F_DUPFD, 10)                 = 10
fcntl64(1, F_GETFD)                     = 0
fcntl64(10, F_SETFD, FD_CLOEXEC)        = 0
dup2(3, 1)                              = 1
close(3)                                = 0
open("b", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 3
fcntl64(1, F_GETFD)                     = 0
fcntl64(1, F_DUPFD, 10)                 = 11
fcntl64(1, F_GETFD)                     = 0
fcntl64(11, F_SETFD, FD_CLOEXEC)        = 0
dup2(3, 1)                              = 1
close(3)                                = 0
open("c", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 3
fcntl64(1, F_GETFD)                     = 0
fcntl64(1, F_DUPFD, 10)                 = 12
fcntl64(1, F_GETFD)                     = 0
fcntl64(12, F_SETFD, FD_CLOEXEC)        = 0
dup2(3, 1)                              = 1
close(3)

我通常使用创建空文件。它通常被转换为更新时间戳的实用程序,但如果不存在命名文件,它也将创建命名文件。

如果不存在,您可以使用触摸创建空文件。否则,你所做的一切都是正确的

>file1 >file2 

触摸的替代方法是使用可用于截断现有文件的

dd if=/dev/null of=moo count=0

有一件事你不能用
做,那就是像
>文件{0..9}
>文件{foo,bar,baz}
。但是,如果您的系统具有
truncate
,则可以执行以下操作:

truncate --size 0 file{0..9}
truncate --size 0 file{foo,bar,baz}
通过对
--size
使用不同的参数,您可以缩小或扩展文件,但它不会首先清空文件,除非您对大小使用
0
(例如,在两个过程中的第一个过程中)。扩展文件用空值填充