人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

UNIXのシェルスクリプト上で、
mkdir -p /a/b > /dev/null ?
という記述を見るのですが、 > /dev/null
している理由が分かりません。
何か標準出力を捨ててるのは分かりますが、
mkdir -p で標準出力が出るとは思えないので、
普通に
mkdir -p /a/b ?
で問題ない気がするのです。

・?と比較して?のメリットは
何かあるのでしょうか?
・?、?の使い分けはあるのでしょうか?
・(できれば)参考にするサイトは
あるでしょうか?

●質問者: eimu
●カテゴリ:コンピュータ インターネット
✍キーワード:UNIX サイト シェルスクリプト メリット 普通に
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● kurukuru-neko
●35ポイント

私ならこうしますが( bash )

mkdir -p /a/b >>/dev/null 2>&1

RC=$?

> mkdir -p で標準出力が出るとは思えないので、

mkdirで標準出力に何も出力されないと思うのは

希望的観測なので、確実に出したくないのでしょう。

作成前のエラー (mkdirが実行できない又は存在しない,

違うmkdir)

/aの作成段階のエラー (権限がない)

/a/bの作成段階のエラー(権限がない,bがファイル)

/a参照段階エラー (権限がない)

/a/b参照段階エラー(権限がない,bがファイル)

◎質問者からの返答

なるほど、作成権限がない時に、エラーが出る

ケースがあるのですね。

ちなみに自分の環境は、cshとshしかなく、

bashは使えないので、> /dev/null

なのでしょうね。

あと、できれば

>>の部分と(なぜ > でないか)

RC=$?の部分、

shかcshで標準出力と標準エラー出力

両方を/dev/nullに持っていく方法を

教えてもらえると助かります。


2 ● kurukuru-neko
●35ポイント

sh/bashでは

mkdir -p /a/b >>/dev/null 2>&1

RC=$?

cshでは、

mkdir -p /a/b >&! /dev/null

set RC=$?

RC=$?は、エラーを判断するようなコードを

その後で書く必要があるので変数RCに戻り値を保存している。

http://homepage2.nifty.com/freeline/bash_vs_csh.html

==========================================

> >>/dev/null 2>&1

なぜ >>なのか?

>でも問題がありませんが。 用心の為です。

以前root権限を持つ不届きなプログラムが /dev/null

ファイルを消してくれたりした事があり

それ以降>>にしています。

>だと新規に作成されるので犯人探しの手がかりが

少なくなるので。

>>であれば実行されているプログラムが途中で

何か出力を捨てる目的で使っている事があり

犯人探しの手がかりになるので。

◎質問者からの返答

よく分かりました、どうもありがとう

ございます。

>/dev/null 2>&1 の様な記述も

時々見るのですが、分からなかったので

助かりました。

記号も検索エンジンで探せると

もう少し簡単に答えが分かるのですがね。。。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