Voici le code que je souhaite déchiffrer:
w | cut -d " " -f 1 - | grep -v USER | sort -u
Réponse
w | cut -d " " -f 1 - | grep -v USER | sort -u
La commande w
affiche les utilisateurs connectés avec quelques informations supplémentaires:
$ w 12:59:25 up 50 days, 21:45, 4 users, load average: 1.02, 1.03, 1.01 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT bill pts/12 xxx.xxx.xxx.xxx 12:55 0.00s 0.03s 0.03s tmux bill pts/14 tmux(64415).%0 12:55 0.00s 0.05s 0.03s w dave pts/18 yyy.yyy.yyy.yyy Wed09 23:52m 1:15 1:07 vim clear_snapshots.pl dave pts/2 yyy.yyy.yyy.yyy Tue14 23:48m 3.65s 3.65s -bash
La commande cut -d " " -f 1 -
en extrait la première colonne séparée par des espaces (la -
à la fin peut être supprimé):
$ w | cut -d " " -f 1 USER bill bill dave dave
grep -v USER
supprime toutes les lignes contenant la chaîne USER
:
$ w | cut -d " " -f 1 | grep -v USER bill bill dave dave
sort -u
trie son entrée lexicographiquement et supprime les lignes en double:
$ w | cut -d " " -f 1 | grep -v USER | sort -u bill dave
Je suppose quil essaie de lister les noms dutilisateur des utilisateurs actuellement connectés , sous forme de liste triée.
Une manière plus simple de le faire est dutiliser simplement la commande users
. users
affichera tous les utilisateurs connectés sur une seule ligne, mais vous pouvez le diriger via tr " " "\n"
et sort -u
pour obtenir un utilisateur par ligne:
users | tr " " "\n" | sort -u
Cela ne dépend pas non plus du format produit par w
(lheure sur la première ligne de la sortie w
peut ou non faire partie de la sortie de votre pipeline selon que lheure actuelle est à un ou deux chiffres, selon sur quelle mise en œuvre de w
vous « utilisez).