zsh: =() 替换为可执行权限

zsh: =() 替换为可执行权限

我需要为该命令提供一个可执行文件:

aria2c “some-url” —on-download-complete =(echo “!#/usr/bin/env bash
 touch success”)

这可能吗?如果没有,我可以实现一些辅助函数来使类似的事情成为可能吗?

答案1

临时文件不可执行,

% stat -f '%Sp' =(echo echo echo)             
-rw-------

所以需要以某种方式标记为这样

#!/usr/bin/env zsh

TMPPREFIX=/because/tmp/is/mounted/noexec/on/my/system/tmp/zsh

fakearia () { $1 }

() {
   chmod +x $1
   fakearia $1
} =(<<EOF
#!/bin/sh
echo echo
EOF
)

这里通过一个匿名函数,这也有助于更好地确定临时文件的范围,并允许在文件名上执行任意数量的命令。

相关内容