これは私が解読したいコードです:
w | cut -d " " -f 1 - | grep -v USER | sort -u
回答
w | cut -d " " -f 1 - | grep -v USER | sort -u
w
コマンドは、一緒にログオンしているユーザーを表示しますいくつかの追加情報:
$ 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
cut -d " " -f 1 -
コマンドは、このスペースで区切られた最初の列(
は削除できます):
$ w | cut -d " " -f 1 USER bill bill dave dave
grep -v USER
は削除します文字列USER
を含むすべての行:
$ w | cut -d " " -f 1 | grep -v USER bill bill dave dave
sort -u
入力を字句的に並べ替え、重複する行を削除します。
$ w | cut -d " " -f 1 | grep -v USER | sort -u bill dave
現在ログインしているユーザーのユーザー名を一覧表示しようとしていると思います、ソートされたリストとして。
これを行う簡単な方法は、users
コマンドを使用することです。 users
は、ログオンしているすべてのユーザーを1行で出力しますが、tr " " "\n"
とsort -u
1行に1人のユーザーを取得するには:
users | tr " " "\n" | sort -u
これは、w
(w
出力の最初の行の時刻は、現在の時刻が1桁か2桁かによって、パイプラインの出力の一部になる場合と含まれない場合があります。使用しているw
の実装について)