我想从中提取所有bin
目录PATH
并将其设置为变量。我很困惑,因为所有目录都出现在一行中,:
但我只想要这些目录bin
。
/home/jo52900/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/opt/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin:/local/bin:/opt/universal/ucmdmgr/bin
我该怎么做?
我想从中提取所有bin
目录PATH
并将其设置为变量。我很困惑,因为所有目录都出现在一行中,:
但我只想要这些目录bin
。
/home/jo52900/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/opt/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin:/local/bin:/opt/universal/ucmdmgr/bin
我该怎么做?
另一种方法是要求外壳拆分
$PATH
:您可以根据需要对其进行后期处理
grep
。我不知道您为什么要
bin
特别对待目录,我猜您只是想在自己的行上查看每个目录。如果是这样,你可以这样做:例如,在我的系统上,我有许多
$PATH
名称不包含的目录bin
,这给出:如果您真的只想查看
bin
目录,可以提取它们:或者,如果您想做您在答案中显示的内容,并且还包括
bin
在其名称中的任何位置包含字符串的任何目录,而不仅仅是那些实际命名bin
的目录,您可以执行以下操作:我找到了解决方案
假设您使用的是 zsh:
该
path
变量是一个数组,它会自动与PATH
.print -lr
每行打印一个元素而不进行反斜杠解释¹。如果您需要其他一些没有绑定数组的冒号分隔列表,则可以通过参数扩展标志显式进行拆分。
我不知道您所说的“bin 目录”是什么意思。您可以使用 grep 进行过滤,例如
或使用参数扩展功能,例如
¹对于挑剔者:这假定列表不为空并且第一个元素不以
-
. 这是一个安全的选择$path
。