4
votes

imprimer le $ PATH ligne par ligne

Le code habituel pour vérifier la variable $ PATH echo $ PATH affiche souvent une ligne longue et encombrante comme: /anaconda2/bin:/anaconda2/condabin:/usr/local/Cellar/root/6.16.00/bin:~/bin:/usr/local/bin:/usr/bin:/bin:/usr/ sbin: / sbin: / Bibliothèque / TeX / texbin: / opt / X11 / bin
qui a une mauvaise lisibilité. Est-il possible d'imprimer tous les chemins ligne par ligne à la place sur une seule ligne? Comme ceci:

/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 commentaires

4 Réponses :


2
votes

Essayez ce code:

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

sed est un éditeur de flux, et ce qu'il fait ici est de rechercher chaque instance du caractère ':' et de le remplacer par un caractère \ newline. 'g' est un indicateur indiquant que la recherche et le remplacement sont globaux (la valeur par défaut est de remplacer une instance par ligne).

Vous pouvez également enrouler le code autour d'une fonction dans le profil bash:

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

donc vous pouvez simplement taper printpath pour obtenir la sortie souhaitée.


0 commentaires

0
votes

Pour imprimer la ligne variable $ PATH pour la ligne, vous pouvez utiliser une boucle for dans bash. Un exemple qui permet d'y parvenir facilement est.

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


1 commentaires

Il n'imprime pas les chemins dans les nouvelles lignes.



4
votes

Utilisation de tr :

echo $PATH | tr : '\n'


0 commentaires

0
votes

Vous pouvez également utiliser l'une des méthodes awk suivantes:

$ 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

sortie:

/usr/local/git/current/bin
/usr/local/bin
/usr/bin
/bin
/usr/local/sbin
/usr/sbin
/sbin
/usr/local/go/bin


0 commentaires