Arrays zsh将目录拆分为数组
我正在尝试获取一个数组,其中包含zsh中完整的当前目录路径。我目前正在使用Arrays zsh将目录拆分为数组,arrays,zsh,Arrays,Zsh,我正在尝试获取一个数组,其中包含zsh中完整的当前目录路径。我目前正在使用 local pwd="${PWD/#$HOME/~}" pwd_list=(${(s:/:)pwd}) 除了一个问题外,它还将起始/视为目录拆分。我希望我的数组是 / usr 解放党 php 而不是 usr 解放党 php 我可以看到两种方法,但我不知道如何在zsh中做到这一点。第一个想法是简单地做一个推送,并在拆分后将新元素强制到开头 第二种方法是在解析时更改拆分以忽略第一个/时 我如何解决这个问题,以最小的开销在数
local pwd="${PWD/#$HOME/~}"
pwd_list=(${(s:/:)pwd})
除了一个问题外,它还将起始/视为目录拆分。我希望我的数组是
/
usr
解放党
php
而不是
usr
解放党
php
我可以看到两种方法,但我不知道如何在zsh中做到这一点。第一个想法是简单地做一个推送,并在拆分后将新元素强制到开头
第二种方法是在解析时更改拆分以忽略第一个/时
我如何解决这个问题,以最小的开销在数组中获得准确的目录路径?您真的需要第一个路径吗?假设您正在使用一个脚本来使用结果,您就不能从这里开始吗 无论如何。。。这是你想要的吗
local pwd="${PWD/#$HOME/~}"
pwd_list=(${(s:/:)pwd})
pwd_list=('/' $pwd_list)
你真的需要第一个吗?假设您正在使用一个脚本来使用结果,您就不能从这里开始吗 无论如何。。。这是你想要的吗
local pwd="${PWD/#$HOME/~}"
pwd_list=(${(s:/:)pwd})
pwd_list=('/' $pwd_list)
我认为你的想法有点错误。如果在/上拆分/usr/lib/php,应该得到四个元素,其中第一个是空字符串。如果将这些数组元素与/重新连接在一起,则得到原始路径。试着去想/的第一个要素意味着你对待分裂的方式不一致,这会让其他事情变得更加困难 所以问题是你只得到了三个元素而不是四个:第一个空元素被删除了。您可以通过引用以下内容来解决此问题:
local pwd="${PWD/#$HOME/~}"
pwd_list=( "${(s:/:)pwd}" )
外圆括号旁边的额外空间是不必要的,但它使它更容易阅读。您甚至可以将其组合到一个表达式中:
pwd_list=( "${(s:/:)${PWD/#$HOME/~}}" )
我认为你的想法有点错误。如果在/上拆分/usr/lib/php,应该得到四个元素,其中第一个是空字符串。如果将这些数组元素与/重新连接在一起,则得到原始路径。试着去想/的第一个要素意味着你对待分裂的方式不一致,这会让其他事情变得更加困难 所以问题是你只得到了三个元素而不是四个:第一个空元素被删除了。您可以通过引用以下内容来解决此问题:
local pwd="${PWD/#$HOME/~}"
pwd_list=( "${(s:/:)pwd}" )
外圆括号旁边的额外空间是不必要的,但它使它更容易阅读。您甚至可以将其组合到一个表达式中:
pwd_list=( "${(s:/:)${PWD/#$HOME/~}}" )
抱歉耽搁了,我没有收到通知,奇怪。我之所以希望这样做,是因为我正在使用数组来运行脚本,一些用于解析目录路径,另一些用于向用户显示数据。不幸的是,如果发生$HOME to-~替换,这将导致错误的结果:结果将是/~foo bar。很抱歉,我没有收到通知,很奇怪。我之所以希望这样做,是因为我正在使用数组来运行脚本,一些用于解析目录路径,另一些用于向用户显示数据。不幸的是,如果发生$HOME to-~替换,这将导致错误:结果将是/~foo bar。