用于编码完整文件路径的 zsh 脚本

zsh script to encode full file path

我希望能够对路径进行编码以用作 url,即将空格更改为 %20。我找到了这个进行编码的函数:

urlencode() {
   setopt localoptions extendedglob
   input=( ${(s::)1} )
   print ${(j::)input/(#b)([^A-Za-z0-9_.\!~*\'\(\)-    ])/%${(l:2::0:)$(([##16]#match))}}
}

并且希望能够通过这样的结果:

print -l $PWD/* | tail -1 

到function.i.e 获取文件列表中的最后一个完整路径并对其进行编码。

我认为是这样的:

print -l $PWD/* | tail -1 | urlencode

print -l $PWD/* | tail -1 > urlencode

会起作用,但它们不起作用。

有谁知道如何实现吗?

非常感谢

您需要从 stdin 而不是第一个参数中获取输入。

这是调整函数以执行此操作的一种方法

urlencode() {
   setopt localoptions extendedglob
   stdin=`while read line; do echo $line ;done`
   input=( ${(s::)stdin} )
   print ${(j::)input/(#b)([^A-Za-z0-9_.\!~*\'\(\)-    ])/%${(l:2::0:)$(([##16]#match))}}
}

我在我的终端上测试过,它有效