『コマンド 2 > error』
として実行結果でエラー出力を、errorファイルに格納することができる。と学んだのですが、
結局エラーメッセージは画面上に表示されますし、出てきたエラーメッセージがどこに格納されているかもわかりません。
私のなかのイメージでは、
エラーになってもエラーメッセージは表示せずerrorファイルに書き込まれていく。というものでした。(エラーメッセージ表示されているしerrorファイルがどこにあるのかもわかりませんが…)
この『』内の式はどういうものなのでしょうか
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
結論
タグに Linux bash とありますので、それを前提に説明します。
先に結論を言いますと
- 「2」 と 「>」の間に空白は入れません
- error ファイルはカレントディレクトリに作られます
ということになります。
以下、詳細を説明します。
詳細説明
元の説明をよく見てください「2」 と 「>」 の間に空白は無いはずです。
空白がある場合と無かった場合では解釈が異なります。
元の説明が意図していた(と思われる)コマンドライン
まず、元の説明の記述(と私が予測した)の以下の記述の解釈について説明します。
bash
1$ コマンド 2> error
Linux の場合、一般的にコマンドの出力は「標準出力」と「標準エラー出力」という二つの出力先に出力されます。
「2>」 というのはその「標準エラー出力」を、その後に指定したファイル(上の例では error)に出力せよ、
という意味です。
質問に書かれているコマンドライン
あなたが試した
bash
1$ コマンド 2 > error
という記述では、「2」と「>」は独立した指定として別々に扱われます。
まず、単体の「2」には特別な意味が無いので、「コマンド」の「2」というパラメータとして扱われ、
bash は「コマンド」にパラメータ「2」を与えて実行します、
「>」は「標準出力」をその後に指定したファイルに出力せよという意味なので、標準出力が「error」ファイルに出力されます。
そのため、標準エラー出力に出力されるはずのエラーメッセージはデフォルトのまま
コンソールに出力され、
結局エラーメッセージは画面上に表示されます
という結果になったのです。
error ファイルはどこにあるのか
「error」という名前は、例として示されているだけで、「>」や「2>」の後には、どんなファイルを指定しても(あなたに書きこみ権限があれば)構いません、
任意に指定します。
そして、この機能に限らず、bash を使う上でのデフォルトの解釈として、
パス(「/home/usr/~」とか「~/prog01」といったような)記述の無いファイル名はカレントディレクトリにあるものと解釈されます。
従って、コマンドを実行した後、ls コマンドを実行すれば error ファイルができているのが見えるはずです。
補足
「>」や「2>」を使ってコマンドの出力をファイル等に出す機能は「リダイレクト」「リダイレクション」と呼ばれます。
検索などをする際はこの言葉を使うと、より効率よくこの機能について学べると思います。
投稿2016/02/11 07:59
総合スコア1193
0
えっと、「2 >」ではなく、「2>」と、スペースを入れずに書く必要があります。
(追記)
このように、コンソールに表示されるものの出力先を変えることを、「リダイレクト」といいます。で、コマンドの出力には、大きく分けて「標準出力」と「標準エラー出力」があって、「> ファイル」とすると標準出力が指定のファイルに書き込まれて、「2> ファイル」とすると、標準エラー出力が指定のファイルに書き出されることとなります。
bash
1# 標準出力は「output」ファイルへ、標準エラー出力は「error」へ 2some_command > output 2> error
「some_command 2 > error」と書くと、「some_command 2」の結果である標準出力をerrorファイルに出す、という意味になります。
投稿2016/02/11 07:37
編集2016/02/11 08:02総合スコア145123
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
参考情報:
- 初心者向け!Linux操作技術~標準入出力とリダイレクト~ http://www.kenschool.jp/blog/?p=1143
...
リダイレクト記号の基本的な書式は次のようになります。書式 説明
① コマンド > file コマンドの標準出力をfileに書き込む
② コマンド >> file コマンドの標準出力をfileに書き足す
③ コマンド < file コマンドはfileの内容を標準入力として受け取る
④ コマンド 2> file コマンドの標準エラー出力をfileに書き込む
⑤ コマンド > file 2>&1 標準エラー出力の出力先を、標準出力の出力先と同じとする
tee コマンドのついても知っておくとよいです。
...
「コマンドの結果をファイルに出力したいけど、標準出力でも出力を見たい!」、という欲張りな要望に答えてくれる意外と頼もしいコマンド。
...
標準エラー出力もファイルに保存する
リダイレクトを使う。これをやらないと標準エラー出力だけファイルにロギングされないという事態になってしまう。
ping 9999 2>&
...
投稿2016/03/25 15:28
総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/11 10:45