
我有幾台 Linux 伺服器,都運行不同的服務。當我運行時service --status-all
,我會得到幾個螢幕的輸出。我想我會很聰明,將其通過管道傳輸到sort
,並作為一個群組查看哪些服務已啟動、未啟動或未知。我執行了該命令,但它只對[ ? ]
頂部的條目進行了排序,所有的[ - ]
和[ + ]
條目都亂七八糟地聚集在一起!
我使用的命令是service --status-all | sort
.有沒有更好的方法來對加號和減號進行排序?
這是專門在 Debian 機器上運行的,僅運行命令行
答案1
似乎將和結果service --status-all
寫入stdout,但將結果寫入 stderr。因此,要用於對所有這些進行排序,您必須將 stdout 和 stderr 流組合起來,如下所示:[ + ]
[ - ]
[ ? ]
sort
service --status-all 2>&1 | sort
排序受 值的影響LC_COLLATE
,預設與您的設定相同LANG
。如果您不想更改LC_COLLATE
所有應用程式的值,但確實希望此列表按+
、-
和排序?
,請改用以下命令:
service --status-all 2>&1 | LC_COLLATE=C sort
若要為所有應用程式進行設置LC_COLLATE
,請將其放入您的~/.profile
、~/.bash_profile
或任何來源的腳本中以在登入時設置您的環境:
export LC_COLLATE=C