当我使用>> nonexistent/file.log
时。 Bash给了我“没有这样的文件或目录”。
如何将STDOUT / STDERR重定向到日志文件,即使它不存在?如果它不存在,则必须创建必要的文件夹和文件。
答案 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.