显示$ PATH作为列表

我如何显示$ PATH这样的所有path?

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

我很新,所以我不知道如何处理grep,以及如何显示它。 Thx提前

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

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

tr将SET1(:)转换成SET2(换行符)

另外,你可以使用AWK来更好地格式化它:

 % awk 'BEGIN{RS=":"}{printf "Path %d: %s\n", NR, $0}' <<< "$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: %s\n",++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. Herestrings或<<<仅由少数炮弹支持。
  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