Bash重定向并附加到不存在的文件/目录

时间:2014-01-10 19:35:13

标签: bash redirect

当我使用>> nonexistent/file.log时。 Bash给了我“没有这样的文件或目录”。

如何将STDOUT / STDERR重定向到日志文件,即使它不存在?如果它不存在,则必须创建必要的文件夹和文件。

4 个答案:

答案 0 :(得分:17)

使用install

command | install -D /dev/stdin nonexistent/file.log

或使用

mkdir nonexistent

第一

答案 1 :(得分:4)

您可以使用dirname获取文件的基本路径,稍后将其与mkdir -p一起使用。之后,您可以进行重定向:

sh mkdir -p `dirname nonexistent/file.log` echo blah >> nonexistent/file.log

答案 2 :(得分:2)

如果多次运行,并且只有第一次丢失目录,可能需要先检查它(在你开始预期之前)

if [ ! -d ~/nonexistent ]
  then mkdir ~/nonexistent
fi

然后使用发布的其他示例简单地将您使用ls创建的结果文件scp回到新创建的目录中的主机框。

答案 3 :(得分:0)

自动生成文件路径的所有目录:

FILEPATH="/folder1/folder2/myfile.txt"
if [ ! -f "$FILEPATH" ]; then
    mkdir -p "$FILEPATH"
    rm -r "$FILEPATH"
fi
#/folder1/folder2 has now been created.