web-dev-qa-db-ja.com

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

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

38
blarg

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

man bashREDIRECTIONブロックを探します。

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

54
Hauke Laging

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

30
Josh Jolly

他の人々が答えたように、>はコマンドではなく、リダイレクト演算子です。ただし、「リダイレクト演算子」という用語は、>を具体的に指すのではなく、さまざまな可能なリダイレクト演算子を指します。 dash manページには、リダイレクト演算子として次のものがリストされています。

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

それぞれに有効な個人名があるかどうかはわかりません。シェルの古いマニュアルを掘り下げてみると、興味深いことがわかります。この source は、正しいか正しくないか、確かにそれらのいくつかに名前を付けることに成功しています:

>  - '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"
7
Graeme

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

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

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

<<ヒアドキュメント

0
les