我试图使用tee命令将输出重定向到一个文件,我想在一个目录是尚未创建要创建的文件。
date | tee new_dir/new_file
当NEW_DIR是不存在的,tee命令失败说
三通:NEW_DIR / NEW_FILE:没有这样的文件或目录
如果我创建运行tee命令之前NEW_DIR,那么它工作正常,但由于某些原因,我不想手动创建NEW_DIR,是有可能创造与tee命令的NEW_DIR?
我试图使用tee命令将输出重定向到一个文件,我想在一个目录是尚未创建要创建的文件。
date | tee new_dir/new_file
当NEW_DIR是不存在的,tee命令失败说
三通:NEW_DIR / NEW_FILE:没有这样的文件或目录
如果我创建运行tee命令之前NEW_DIR,那么它工作正常,但由于某些原因,我不想手动创建NEW_DIR,是有可能创造与tee命令的NEW_DIR?
不,你必须运行之前创建的目录tee
。
更换tee
与为您创建的目录功能:
tee() { mkdir -p ${1%/*} && command tee "$@"; }
如果你想要的功能时用一个简单的文件名调用工作:
tee() { if test "$1" != "${1%/*}"; then mkdir -p ${1%/*}; fi &&
command tee "$1"; }
mkdir ./new_dir && date | tee ./new_dir/new_file
既然是tee
命令,这两者同时写入new_file
和stdout
嗯......一些实验后,我发现了一些有趣的事情。
首先,让我们试着去触摸一些文件:
touch ~/.lein/profiles.clj
它工作正常。 但是,让我们使用同样的事情报价:
touch "~/.lein/profiles.clj" # => touch: cannot touch ‘~/.lein/profiles.clj’: No such file or directory
所以,我的bash函数:
append_to_file() {
echo $2 | tee -a $1
}
之后,我从它改变了通话:
append_to_file '~/.lein/projects.clj' '{:user {:plugins [[lein-exec "0.3.1"]]}}'
它(不带引号的第一个参数):
append_to_file ~/.lein/projects.clj '{:users {:plugins [[lein-exec "0.3.1"]]}}'
一切都很好。
UPDATE
这种情况下,考虑.lein
为现有的目录。