![如何显示 $PATH 中列出的所有目录](https://linux22.com/image/174153/%E5%A6%82%E4%BD%95%E6%98%BE%E7%A4%BA%20%24PATH%20%E4%B8%AD%E5%88%97%E5%87%BA%E7%9A%84%E6%89%80%E6%9C%89%E7%9B%AE%E5%BD%95.png)
如何显示 中列出的所有目录$PATH
?
答案1
printf '%s' "$PATH" | tr ':' '\n'
使用该tr
命令,因为暗示在里面问题的原始版本建议使用它。
答案2
假设(并且还假设您知道如何使用或bash
显示 shell 变量的值)echo
printf
printf "${PATH//:/\\n}"
这利用了 shell 内的参数扩展。扩展本身就是${parameter/pattern/string}
参数PATH
、/:
模式和\\n
(替换)字符串。模式中的前导指示应该对所有出现的inside/
进行替换。:
PATH
答案3
如果您的意思是列出它们的内容,那么在 POSIX shell 中,您可以执行以下操作:
(IFS=:; set -o noglob; ls -Hl -- $PATH)
假设$PATH
没有空(对于当前目录)组件。
有了fish
shell,那就是:
ls -Hl -- $PATH
(将环境变量fish
转换PATH
为 shell 数组变量,其中空组件更改为.
)。
和(t)csh
:
ls -Hl -- $path:q
($PATH
是映射的到$path
那里的数组,并将空字符串转换为.
)。
在zsh
,也$PATH
映射到一个数组,但空组件没有更改为,所以你需要类似的东西:$path
.
ls -Hl -- "${path[@]/#%/.}"
手动进行转换。
如果您想要的只是每行输出这些路径,而不是列出相应目录的内容,那么只需替换ls -Hl --
为printf '%s\n'
.
答案4
这里是:
echo $PATH | sed 's/:/\n/g'
编辑:如果你想显示内容
ls `echo $PATH | sed 's/:/\n/g'`