Lors de mes recherches sur Internet, j'ai trouvé la commande suivante comme solution pour trouver le nom de processus d'une fenêtre:
xprop _NET_WM_PID | sed 's/_NET_WM_PID(CARDINAL) = //' | ps `cat`
Je ne comprends tout simplement pas ce qui se passe ici après le premier |
.
Supposons que xprop _NET_WM_PID
génère 1000
en tant qu'ID de processus. Qu'est-ce qui se passe ensuite? Pourquoi avons-nous une cat
après ps
? Je suis un peu confus.
xprop ... | sed ...
est exécuté en premier, puis cat
lit sa sortie. En raison de l'utilisation de backticks, la sortie de cat est substituée dans ps `cat`
de telle sorte que la commande devienne ps 1000
.
Une autre commande aboutissant au même résultat est la suivante:
ps $(xprop _NET_WM_PID | cut -d= -f2)
Cela fonctionne comme suit:
Exécutez xprop _NET_WM_PID
pour récupérer l'ID de processus d'une fenêtre. Après avoir cliqué sur une fenêtre, il affiche quelque chose comme:
_NET_WM_PID(CARDINAL) = 12345
=
et prendre le deuxième champ. cut -d= -f2
prend la chaîne _NET_WM_PID(CARDINAL) = 12345
de l'entrée standard et écrit 12345
sur la sortie standard.ps
avec $(...)
substitué à la sortie de ...
, la commande exécutée est ps 12345
. (note latérale: `...`
peut également être utilisé à la place de $(...)
, bien que il existe quelques différences )