# [SHELL] savoir où est installé un processus



## Clarusad (13 Mars 2014)

Bonjour,

J'aimerais savoir si il existe une commande (ou un ensemble de commandes) qui me retournerait le chemin d'une application.
Par exemple, pour ce qui est de Safari, je sais qu'il se trouve là :
	
	



```
/Applications/Safari.app/
```

Maintenant, imaginons que j'ai *DEUX* applications Safari dont la seconde se trouverait ici :
	
	



```
/Users/foo/Applications/Safari.app/
```

Est-ce que le terminal peut me dire laquelle des deux est lancée ?

Merci bien.


----------



## ntx (13 Mars 2014)

> ps -aef | grep Safari


La dernière colonne te donne le chemin.


----------



## Clarusad (13 Mars 2014)

Super, ça m'a mis sur la bonne voie pour trouver la solution à mon problème qui est plus complexe.
Il s'agit de savoir d'où est lancé l'utilitaire Smart Scroll.
Donc, lorsque j'exécute la commande suivante :
	
	



```
ps -aef | grep Smart\ Scroll
```
Le terminal me retourne les deux lignes suivantes :
	
	



```
501 55492   157   0   0:00.79 ??         0:09.88 /Library/PreferencePanes/Smart Scroll.prefPane/Contents/MacOS/Smart Scroll.app/Contents/MacOS/Smart Scroll -psn_0_25294878
  501 56154 55726   0   0:00.00 ttys000    0:00.00 grep Smart Scroll
```

Moi ce qui m'intéresse, c'est de savoir d'où est lancé cet utilitaire. pour ça, j'ai trouvé cette syntaxe :
	
	



```
ps -aef | grep Smart\ Scroll | awk '{print $8}' | awk '{print $1}' | xargs echo | tr ' ' ' ' | awk '{print $1}'
```
Et la, j'ai ma réponse :
	
	



```
/Library/PreferencePanes/Smart
```
Mais c'est pas joli-joli tout ça ; peut-on la simplifier ?

Merci bien.


----------



## flotow (14 Mars 2014)

```
ps -aef | perl -nle 'print $1 while /\s([\/\w]*\/)Smart\ Scroll/g'
```

et si tu veux rechercher sans te soucier de la casse, tu peux ajouter 'i' (non sensible à la casse) après le /g


```
ps -aef | perl -nle 'print $1 while /\s([\/\w]*\/)smart\ scroll/gi'
```

et si tu veux chercher seulement l'un des deux mots, tu peux utiliser :


```
ps -aef | perl -nle 'print $1 while /\s([\/\w]*\/)[\w\s]*Scroll/g'
```

mais il faut faire attention au mot clé, sinon tu risques de te retrouver avec des résultats bien plus larges que ce que tu espérais (tu peux essayer en remplaçant Scroll par Applications, tu devrais voir ta ligne ainsi que plein d'autres lignes avec uniquement '/'). Disons que c'est valable si tu cherches vraiment un terme spécifique. Pour chercher "ScrollEnabler", "MyScrollTool" et "Smart Scroll" ça va. Mais pour 'Applications", bof bof.


----------

