如何将 $PATH 显示为每行一个目录?

如何将 $PATH 显示为每行一个目录?

我不知道如何$PATH单独列出各个路径,以便它们看起来像这样:

/bin
/usr/bin
/usr/local/bin

如何才能做到这一点?

答案1

您可以使用以下任一命令来执行此操作,该命令会将所有出现的 替换为:新行\n

sed

$ sed 's/:/\n/g' <<< "$PATH"

tr

$ tr ':' '\n' <<< "$PATH"

python

$ python -c 'import sys;print(sys.argv[1].replace(":","\n"))' "$PATH"

答案2

使用 bash 的参数扩展

echo "${PATH//:/$'\n'}"

这将用换行符 ( ) 替换:中的所有内容并打印结果。 的内容保持不变。 如果只想替换第一个,请删除第二个斜杠:$PATH\n$PATH
:echo -e "${PATH/:/\n}"

答案3

使用 IFS:

(set -f; IFS=:; printf "%s\n" $PATH)

IFS保存 bash 进行拆分的字符,因此IFSwith使 bash拆分:的扩展。循环遍历格式字符串中的参数,直到参数用尽。我们需要禁用通配符扩展,这样PATH 目录名称中的通配符就不会被扩展。$PATH:printfset -f

答案4

可能唯一没有被提及的方法就是我多年来一直使用的方法:

echo $PATH | tr ":" "\n"

因此,在您的 .profile 或 .bash_profile 或其他文件中,您可以添加:

alias path='echo $PATH | tr ":" "\n"'

相关内容