使用tee命令重定向输出到一个文件中不存在的目录(use tee command to redire

2019-08-06 04:02发布

我试图使用tee命令将输出重定向到一个文件,我想在一个目录是尚未创建要创建的文件。

date | tee new_dir/new_file

当NEW_DIR是不存在的,tee命令失败说

三通:NEW_DIR / NEW_FILE:没有这样的文件或目录

如果我创建运行tee命令之前NEW_DIR,那么它工作正常,但由于某些原因,我不想手动创建NEW_DIR,是有可能创造与tee命令的NEW_DIR?

Answer 1:

不,你必须运行之前创建的目录tee



Answer 2:

更换tee与为您创建的目录功能:

tee() { mkdir -p ${1%/*} && command tee "$@"; }

如果你想要的功能时用一个简单的文件名调用工作:

tee() { if test "$1" != "${1%/*}"; then mkdir -p ${1%/*}; fi &&
   command tee "$1"; }


Answer 3:

mkdir ./new_dir && date | tee ./new_dir/new_file

既然是tee命令,这两者同时写入new_filestdout



Answer 4:

嗯......一些实验后,我发现了一些有趣的事情。

首先,让我们试着去触摸一些文件:

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为现有的目录。



文章来源: use tee command to redirect output to a file in a non-existent dir