コードを理解できません: ls -l /projects/ghosttrail | tail -n +2 | sed 's/\s\s*/ /g' | cut -d ' ' -f 3 | sort | uniq -c
。各段階で何が起こっているのかを詳しく説明できる人はいますか?各コマンドを1つずつ追加して直接実行できることはわかっていますが、コードが機能しないため、末尾の+2パラメータの意味やsedコマンドを渡す方法、および実行しない理由など、いくつかのことを理解できません。 't take cut コマンドの 4 番目の列です。
答え1
前のコマンドの出力が次のコマンドの入力として使用されるパイプラインステップ:
ls -l /projects/ghosttrail
ディレクトリの内容(ドットで始まらない)と詳細を一覧表示します。tail -n +2
出力はライン2から始まります(最初のラインを削除)。いいえ+
、tail
最後の2行(行数で指定-n
、デフォルトは10)が表示されます。sed 's/\s\s*/ /g'
複数の連続したスペースを単一のスペースに置き換えます。cut -d ' ' -f 3
3番目のフィールド(ユーザー名)を取得します。sort | uniq -c
一意の行を並べ替えて計算します。これは、で説明されているように隣接しないと重複行が検出されないためsort
に使用されます。uniq
man uniq
。
GNUを使用して同じ結果を得る別の方法find
:
find . -maxdepth 1 -not -name '.*' -printf '%u\n' | sort | uniq
find
-printf '%u\n'
作業ディレクトリにユーザー名を一覧表示します(オプション)。-maxdepth 1
サブディレクトリの検索を防ぎます。-not -name '.*'
ドットファイルは含まれません。sort | uniq
元の例と同じ目的で使用されます。