
どちらもf1.txtからf2.txtにデータをコピーすることを知っていますが、実際の違いは何ですか?
(cp f1.txt f2.txt)
比較:
(less f1.txt > f2.txt)
答え1
違いは、これがcp
人間にとってはるかに明確であるということです。これは最適化が必要な最初のことの1つです。
この使い方はless
とても曖昧で、試してみるまでその効果もはっきりしません。もう一つの答えはうまくいかないと言います。これは、ファイルに特定の文字が含まれており、スクリプトの一部などのユーザー操作なしでコマンドを操作したい場合です。この制限は返品あいまいさ(この動作を何度も見たにもかかわらず、少なくとも私はそれを期待していません)。
less
速度が遅くなる理由の1つは、データをより小さなチャンクに転送するためです。以下で実行すると、1023バイト(1KiB - 1)の64KiBチャンクがstrace
表示されます。less
答え2
less
次のように設計されています。携帯用小型無線ポケットベル(例えば次のページ機能)テキスト文書。したがってcp
、データコピーを意図したものよりもファイルコピーに最適化が少なくなり、大量のオーバーヘッドが発生し、パフォーマンスが低下する可能性があります。
まず、cp
特殊文字(制御など)を含むファイルを処理しても確認メッセージは表示されません。
あなたの例ではcp
正確に実行する必要があります一つプログラム(cp
)。
less
例では、less
コマンドは実際には指定されたファイルの内容のみを出力し、stdout
シェルはstdoutを新しいファイルにリダイレクトするため、実際には2つのプログラム(出力用、入力用)を実行しています。
答え3
このバリエーションは、コンテンツを画面にダンプし
cp
ないため、より高速です。f1.txt
$ time cp f1.txt f2.txt real 0m0.002s user 0m0.004s sys 0m0.000s $ rm f2.txt $ time less f1.txt > f2.txt real 0m0.009s user 0m0.004s sys 0m0.000s
0.002対cp
0.009 less
。
cp
less
値に基づくumask
モードで新しいファイルを作成しながら、元のファイルの一部のモードビットを保存できます。
(...) each destination file is created with the mode bits of the corresponding source file, minus the bits set in the umask and minus the set-user-ID and set-group-ID bits.
cp
タイピング時間が短縮されます。真剣に、これはコマンドラインからほとんどの時間を費やすときに重要です。
答え4
ファイルについて尋ねるものなので、使用すると*.txt
いくつかの利点があります。less
前処理機能「ファイル内容の表示方法を修正」。設計された例は、圧縮ファイルの内容を出力することです。
less compressed.txt.gz > uncompressed.txt
しかし、もちろんこれはによって行うことができ、おそらく実行する必要がありますzcat -c compressed.txt.gz > uncompressed.txt
。
しかし、私はこれが正規化された環境を前処理するのに実用的であると思いますless
(環境変数を確認してくださいLESSOPEN
。通常はファイルを指します/usr/bin/lesspipe.sh
)。これにより、スクリプト/コマンドが気にする必要がなくなります。分析する入力ファイルを宛先ファイルに書き込む。
私もこれを見つけました。協会より多くのユースケースを示します。上記のようにLinux環境をチェックして、/usr/bin/lesspipe.sh
どのファイルless
からテキスト情報を抽出できるかを確認してください。