English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
ほとんどのUNIXシステムコマンドは、あなたのターミナルから入力を受け取り、生成した出力をあなたのターミナルに送信します。コマンドは通常、標準入力と呼ばれる場所から入力を読み取り、デフォルトでは、これがあなたのターミナルです。同様に、コマンドは通常、標準出力に結果を出力します。デフォルトでは、これもあなたのターミナルです。
リダイレクトコマンドリストは以下の通りです:
コマンド | 説明 |
---|---|
command > file | commandの出力をfileにリダイレクトします。 |
command < file | commandをfileに入力リダイレクトします。 |
command >> file | 出力をfileに追加モードでリダイレクトします。 |
n > file | ファイル記述子がnのファイルをfileにリダイレクトします。 |
n >> file | ファイル記述子がnのファイルをfileに追加モードでリダイレクトします。 |
n >& m | 出力ファイルmとnを合併します。 |
n <& m | 入力ファイルmとnを合併します。 |
<< tag | tagとtagの間の内容を入力として扱います。 |
注意するべきは、ファイル記述子0が標準入力(STDIN)であることです。1 は標準出力(STDOUT)です。2 は標準エラーハンドリング(STDERR)です。
リダイレクトは特定のシンボルをコマンド間に挿入することで実現されます。特に、これらのシンボルの文法は以下の通りです:
command1 > file1
このコマンドはcommandを実行します1その後、出力の内容をfileに保存します1。
注意:file1ファイル内の既存の内容は新しい内容に置き換わります。新しい内容をファイルの末尾に追加するには、>>演算子を使用してください。
以下のwhoコマンドを実行します。これは、コマンドの完全な出力をユーザーファイル(users)にリダイレクトします:
$ who > users
実行後、ターミナルには情報が表示されません。これは、出力がデフォルトの標準出力デバイス(ターミナル)から指定されたファイルにリダイレクトされたためです。
catコマンドを使用してファイルの内容を確認できます:
$ cat users _mbsetupuser console Oct 31 17:35 tianqixin console Oct 31 17:35 tianqixin ttys000 Dec 1 11:33
出力リダイレクトはファイルの内容を上書きします。以下の例をご覧ください:
$ echo "基础教程网:ja.oldtoolbag.com" > users $ cat users 基本チュートリアルウェブ:ja.oldtoolbag.com $
ファイルの内容が上書きされたくない場合は、>>を使用してファイルの末尾に追加することができます。例えば:
$ echo "基础教程网:ja.oldtoolbag.com" >> users $ cat users 基本チュートリアルウェブ:ja.oldtoolbag.com 基本チュートリアルウェブ:ja.oldtoolbag.com $
出力リダイレクトと同様に、Unixコマンドはファイルから入力を取得することもできます。文法は以下の通りです:
command1 < file1
このようにして、本来キーボードから入力を取得する必要のあるコマンドがファイルの読み取り内容に転移されます。
注意:出力リダイレクトは大于号(>)、入力リダイレクトは小于号(<)です。
上記の例に続いて、users ファイルの行数を計算するために以下のコマンドを実行します:
$ wc -l users 2 users
入力を users ファイルにリダイレクトすることもできます:
$ wc -l < users 2
注意:上記の2つの例の結果は異なります:最初の例では、ファイル名を出力します;二つ目の例では、標準入力から内容を読み取るだけなので、出力しません。
command1 < infile > outfile
入力と出力を同時に置き換え、commandを実行します1ファイル infile から内容を読み取り、出力を outfile に書き込みます。
一般的には、それぞれの Unix/Linux コマンドは実行中に必ず3つのファイルをオープンします:
標準入力ファイル(stdin):stdinのファイルディスクリプタは0で、Unix プログラムはデフォルトで stdin からデータを読み取ります。
標準出力ファイル(stdout):stdoutのファイルディスクリプタは1Unix プログラムはデフォルトで stdout にデータを出力します。
標準エラー出力ファイル(stderr):stderrのファイルディスクリプタは2Unix プログラムはエラーメッセージを stderr ストリームに書き込みます。
デフォルトでは、command > file は stdout を file にリダイレクトし、command < file は stdin を file にリダイレクトします。
stderr にリダイレクトしたい場合は、以下のように書きます:
$ command 2>file
stderr を file ファイルの最後に追加したい場合は、以下のように書きます:
$ command 2>>file
2 標準エラー出力ファイル(stderr)を示します。
stdout と stderr を合併して file にリダイレクトしたい場合は、以下のように書きます:
$ command > file 2>&1 または $ command >> file 2>&1
stdin と stdout の両方をリダイレクトしたい場合は、以下のように書きます:
$ command < file1 >file2
command コマンドは stdin を file にリダイレクトします。1stdout を file にリダイレクトします。2。
Here Document は Shell 中の特別なリダイレクト方法で、入力をインタラクティブな Shell スクリプトやプログラムにリダイレクトするために使われます。
その基本的な形式は以下の通りです:
command << delimiter document delimiter
その機能は、 delimiter 間の内容(document) をコマンドにインプットとして渡すことです。
注意:
delimiterの後ろには必ず改行を書き込み、先頭には何も書かないようにしてください。これにはスペースやタブのインデントも含まれます。
のdelimiter前後のスペースは無視されます。
コマンドラインでwcを使用して -l コマンドはHere Documentの行数を計算します:
$ wc -l << EOF ようこそ 基礎教程網 ja.oldtoolbag.com EOF 3 # 出力結果为 3 行 $
Here Documentもスクリプトに使用できます。例えば:
#!/bin/bash # author:基礎教程網 # url:ja.oldtoolbag.com cat << EOF ようこそ 基礎教程網 ja.oldtoolbag.com EOF
上記のスクリプトを実行すると、以下の結果が表示されます:
ようこそ 基礎教程網 ja.oldtoolbag.com
特定のコマンドを実行したいが、スクリーンに表示されたくない場合は、出力を以下にリダイレクトすることができます: /dev/null:
$ command > /dev/null
/dev/null は特別なファイルで、そこに書き込まれた内容はすべて捨てられます。ファイルから内容を読み取ろうとすると何も読み取れません。しかし /dev/null ファイルは非常に役立ちます。コマンドの出力をここにリダイレクトすると、"出力を禁止"の効果が得られます。
stdoutとstderrを非表示にしたい場合は、以下のように書くことができます:
$ command > /dev/null 2>&1
注意:0 は標準入力(STDIN)です。1 は標準出力(STDOUT)です。2 は標準エラーハンドリング(STDERR)です。
ここでは 2 と > の間にはスペースが入ってはいけません。2> 一体的な場合にのみエラーハンドリングを表示します。