Carpe Diem

備忘録。https://github.com/jun06t

リダイレクト

前回のcronでリダイレクトについて書いていたので使い方のちょっとしたまとめ。 ◆一般的な使い方 $ command > outfile この「>」は「1>」と同じで、標準出力(コンソール画面)の出力先をoutfileに指定している。だからcommandでコンソールに表示される文字列を、outfileに記述します。 ex) $ ls > ls.txt とすれば、リスト結果は画面に出ず、ls.txtというファイルへ出力します。 $ less ls.txt とすればリスト結果が書き込まれていると思います。 ◆追記する $ command >> outfile 単に「>」だけだと、上書きになってしまいます。元々あるファイルにこれをやって内容を消してしまわないように、追記する場合も覚えておきましょう。 ◆エラーを出力する $ command 2> outfile エラーが返ってくる場合、そのエラーメッセージをoutfileへ出力します。 ex) $ ls hogehoge.txt > ls.txt ls.txtには ls: hogehogeにアクセスできません: そのようなファイルやディレクトリはありません とエラーメッセージが書き込まれています。 ◆標準出力もエラーも同じところに出力する $ command > outfile 2>&1 これは前回のcronで勉強した部分です。これは $ command 1> outfile 2>&1 と同じなので、1も2もoutfileに出力先が設定されています。 もしこれが逆だと、以下のように書くわけですが $ command 2>&1 1>outfile これは2が1(まだコンソール画面)へと向き、その後で1がoutfileを向くので、結果的に 1 > outfile 2 > コンソール画面 となるのでダメというわけです。 ◆よく使うcommand $ echo test > outfile echoは引数(書き込まれた文字列)をコンソール画面へ出力するので、引数がそのままoutfileへ書き込まれます。 一番使うんではないでしょうか。 $ cat test.txt test2.txt > outfile catはファイルの中身を連結して表示するので(引数1つならそのファイルの中身だけ)、連結された内容がoutfileへ出力されます。SSHの設定で行った $ cat id_rsa.pub >> authorized_keys もリダイレクトだったわけですね。 $ find / -name test -print > outfile とかもありでしょうか。色々使い道がありますね。 以上です。 ソース: リダイレクト (CLI) more, less, catの違い