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).

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *