zsh:重定向到临时文件的全局别名

zsh: global alias to redirect to temporary file

我想在 zsh 中添加一个全局别名,它看起来像这样:

alias -g t='> tmp-$(date +%Y%m%d-%h%m%s).txt'

它应该做的是在当前目录中创建一个新的时间戳临时文件并将输出重定向到该文件。但是,文件名是在获取 zsh 而不是调用别名时评估的。

我想我需要的是某种懒惰的评估。有办法实现吗?

好吧,我想办法了。参与程度超出我的预期:

function redirect-to-tmp() {
  TMPFILE="./tmp-$(date +%y%m%d-%H%M%S)"
  cat >>! $TMPFILE
  echo "Redirected to $TMPFILE"
}

function redirect-to-tee() {
  TMPFILE="./tmp-$(date +%y%m%d-%H%M%S)"
  tee -a $TMPFILE
  echo "Redirected to $TMPFILE"
}

alias -g t='| redirect-to-tmp'
alias -g T='| redirect-to-tee'

如果其他人有更好的答案,请告诉我。