用于编码完整文件路径的 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))}}
}
我在我的终端上测试过,它有效
我希望能够对路径进行编码以用作 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))}}
}
我在我的终端上测试过,它有效