web-dev-qa-db-ja.com

「より少ない」を持っているときに「猫」を使用する理由はありますか?

以前はcatを使用してファイルを表示していました。次に、lessの方が通常は優れており、ファイルが数十行を超える場合は必須であることがわかりました。

私の質問:catの代わりにlessを使用する理由はありますか? catがより良い解決策となる状況はありますか?

63
Ram Rachum

個人的には、静的コンテンツにはviewを好むか、tail -f動的コンテンツ用。

しかし、これはあなたの質問に答えません。 「少ないのにもっと使う理由」という言葉があります;-)

しかし、私は猫よりも猫を好む場合があります。私は通常X11-windowsで作業します。これらのウィンドウには、数百行に設定できるスクロールバッファがあります。

catを実行する-200行としましょう。これらの場合、lessを使用するよりも、スクロールバーでマウスを使用する方が快適です。

22
Nils

どちらのコマンドでもファイルの内容を表示できますが、元の目的はまったく異なります。

lessは more の機能を拡張します。後者は、ファイルの内容を一度に1画面ずつ表示するために作成されました。 lessは、後方への移動やより良いメモリ管理などの機能を追加します(最初の行を表示する前にファイル全体を読み取る必要はありません)。

catはファイルを連結し、結果を標準出力に出力します。ファイルを1つだけ指定すると、そのファイルのコンテンツが表示されます。複数のファイルを提供すると、「強力」になります。良い例は split とcatの組み合わせです。最初のコマンドは、大きなファイルを小さな部分に分割します。 2つ目は、小さな部分を1つのファイルに連結します。

あなたの質問に戻りますが、catは、対話なしでファイルを完全に(または連結して)読み取る必要がある自律スクリプトで推奨されます。ファイルの表示に関しては、好みの問題だと思います。

95
nrolans

私は通常、ファイル内の何かに基づいてコマンドを入力する必要があるときにcatを使用します。 catは、シェルプロンプトにアクセスしながらファイル(小さい場合)を表示できるため、より便利です。パイプライニングも可能です。

23
Amir Rachum
猫がより良い解決策となる状況はありますか?

複数のファイルを処理していて、それらを連結したい場合。

Manページから:

cat f - g
        Output f's contents, then standard input, then g's contents.
17
jasonwryan

catの唯一の目的はファイルをconcatenateすることであると激しく主張する人々がいます。他のすべての用途には、more(またはless)があります。

しかし、これは1つの非常に重要な事実を考慮に入れていません:catはタイプするのに1文字少ないです。私はこれらのコマンドを頻繁に使用するので、1文字少ないほど簡単です。

別の理由は、ファイルを作成するときです。 Webから次のようなテキストをファイルにコピーアンドペーストすることがよくあります(コマンドプロンプトを表示):

$ cat > filename
<Cmd-V>
<Ctrl-D>
$

つまり、書き込みアクセス用にファイルfilenameを開き、コンテンツを貼り付けて、を押してストリームを閉じます Ctrl-Dlessmoreもそれができず、エディタを開くよりも高速です。

15
Konrad Rudolph

場合によっては、lessが行うページ付けが不要で、catを使用するために完全なファイルが必要な場合があります。

9

私は_less -FX_を使用します。これにより、ファイルを1つの画面に表示できる場合、lesscatのように動作します。 less(1)マンページから:

_-F or --quit-if-one-screen
       Causes less to automatically exit if the entire file can be dis-
       played on the first screen.

-X or --no-init
       Disables sending the termcap initialization and deinitialization
       strings  to  the  terminal.   This is sometimes desirable if the
       deinitialization string does something unnecessary, like  clear-
       ing the screen.
_
4
user26112

catgrep(複数)ファイルを使用しています。

cat <filename1> [<filename2> <filename3>] | grep -i "string of interest"

私はgrepがファイル名をサポートしていることを知っていますが、異なるファイルに対して同じファイルをgrepする場合、行の最後にある検索用語であるコマンドを編集する方が、Ctrl +矢印キーで戻る必要があります。この線。

