リダイレクト (CLI)
コンピューティングにおいて、リダイレクト（英語:Redirect）とはリダイレクションを行うこと。リダイレクションとは、様々なシェルを含むほとんどのコマンドラインインタプリタに共通の機能であり、標準ストリームをユーザで指定した位置に変更する機能のこと。
プログラムはdup2(2)システムコールまたはより柔軟でレベルの高い類似物であるfreopen(3)およびpopen(3)によってリダイレクトする。
リダイレクションは通常、コマンドの間である文字を置くことによって行われる。一般に、これらの文字のシンタックスは以下のとおりである:
file1を出力とし、command1を実行する。これがfile1内のどのような既存のデータも削除されることに注意すべきである。ファイルの終わりに出力を追加するためには、文字»を使用する。
キーボードの代わりに、入力のソースとしてfile1を使用し、command1を実行する。
二つの機能を結合する。 command1はinfileを読み、outfileに書く。
ひとつのプログラムが明示的な中間のファイルを必要とせずに別のプログラムの出力を読むように、プログラム動作させることができる。
command1を実行し、出力をcommand2の入力として使用する。文字"|"が「パイプ」と呼称されるので、これはパイプ処理と呼ばれる。
これは、二つのリダイレクトとテンポラリファイルを使用することと同等である（command1とcommand2が並行して処理されるか、rmが不可分操作であるか、といった違いはある）。
パイプ処理のためのよい例は、インタラクティブでないシェルの中で何かインタラクティブなことを行うためにechoを別なコマンドと結合することである。たとえば
これはユーザ名、リターンキー、パスワードをあらかじめ入力してFile Transfer Protocolクライアントを走らせる。
オリジナルのBourne Shellからの系統であるシェルにおいて、文字の直前にある数（ファイル記述子）を置くことによって最初の二回の行動はさらに修正される。これは、どのストリームがリダイレクションのために使用されるかに影響する。Unixの標準I/Oストリームは以下のとおりである:
stderr出力をfile1にリダイレクトし、command1を実行する。
C Shellの系列にあるシェルの場合、シンタックスは代わりに文字&をリダイレクト文字に付加し、同様の結果を達成する。
別の有益な機能は、1つの標準ファイルハンドルを別のものにリダイレクトすることである。もっともポピュラーなバリエーションは、エラーメッセージを通常の出力と一緒に（または交互に）処理することができるように、標準出力の中に標準エラー出力を併合することである。
例:
は.profileと名づけられたすべてのファイルを見つけようとする。リダイレクションなしで実行された場合、標準出力にヒットを出力し、エラー（例:保護されたディレクトリを横切る権限の不足など）を標準エラー出力に出力する。標準出力が結果をファイルresultsにリダイレクトするとき、エラーメッセージは通常通り画面に出力される。ファイルresultsで、ヒットとエラーメッセージの両方を見るために、2>&1を使用して、標準出力（ハンドル1）の中に標準エラー出力（ハンドル2）を合併する。
>の前に2>&1を置くことは可能だが、うまく働かない。事実、インタプリタが2>&1を読む時に、標準出力がどこでリダイレクトされるかを知らない。
もし併合された出力が別のプログラムにパイプで輸送される必要があるならば、ファイル併合シーケンス2>&1は以下のようにパイプ文字に先行しなければならない:
コマンドの簡素化したフォーム:
と同じである。
固定的な文字列を標準入力から読み込ませる方法には、前述の、echoを用いて標準入力から読み込ませる以外に、ヒアドキュメントからのリダイレクトを用いる方法がある。それには、以下のような方法を用いる。
ここで、«に後続する文字列は必ずしも"!"である必要はない。伝統的には"!"や"EOF"（複数文字であってもよい）などがよく用いられ、その文字がドキュメントの終端を示す。標準入力に読み込ませるドキュメントがまさにその場所にあることから、そのドキュメントをヒアドキュメントと呼んでいる。
これを用いると、echoを用いた前述の例
に置き換え可能である。標準入力からの操作を待つ、インタラクティブなコマンドを用いて、非インタラクティブに処理を行う場合に多用される。
リダイレクションとパイプトークンを、複雑なコマンドを作成するためにつなぐことができる。たとえば:
これはカレントディレクトリの内容をリストし、.shを含む行のみを濾過し、辞書順に並べ、shlistに出力する。このタイプの構造はシェルスクリプトとバッチファイルの中で非常によく使用される。
標準コマンドteeは出力をコマンドからいくつかのあて先にリダイレクトすることができる。
これはファイルリストの出力をファイルxyzと標準出力の両方に書き出す。