我正在尝试在zsh中获取包含完整当前目录路径的数组。我正在使用
local pwd="${PWD/#$HOME/~}"
pwd_list=(${(s:/:)pwd})
除了一个问题之外,它还可以处理启动/作为目录拆分。我希望我的数组像
而不是
我可以看到两种方法,但我不知道如何在zsh中做。第一个想法是简单地做一个推动并强制一个新的元素到开头(分裂后)。
第二种方法是改变拆分以忽略第一次/解析时。
如何解决此问题以获得精确的目录路径,并将最小的开销转换为数组?
答案 0 :(得分:3)
你真的需要第一个/
吗?假设您正在使用脚本来使用该结果,那么您只能cd /
从那里开始吗?
无论如何......这就是你想要的吗?
local pwd="${PWD/#$HOME/~}"
pwd_list=(${(s:/:)pwd})
pwd_list=('/' $pwd_list)
答案 1 :(得分:0)
我认为您在想的有点错。如果在“ /”上分割“ / usr / lib / php”,则应该得到四个元素,第一个是空字符串。如果将这些数组元素与“ /”重新连接在一起,则会获得原始路径。尝试想到“ /”的第一个元素意味着您对不一致的处理方式不一致,这会使其他所有操作变得更加困难。
所以问题确实是,您只得到三个元素,而不是四个:空的第一个元素被删除。您可以通过引用来解决此问题,例如:
local pwd="${PWD/#$HOME/~}"
pwd_list=( "${(s:/:)pwd}" )
(外圆括号旁边的多余空格不是必需的,但是它使它易于阅读。)您甚至可以将其组合为一个表达式:
pwd_list=( "${(s:/:)${PWD/#$HOME/~}}" )