печатать $ PATH построчно - PullRequest
2 голосов
/ 05 марта 2019

Обычный код для проверки переменной $ 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

Ответы [ 4 ]

1 голос
/ 05 марта 2019

Использование tr:

echo $PATH | tr : '\n'
1 голос
/ 05 марта 2019

Попробуйте этот код:

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

sed - это потоковый редактор, и здесь он ищет каждый экземпляр символа ':' и заменяет его символом \ newline.'g' - флаг, указывающий, что поиск и замена являются глобальными (по умолчанию заменяется один экземпляр на строку).

Вы также можете обернуть код вокруг функции в профиле bash:

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

, поэтому вы можете просто набрать printpath, чтобы получить желаемый результат.

0 голосов
/ 06 марта 2019

Вы также можете использовать один из следующих 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

На этот раз вы определяете : как разделитель записей и печатаете непосредственно каждую строку.

0 голосов
/ 05 марта 2019

Для вывода строки переменной $ PATH для строки вы можете использовать цикл for в bash.Примером, который легко достигнуть этого, является.

for EACH in $PATH; do echo $EACH; done;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...