web-dev-qa-db-ja.com

なぜcatを使用してファイルを表示するのですか?

catの目的は、いくつかのファイルを連結することであると思われます。ただし、多くの人々はファイルを表示するためにcat(またはlessのような同様のプログラム)の代わりにmoreをまだ使用しています。たとえば、 GNU m4マニュアル と回答 " テキストファイルの内容をコマンドラインに表示するにはどうすればよいですか? "を参照してください。

マニュアルページ:少ない

-Fまたは--quit-if-one-screen

ファイル全体を最初の画面に表示できる場合、lessを自動的に終了させます。

-Xまたは--no-init

端末へのtermcap初期化および非初期化文字列の送信を無効にします。これは、画面のクリアなど、非初期化文字列が不必要なことを行う場合に望ましいことがあります。

現在、catを使用してファイルを表示または表示することは良い習慣ですか?なぜcatを使用してファイルを表示するのですか?

これは私に 猫の役に立たない使用 を考えさせます。

注:この質問は、lessmoreの違いについてのものではありません。さらに、それは以前に作成されたファイルの視覚化に関するものです。


回答とコメントによれば、catはポケットベルよりも使いやすいため、その使用を超えて使用されているようです(例えばmoreless...)。一部の人々はこれを無関係な事実(または役に立たない)であると考えていますが、経験から、シェルに関連するさまざまな微妙さが実用的な結果をもたらす可能性があることがわかります: シェルループを使用してtextfile引用符で囲まれていない変数を使用 ...

負の影響は強度が異なります。例えば、 cat foo bar | lessは有効です。ユーザーは2つのファイルを連結しますが、cat foo | less無効 。同じ精神で、catは「パイプライン」で必要とされるようですが、lessのようなページャーもパイプラインで機能するようです(注:lessは適していません) 名前付きパイプの読み取り:tailまたはcat? )など、表示に関するすべての場合。

以下も参照してください:「または」オプションを使用してファイルをcatする方法

1
Fólkvangr

質問の「多くの人」とは、このようなWebサイトでチュートリアル、マニュアル、または回答を書いている人を指すと想定します。

テキストドキュメントで端末コマンドを記述する場合、catコマンドは一般的にファイルの内容を表示するために使用されます。

この例:

$ cat script.sh
#!/bin/sh
echo 'hello'
$ chmod +x script.sh
$ ./script.sh
hello

ここでは、script.shというファイルがあること、その内容、実行可能にして実行していること、およびその結果を示しています。

この例でcatを使用することは、「すべての1のカードを表示する」、つまり、例のすべての前提条件を明示的に表示する(そして、端末セッションのテキスト表現の一部としてそれを行う)方法にすぎません。

lessおよび他の画面ベースのページャーは、それらの使用方法に応じて、必ずしもその出力を端末に提供しません。だから私が書いたなら

$ less script.sh
#!/bin/sh
echo 'hello'

ユーザーが自分で試した場合、スクリプトのテキストがターミナルで異なって表示され、lessページャーを閉じるとターミナルから消えるのはなぜか疑問に思うかもしれません(ページャーを設定した方法の場合) )、またはlessが回答で使用されているlessと異なるかどうか(またはチュートリアルまたはそれが何であれ)、または何か他のことをしている場合。この一連の考えの可能性を考慮することは、ユーザーにとって逆効果であり、破壊的です。

端末で例をテキストとして表示するときにcatを使用すると、exactを再現するかなり簡単な方法で、指定したテキストと同じ結果が得られます。大きなファイルの場合は、ファイルを個別に表示し、端末コマンドをテキストとして書き込むときに、そのファイルがsedであることに集中することをお勧めします。

lessmoremostviewsublime、またはその他のポケットベルまたはプログラムを使用してファイルを表示する場合は、まったく問題ありません。どうぞ。しかし、ターミナルでのワークフローを説明する再現可能なテキストを提供したい場合は、使用するポケットベルに応じて、ユーザーが読んだものと自分のターミナルで表示されているものとの間で出力が異なる可能性があることをユーザーに警告する必要があります。そしてそれがどのように構成されるか。

7
Kusalananda

lessは非標準のGNUユーティリティです。

catはPOSIX

     The Open Group Base Specifications Issue 7, 2018 edition
      IEEE Std 1003.1-2017 (Revision of IEEE Std 1003.1-2008)
           Copyright © 2001-2018 IEEE and The Open Group

[〜#〜]名前[〜#〜]

cat-ファイルを連結して印刷する

[〜#〜] synopsis [〜#〜]

cat [-u] [file...]

...

catは存在する可能性が高く、一貫した動作をする可能性があります

6
Andrew Henle

私見、それは「古くて悪い」癖だと思います。私自身、猫を使うのはいつもより少ないと思います。バイナリファイルの内容を表示しようとすると、lessはとにかくそれを表示することに同意するかどうかを尋ね、長い場合は自動的にテキストにページ番号を付けます。猫は書くのが短く、ページングを必要としない非常に短いファイルに使いやすいです。それにもかかわらず、それは確かに連結を目的としています。この場合、テキストを表示するために使用され、引数1で指定されたファイルの標準出力と引数2のデフォルトである標準入力を連結します。

3
PhLinuX

catを使用してファイルを表示または表示することは良い習慣ですか?

IMO、それは良くも悪くもありません。

「グッドプラクティス」とは、個人としてより効果的になるものであり、多くの場合より重要なのは、チームのより効果的なメンバーになることです。

ショートテキストファイルを表示するために使用するツールの設定は、仕事や同僚との関係に影響を与える可能性はほとんどありません。

3
Solomon Slow