Linux

Zsh: =() 替換為可執行權限

  • December 16, 2018

我需要給這個命令一個執行檔:

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

這可能嗎?如果沒有,我可以實現一些輔助函式來使類似的事情成為可能嗎?

臨時文件不可執行,

% 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
)

這里通過一個匿名函式,這也有助於更好地確定臨時文件的範圍,並允許在文件名上發生任意數量的命令。

引用自:https://unix.stackexchange.com/questions/489366