端末コマンドで「>>」はどういう意味ですか?


14

私はちょうど今与えられたコマンドに出くわしました-

$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile

私が推測できることから、それはおそらく.bash_profileの変更をコミットするために使用されますが、正確には何に使用されますか?


26
将来的に何を改善すべきかを知らせるために:man bashかなり正式な言語で書かれているため、理解するのは難しいかもしれません。一方、このフレーズbash >>は、Googleで役に立つリンクをほとんど返しません。Googleに依存せずに知識を集約したいのは事実です。このため、簡単に検索できる回答のある質問でも適合します。しかし、あなたがどちらもすぐに答えを提供していないという事実は、(参照?することができます私は自分の質問に答える)も研究の欠如を示し(あなたはおそらく理解するための助けを必要とすること)は、既存のリソースを指摘しました。
カミルマシオロウスキ

5
コマンドラインリダイレクト演算子の詳細な概要については、unix.stackexchange.com / q / 159513/85039
Sergiy Kolodyazhnyy

回答:


31

それは前にプログラムの標準出力をリダイレクトし、>>後に与えられたファイルに追加します。


28
「プログラム前」とはどういう意味ですか?コマンドは明らかに、しかし、リダイレクトも先頭に追加記述することができ、すなわち>> file command
rexkogitans

例。Ubuntu 18.04では、「apt search rust >> x」と入力できます。「apt search rust」部分は、利用可能なパッケージでrustという用語を検索し、これを標準出力(通常はこの場合は端末)に送信します。ただし、「>> x」は、出力をファイル「x」の最後にリダイレクトすることを示しています。ファイルを置き換えるだけの場合、必要なのは1つの「>」だけです。
NomadMaker

@rexkogitansコマンドの途中であっても、コードを読みにくくする場合は、という名前のファイルにecho a b >> c d追加a b dしますc
カスペルド

@kasperdさらに、間に任意の順序でstdinリダイレクトを分散させることもできます。
rexkogitans

48

簡単な答え-何をし>>ますか?

では>>、あなたはファイルにコマンドの出力を追加します。

コマンドの例は、基本的に次のいくつかの部分で構成されています。

コマンド >> ファイル名

したがって、の出力commandはに追加されfilenameます。


の特定のケースではechoどうなりますか?

特定のケースでは、echo "…"コマンドは入力引数を「標準出力記述子」と呼ばれる「stdout」に出力します。入力引数のecho後に改行(\n)が続くので、改行を取得できます。

ここで、「標準出力記述子」は、コマンドを実行したときにシェルに表示される出力ストリームにすぎません。(つまり、echo foo入力してEnterキーを押すfoo\nと、echoコマンドの実際の出力が表示されます。これは、シェルにfoo改行が続くように表示されます。)

基本的に、コマンドラインに書き込むものはすべてstdoutを使用しています。通常、エラーメッセージに使用される「stderr」と呼ばれる別の記述子もあります。また、標準出力のように印刷されるため、散在する場合があります。また、入力に使用されるstdin記述子があります。詳細については、この記事参照してください。

シェルで出力をどのようにリダイレクトしますか?

いつでもstdoutをファイル記述子にリダイレクトできます。これは、次のいずれかの演算子を使用して実行できます。

  • >ファイル記述子にリダイレクトします。ファイルが存在しない場合は作成します。既に存在する場合は、書き込む前にファイルを切り捨てます。したがって、ファイルはstdoutで上書きされます。

  • >>ファイル記述子に追加します。ファイルが存在しない場合は作成します。

2>または2>>同様の方法でstderrをリダイレクトすることもできます。または、stderrとstdoutを1つのファイルに結合できます2>&1。リダイレクトの詳細といくつかの例については、この小さなチュートリアルをご覧ください

特定のシェルコードの意味を理解するにはどうすればよいですか?

一般に、特定のシェルコマンドに関する視覚的なガイダンスと情報を提供するexplainshell.comを試してください。


7

例を見るのが好きなTLDRの人々のために。

>>の前のコマンドの標準出力(エラーではない)は、その名前の付いたファイルの最後に追加されます。

したがって、ファイル「flintstones.txt」に含まれている場合;

Fred
Barney

echo Dino >> flintstones.txt ファイルの最後に「Dino」が追加されます。

Fred
Barney
Dino

単一の右矢印で完了した場合のecho Dino > flintstones.txt内容を表示する例を追加することをお勧めしますDino
-JakeGould

-2

繰り返しますが

> somefile.txt

ファイルのコンテンツ全体が消去されます。


なぜ他の回答をコピーするのですか?
トト

@Toto彼はそうは思わない。それは追加的で、とても価値があるようです。
フォルカーシーゲル

@Totoおっと!よく見ると、実際はそうではありません。複数の面でも間違っています。奇数-彼はここで新しいですが、他の場所で活動しています-だからおそらくトローリングだけではありません。
フォルカーシーゲル

2
@VolkerSiegel:> fileファイルをクリアしますが、>> file何もしません。
トト

しかし、これは質問には一切答えず、コメントでなければなりません
-phuclv
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.