「>」コマンドの正しい名前は何ですか


38

私は、>コマンドを使用して既にそこにあるものを上書きせずにファイルにテキストを渡す方法を見つけようとしていましたが、それが何であるかわからないことに気付きました。右矢印または右シェブロン、または複数のコマンドを検索しても何も表示されませんでした。私はいつもそれをパスに呼び出しただけです。

回答:


53

>コマンドではなく、ファイル記述子のリダイレクトです。これは、シェルがこの割り当てを解析し、コマンドラインから削除し、起動された新しいプロセスの環境を変更することを意味します。新しいプロセスは、コマンドラインのこの部分に気付きません。それがどこにでも配置できる理由です:最初、最後、またはその間に。

REDIRECTIONブロックを探しman bashます。

既存のファイルに追加するには、を使用する必要があります>>


オプションnoclobberが設定されている場合、>|ファイルを上書きして上書きできます。
bsd 14

30

>リダイレクト演算子です。noclobberが設定されてい>ない限り、通常のファイルにリダイレクトするために使用すると、既存のファイルが既に上書きされます。ファイルの最後に追加します。>>


また、noclobber設定されている場合は上書きされません(bash)。
Hauke Laging

説明をありがとう、私の答えを更新しました。
ジョシュジョリー14

5
@HaukeLaging noclobberは単なるバシズムではありません。POSIX
kojiro 14

6

他の人が答え>たように、これはコマンドではなく、リダイレクト演算子です。ただし、「リダイレクト演算子」という用語は、特にを指すのではなく>、さまざまな可能なリダイレクト演算子を指します。dashmanページの一覧リダイレクト演算子として以下:

 < > >| << >> <& >& <<- <>

それぞれに有効な個人名があるかどうかはわかりません。古いシェルのマニュアルをいくつか掘り下げてみると、何か面白いものが見つかるかもしれません。このソースは、正しいものでも間違ったものでも、確かにそれらのいくつかに名前を付けることに挑戦しています:

>  - 'output redirection operator'
<  - 'input redirection operator'
>> - 'output append operator'

だけでなく:

2> - 'standard error redirection operator'

ただし、これ2は技術的には演算子の一部ではなく引数であるため、これは本当に正しいとは思わない。

クイックリファレンス(上記のいずれも認識できない場合):

>   - redirect output stream to a file, eg >somefile (for stdout) or 2>somefile
>|  - as above but overwrite the file even if the noclobber shell option is set
>>  - append output stream to file
<   - redirect input stream from file, n defaults to 0 for stdin
<>  - open file for reading and writing on stdin
>&  - redirect output stream to another stream (eg >&1) or close with - (eg 2>&-)
<<  - here document - see http://en.wikipedia.org/wiki/Here_document
<<- - here document with leading tabs removed.

ではbash、あなたも持っています。

<<< - here string, a one line here file. Eg <<<"foo bar"

非常に便利なクイックリファレンスリストですが<<-、先頭のタブスペースは削除されませんか?
iconoclast 14年

@iconoclast、いや、間違いなくタブだけです。
グレアム14年

0

> 出力をファイル(またはデバイス)にリダイレクトし、既存のファイルを上書きします

>> 出力をファイル(またはデバイス)にリダイレクトし、そこにすでに存在するものに追加します

< ファイル(またはデバイス)からプログラムまたはデバイスにデータを送信します

<< ヒアドキュメント



1
@ Graeme回答を編集しました。助けてくれてありがとう
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.