Shell-Script
aw | 是什麼意思?cut -d ’ ’ -f 1 - 用 grep 和 sort 應該怎麼做?
這是我想破譯的程式碼:
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
將在一行中輸出所有登錄的使用者,但是您可以通過管道將其輸出tr ' ' '\n'
並sort -u
在每行中獲取一個使用者:users | tr ' ' '\n' | sort -u
這也不取決於
w
(輸出第一行的時間w
可能是也可能不是管道輸出的一部分,具體取決於目前時間是一位數還是兩位數,具體取決於什麼實現w
你正在使用)。