检查$ 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
答案 0 :(得分:1)
尝试以下代码:
echo $PATH | sed 's|:|\
|g'
sed是一个流编辑器,它的作用是搜索字符':'的每个实例并将其替换为\ newline字符。 “ g”是一个标志,指示“查找和替换”是全局的(默认值是每行替换一个实例)。
您还可以将代码包装在bash配置文件中的函数周围:
function printpath() {
echo $PATH | sed 's|:|\
|g'
}
因此您只需键入printpath
即可获得所需的输出。
答案 1 :(得分:1)
使用tr
:
echo $PATH | tr : '\n'
答案 2 :(得分:0)
要打印出$ PATH变量行,可以在bash中使用for循环。一个容易实现这一目标的例子是。
for EACH in $PATH; do echo $EACH; done;
答案 3 :(得分:0)
您还可以使用以下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
这一次您将:
定义为记录分隔符,并直接打印每一行。
答案 4 :(得分:0)
echo -e ${PATH//:/\\n}
使用变量替换用换行符替换冒号
<块引用>${var//模式/替换}
<块引用>-e 启用反斜杠转义解释
如果 -e 有效,则识别以下序列:
\\反斜杠