生成空白文件

时间:2010-08-20 05:04:12

标签: linux shell

我想清空3个文件或生成它们(如果它们不存在)。以下命令是否正确?

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

还是有更好的方法吗?

5 个答案:

答案 0 :(得分:3)

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

>file1 >file2 

答案 1 :(得分:1)

不,不是来自shell。读取生成的系统会调用它,对于内置的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)

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

>无法做到的一件事就像>file{0..9}>file{foo,bar,baz}。但是,如果您的系统有truncate,则可以执行此操作:

truncate --size 0 file{0..9}
truncate --size 0 file{foo,bar,baz}

通过使用--size的不同参数,您可以缩小或扩展文件,但除非您使用0作为大小,否则它不会先将其清空(例如,在两次传递的第一个中) )。扩展文件用空值填充。

相关问题