将$PATH显示为列表



如何像这样显示来自$PATH的所有路径?

Path 1: usr/bin
Path 2: /bin
... and so on.

我对此很陌生,所以我不知道如何处理 grep 以及如何像这样显示它。提前感谢

我不太确定你为什么要这个? tr可以翻译字符:

$ echo "$PATH" | tr ':' $'n'
/usr/bin
/bin
...

tr 会将 SET1 ( : ) 转换为 SET2 (换行符)

或者,您可以使用AWK将其格式化得更好一点:

$ awk '{ print "Path: "NR, $0 }' RS=: <<< "$PATH"
Path 1: /usr/bin
Path 2: /bin
...

在 shell 脚本中,您可以执行以下操作:

#!/bin/bash
IFS=':' read -ra ITEMS <<< "$PATH"
for i in "${ITEMS[@]}"; do
    echo "$i"
done

这将在单独的行上打印出列表中的每个单独的 PATH 设置。

如果你想用它做其他事情,你只需更改for循环中的命令。

有点尴尬的解决方案:

awk 'BEGIN{RS=":"}{printf "Path %d: %sn",++i,$0}' <<<"$PATH"

输出

Path 1: /home/ssam/bin
Path 2: /usr/local/sbin
Path 3: /usr/local/bin
Path 4: /usr/sbin
Path 5: /usr/bin
Path 6: /sbin
Path 7: /bin
Path 8: /usr/games
Path 9: /usr/local/games
Path 10: /dingo/mingo

笔记:

  1. 这里的字符串或<<<仅由 [ 几个] shell 支持。
  2. 我的 GNU bash 版本是 4.3.11,其中支持 <<<
你可以

像这样使用awk

$ awk -F: '{
  for (i = 0; ++i <= NF;)
    print "Path", i,":", $i
  }' <<<$PATH
Path 1 : /usr/local/sbin
Path 2 : /usr/local/bin
Path 3 : /usr/sbin
Path 4 : /usr/bin
Path 5 : /sbin
Path 6 : /bin
Path 7 : /usr/games
Path 8 : /usr/local/games
Path 9 : /snap/bin

如果你想使用PYTHON你可以这样尝试,

$ python -c "import os; print 'n'.join(os.environ['PATH'].split(':'))"
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
/snap/bin

相关内容

  • 没有找到相关文章

最新更新