如果文件存在,则将外壳中的输出重定向到另一个文件

Sou*_*abh 1 unix linux shell redirect

我正在使用以下命令将输出重定向到另一个文件。

ls -l >>foo.txt
Run Code Online (Sandbox Code Playgroud)

此命令会将输出附加ls -l到foo.txt。如果该文件不存在,它将创建一个新文件foo.txt并将输出重定向到新的foo.txt。

现在,只有在文件已经存在的情况下,才可以将文件的输出重定向/追加ls -l到文件中,否则它将无法重定向输出或将其丢弃

就我而言,如果foo.txt已经存在,它将输出附加到foo.txt,否则它将丢弃输出。

有命令执行此操作吗?

Rom*_*aka 5

ls -l |
    if [ -f "$file" ]
        then cat >> "$file"
        else cat # or whatever you want to do with the output
    fi
Run Code Online (Sandbox Code Playgroud)

请注意,该操作不是原子操作:可以在检查文件存在之后以及打开将其打开以进行写入之前取消链接。