ls -l | grep -v '^d' | sort -g -r -k 5 | head -2
: このコマンドを使用してテキストファイルに書き込みます。
オンラインでいくつかの調査をしましたが、このコマンドの意味は次のとおりです。
grep
:文字列から特定のパターンを検索します。-v
: 一致しないすべての行を検索して表示するように指示する grep オプション''
:一重引用符が何であるかよくわかりません。^d
:キャレットは、d
grepが検索するパターンである行の先頭を示します。これは使用時に機能しますls -l
。sort
テキストファイルの内容を数字で並べ替える-g
数値で比較これが正確に何を意味するのかわかりません。-r
比較結果を反転します。比較の目的を知ればもっと理解できるでしょう。-k 5
鍵を起動するPOS1-これが何を意味するのかよく分からない。テキストファイルの最初の行にある5番目の文字に何が起こっているのですか?head -2
私のテキストファイルの最初の2行を表示します。
私が不明な部分を明確にするのに誰かを助けることができますか?
ベストアンサー1
技術的な詳細はほとんど知っていますが、全体的な意味は見逃しているようです。
一重引用符は、'^d'
パイプを実行するシェルが正規表現(たとえば'^d'
)の文字を「特殊」として扱うのを防ぎます。たとえば、$
「行末」を表す正規表現です。シェルは、$
次のトークンを文字列に値が挿入されるシェル変数として表示するためにも使用されます。はい、左側のstdoutを右側のstdinにパイプするため^
の古い同義語です。|
一重引用符は^
特に処理されません。
意味論は、ls -l
ディレクトリで示された出力ラインを渡さないことです。ls -l
ディレクトリに関連する行の最初の文字として「d」を使用します。
オプションを使用する-g
と、sort
コマンドはキーフィールド内の数値表現を検索し、文字列ではなく数値に基づいてソートします。デフォルトの並べ替え順序は、最小のものから最も大きいものの順であるため、この-r
オプションを使用すると、最大のものから最小のものの順にソートされます。-k 5
フィールド#5がキーフィールドとして使用されることを示します。sort
デフォルトでは、空白文字(スペース、タブなど)はテキスト行を「フィールド」に分割するために使用されます。私のArch Linuxシステムでは、スペースで区切られた5番目のフィールドはファイルls -l
サイズ(バイト単位)です。
ここで意味するのは、ファイルをサイズ(バイト単位)で最大のものからソートすることです。
ファイル(ディレクトリではない)をバイトサイズでソートし、最大2つのファイルの情報をテキストファイルに配置します。
編集の観点から見ると、出力を解析することは通常誤った形式と見なされますls
。バラよりls(1) の出力を分析しない理由。歴史的に、ls
異なるシステムで異なる形式を使用すると、ファイルサイズがフィールド5のスクリプトは他のシステムでは理解できません。だから注意してください。