4
Fake Name

catを使用すると、複数のバイナリファイルを1つの大きなファイルに連結できます。

cat data.001 data.002 data.003 > bigdata.dat
4
Michał Šrajer

catは画面に残ります。すべてlessが消えます。

Volker Siegelによる/の明確化:

catの出力は画面に残ります。 lessで表示されるものはすべて閉じた後に消えます。

2
AWE

また、lessはすべてのGNU/Linuxディストリビューションにプリインストールされているわけではありません。 (Gentooなど)catはどこにでもあります。

2
xin

Unixバリアントの多様性のために、多くの人がシステムを管理する必要はありません(積極的に)。物事が激しくなったとき、リブートして、制限された環境と呼ばれる環境でシステムに入ることができるかもしれません。

コマンドラインを取得し、小さく、通常は静的にリンクされている便利なコマンドと見なされる小さなセットにアクセスします。エディターとしてviを取得したり、小さなedを取得したりすることはできますが、emacsやvimは取得できません。あなたは猫を手に入れるでしょうが、それ以下ではありません。これらのリソースは正しく構成されていないか、すべて使用されている可能性があるため、リソースを使いすぎずにシステムを修復するのに十分なツールを提供するという考え方です。それらの状況下でのより少ないコマンドは不必要です。

2
Paddy3118

2つは異なります。 lessは非標準のページャー(moreは標準のページャー)であり、テキストの表示に使用されます。一方、catは、データストリームのタイプと数を1つに連結するために使用される標準ユーティリティです。

状況によっては同じことをするように見えるかもしれませんが、他のユーティリティもそうです。

1
Kusalananda

'less'内で 'v'を押してファイルまたは '!'を編集できるため、特権の昇格に問題がある可能性があります。シェルコマンドを送信します。

一部のユーザーには、スーパーユーザーのみが読み取り可能なファイルの表示を許可し、それらのユーザーによるファイルの編集や一般的なスーパーユーザー権限の使用は許可しないようにすることができます。 「/ etc/sudoers」を編集して「Sudo/bin/cat/etc/importantfile」を使用できるようにすることで、これを行うことができます。 「sudo/usr/bin/less/etc/importantfile」を許可したくないのは、「v」を使用してファイルを編集したり、「!」を使用したりできるためです。完全なスーパーユーザー権限でシェルを起動します。

もちろん、ユーザーは 'Sudo/bin/cat/etc/importantfile |セキュリティリスクなしで、より少ない」と「より少ない」を使用します。

1
bgvaughan

猫をgrepでパイプすると便利です。

cat <filename> | grep -i "string of interest"
0
RobW

便宜上。猫は3文字ですが、多かれ少なかれ4文字です。そして、猫を入力すると、左手だけが必要になります。

0
lamwaiman1988

'less'と 'more'はどちらも、出力がターミナル(tty)でない場合、 'cat'とまったく同じように機能します。パイプとファイルに関しては、どちらも改ページなしに戻ります。

「猫」は、Unixタイプのシステムでは常に存在すると言っても安全だと思います。どのシステムにも「少ない」または「多い」、あるいはその両方が存在することは予測できません。

したがって、スクリプトでは、ページ分割以外の操作のみが必要な場合、Unixタイプのシステムでスクリプトが使用されている場所には必ず「cat」が存在します。

0
user208007

画面に文字を表示する方法については、lesscatができることを実行できます。そして、はるかに。

しかし、いくつかのケースで猫を使用する非常に良い理由があります:
less複雑すぎるであり、非常に単純な問題に適用できます。私には、manページでcat関連のオプションを見つけるのが難しいほど多くのオプションがあります。


タブをMakefileに表示しますか?

man cat、最初のオプションは-A
説明は役に立ちません:-vET
しかし、長いオプション名はちょうどいいように聞こえます:--show-all

そしてcat -A Makefile必要なことを行います。


さて、lessを探しましょう。

0
Volker Siegel