【问题标题】:print $PATH line by line逐行打印 $PATH
【发布时间】:2019-07-27 01:42:24
【问题描述】:

检查 $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

【问题讨论】:

    标签: shell sed path


    【解决方案1】:

    使用tr

    echo $PATH | tr : '\n'
    

    【讨论】:

      【解决方案2】:

      试试这个代码:

      echo $PATH | sed 's|:|\
      |g'
      

      sed 是一个流编辑器,它在这里所做的是搜索字符 ':' 的每个实例并将其替换为 \newline 字符。 'g' 是一个标志,表明查找和替换是全局的(默认是每行替换一个实例)。

      您还可以将代码包装在 bash 配置文件中的函数周围:

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

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

      【讨论】:

        【解决方案3】:
        echo -e ${PATH//:/\\n}
        

        使用变量替换将冒号替换为换行符

        ${var//模式/替换}

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

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

        \\反斜杠

        【讨论】:

          【解决方案4】:

          您也可以使用以下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
          

          这次您将: 定义为记录分隔符并直接打印每一行。

          【讨论】:

            【解决方案5】:

            要打印出 $PATH 变量 line for line,您可以在 bash 中使用 for 循环。一个很容易做到这一点的例子是。

            for EACH in $PATH; do echo $EACH; done;
            

            【讨论】:

            • 它不会在换行符中打印路径。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-10-07
            • 2017-06-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-08-11
            • 2015-02-27
            相关资源
            最近更新 更多