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_Unix_Cut - Fatal编程技术网

Linux 剪切删除我的文件的所有内容

Linux 剪切删除我的文件的所有内容,linux,shell,unix,cut,Linux,Shell,Unix,Cut,当我在linux中使用cut命令并将输出重定向到同一个文件时,它似乎删除了文件的内容。我正在做的是: cut -d " " -f 1 file1.txt > file1.txt 我的目标是从文件中删除除第一列以外的所有列,并保存对正在使用的文件所做的更改。但当我这样做,打开我的文件,我留下了一个空白文件。但是,当我指定一个不同的文件时,该命令似乎工作得非常好 当我跑步时: cut{some command}FILE1.txt>FILE2.txt 这似乎很有效 是否有一种方法可以指定希望

当我在linux中使用
cut
命令并将输出重定向到同一个文件时,它似乎删除了文件的内容。我正在做的是:

cut -d " " -f 1 file1.txt > file1.txt 
我的目标是从文件中删除除第一列以外的所有列,并保存对正在使用的文件所做的更改。但当我这样做,打开我的文件,我留下了一个空白文件。但是,当我指定一个不同的文件时,该命令似乎工作得非常好

当我跑步时:

cut{some command}FILE1.txt>FILE2.txt

这似乎很有效


是否有一种方法可以指定希望将
cut
命令中的更改覆盖到当前工作文件中

创建带有所需更改的临时文件,然后将其重命名为目标文件名:

cut -d " " -f 1 file1.txt > file1.txt.temp
mv file1.txt.temp file1.txt

在执行
切割之前,外壳必须分叉并打开
stdin
stdout
。毫不奇怪,打开文件进行覆盖(在文件被
dup2
'd复制到
stdout
之前)会删除所有内容。这发生在
cut
读取其
stdin
之前