检查$ PATH变量echo $PATH
的常用代码经常打印出一些冗长而繁琐的行,如:/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
它的可读性差。有什么办法可以逐行打印所有路径而不是一行吗?像这样:
/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
使用tr
:
echo $PATH | tr : '\n'
试试这段代码:
echo $PATH | sed 's|:|\
|g'
sed是一个流编辑器,它在这里做的是搜索字符':'的每个实例,并用\ newline字符替换它。 'g'是一个标志,指示查找和替换是全局的(默认是每行替换一个实例)。
您还可以在bash_profile中的函数周围包装代码:
function printpath() {
echo $PATH | sed 's|:|\
|g'
}
所以你可以输入printpath
来获得所需的输出。
要打印出行的$ PATH变量行,可以在bash中使用for循环。一个容易实现这一点的例子是。
for EACH in $PATH; do echo $EACH; done;
您还可以使用以下awk
方法之一:
echo $PATH | awk -F':' '{for(i=1;i<=NF;i++)print $i}'
输出:
/usr/local/git/current/bin
/usr/local/bin
/usr/bin
/bin
/usr/local/sbin
/usr/sbin
/sbin
/usr/local/go/bin
将:
定义为字段分隔符并在行上打印所有字段的位置。如果您不介意最后是否有空行,您可以使用更简单的命令:
$ 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
这次您将:
定义为记录分隔符,并直接打印每一行。