当我使用>> 不存在的 /file.log
时,Bash 返回“没有这样的文件或目录”。
如何制作一个一行命令,将 STDOUT/STDERR 重定向到日志文件中,即使它不存在?如果它不存在,它必须创建必要的文件夹和文件。
使用install
命令:
command | install -D /dev/stdin nonexistent/file.log
或使用。mkdir nonexistent
首先。
/dev/stdin
对于一些只从磁盘文件读取但需要通过管道读取的命令确实非常有用。 - CMCDragonkaidirname
获取文件的基本路径,之后与mkdir -p
一起使用。之后可以进行重定向:
sh
mkdir -p `dirname nonexistent/file.log`
echo blah >> nonexistent/file.log
如果这个操作会被多次运行,那么只有在第一次运行时目录才会缺失,建议在开始使用 expect 命令前先检查它是否存在。
if [ ! -d ~/nonexistent ]
then mkdir ~/nonexistent
fi
然后使用其他示例中发布的命令scp将您使用ls
创建的结果文件简单地传输回新创建的目录中的主机。
mkdir -p
会为您执行该检查。 - Stefan HaberlFILEPATH="/folder1/folder2/myfile.txt"
if [ ! -f "$FILEPATH" ]; then
mkdir -p "$FILEPATH"
rm -r "$FILEPATH"
fi
#/folder1/folder2 has now been created.
mkdir -p
命令。 - Chris Hayes