
私が解読したいコードは次のとおりです。
w | cut -d " " -f 1 - | grep -v USER | sort -u
答え1
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行に出力しますが、それをパイプして1tr ' ' '\n'
行sort -u
に1人のユーザーを取得できます。
users | tr ' ' '\n' | sort -u
また、これは生成された形式には依存しませんw
。出力の最初の行の時間は、現在の時間が1桁か2桁か、実装によってはw
パイプライン出力の一部でも、そうでなくてもかまいません。w
使用)。