Shell 逐行打印$PATH

Shell 逐行打印$PATH,shell,sed,path,Shell,Sed,Path,检查$PATH变量echo$PATH的常用代码通常会打印出一些冗长的行,如: /anaconda2/bin:/anaconda2/condabin:/usr/local/cillar/root/6.16.00/bin:~/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/opt/X11/bin 它的可读性很差。有没有办法把所有的路径一行一行地打印出来?像这样: /anaconda2/bin /anacond

检查$PATH变量
echo$PATH
的常用代码通常会打印出一些冗长的行,如:
/anaconda2/bin:/anaconda2/condabin:/usr/local/cillar/root/6.16.00/bin:~/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/opt/X11/bin

它的可读性很差。有没有办法把所有的路径一行一行地打印出来?像这样:

/anaconda2/bin
/anaconda2/condabin
/usr/local/Cellar/root/6.16.00/bin
~/bin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
/Library/TeX/texbin
/opt/X11/bin
请尝试以下代码:

echo $PATH | sed 's|:|\
|g'
sed是一个流编辑器,它在这里所做的是搜索字符“:”的每个实例,并用\newline字符替换它g'是一个标志,指示查找和替换是全局的(默认情况下,每行替换一个实例)

您还可以在bash概要文件中围绕函数包装代码:

function printpath() {
  echo $PATH | sed 's|:|\
|g'
}

因此,只需键入
printpath
即可获得所需的输出。

要打印$PATH变量line for line,可以在bash中使用for循环。一个容易实现的例子是

for EACH in $PATH; do echo $EACH; done;
使用
tr

echo $PATH | tr : '\n'

您还可以使用以下
awk
方法之一:

echo $PATH | awk -F':' '{for(i=1;i<=NF;i++)print $i}'
定义为字段分隔符,并打印行中的所有字段。 如果您不介意末尾是否有空行,可以使用更简单的命令:

$ echo $PATH | awk 'BEGIN{RS=":"}1'
/usr/local/git/current/bin
/usr/local/bin
/usr/bin
/bin
/usr/local/sbin
/usr/sbin
/sbin
/usr/local/go/bin
这次您将
定义为记录分隔符,并直接打印每一行

echo -e ${PATH//:/\\n}
使用变量替换将冒号替换为换行符

${var//Pattern/Replacement}

-e启用反斜杠转义的解释

如果-e有效,则识别以下序列:

\\反斜杠


它不会以换行方式打印路径。
echo -e ${PATH//:/\\n}