Linux 生成空白文件
我想清空3个文件或生成它们,如果它们不存在。以下命令正确吗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
> 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
(例如,在两个过程中的第一个过程中)。扩展文件用空值填充