問題ID: 7686 (rm ./* 2> rm.log)について*/
- フォーラムは新サイトへ移行しました。
- このフォーラムではゲスト投稿が禁止されています
hijikata11
投稿数: 3
該当の問題ですが、カレントディレクトリ内の全てのファイルを削除しているので、カレントディレクトリに
rm.log というファイルを出力しても、(エラーが出るタイミングにもよりますが)rm.log 自体も削除される為
適切なコマンドとは言えないと思います。
(ファイルが消されてしまうので、標準エラー出力を記録するという目的が達成されていない)
カレントディレクトリが /tmp 以外であるという前提の下、/tmp/rm.log に出力する、というような内容に
すれば良いのではないでしょうか。
実業務でも初心者にありがちなミスなので、正しい形にすべきと思います。
また、rm コマンドが rm -i のエイリアスとなっている場合、上記コマンドが正常に動かないという問題も
ありますが、ここでは考えない、という注意書きがあれば良いと思いました。
以上
rm.log というファイルを出力しても、(エラーが出るタイミングにもよりますが)rm.log 自体も削除される為
適切なコマンドとは言えないと思います。
(ファイルが消されてしまうので、標準エラー出力を記録するという目的が達成されていない)
カレントディレクトリが /tmp 以外であるという前提の下、/tmp/rm.log に出力する、というような内容に
すれば良いのではないでしょうか。
実業務でも初心者にありがちなミスなので、正しい形にすべきと思います。
また、rm コマンドが rm -i のエイリアスとなっている場合、上記コマンドが正常に動かないという問題も
ありますが、ここでは考えない、という注意書きがあれば良いと思いました。
以上
librabochi
投稿数: 1
hijikata11さん、横から済みません。1つ教えて下さい。
アスタリスクはシェルによってまず展開され、それがrmコマンドに渡されると思います。
例えばカレントディレクトにa,b,cという3ファイルがある場合
rm *
は
rm a b c
a,b,cがrmコマンドに渡された後、アスタリスクはリアルタイムで監視を続け、新たにdというファイルが作成されればdもrmコマンドに渡す、という動きをするという事でしょうか。
この問題の場合、rm.logが作成されるのは既にアスタリスクが展開されて、カレントディレクトリの内容がrmコマンドに渡された後だと思うので、上記のように思いました。
認識が違っていたら済みませんが教えて頂ければ幸いです。
アスタリスクはシェルによってまず展開され、それがrmコマンドに渡されると思います。
例えばカレントディレクトにa,b,cという3ファイルがある場合
rm *
は
rm a b c
a,b,cがrmコマンドに渡された後、アスタリスクはリアルタイムで監視を続け、新たにdというファイルが作成されればdもrmコマンドに渡す、という動きをするという事でしょうか。
この問題の場合、rm.logが作成されるのは既にアスタリスクが展開されて、カレントディレクトリの内容がrmコマンドに渡された後だと思うので、上記のように思いました。
認識が違っていたら済みませんが教えて頂ければ幸いです。
Re: Re: 問題ID: 7686 (rm ./* 2> rm.log)について*/
msg# 1.1.1
ゲスト
投稿数: 0
メタキャラクタ展開よりリダイレクトの処理が先です。
…と思っていたのですが、今試してみると bash だと
メタキャラクタ展開の方が先なんですね (bash-3.2.25 で確認)。
よって、bash だと、rm.log が残ります。ただしすでに
rm.log が存在していた場合は rm.log が残りません。
ちなみに tcsh だとリダイレクトが先でした
(tcsh-6.14.00 で確認)。tcsh だと "2>" がないですが、
rm * > rm.log
だと rm.log は残りません。
LPIC だし、"2>" と書いている時点で sh 系だし、
まぁいいのかもしれませんが、良問とは言えないかと思います。
…と思っていたのですが、今試してみると bash だと
メタキャラクタ展開の方が先なんですね (bash-3.2.25 で確認)。
よって、bash だと、rm.log が残ります。ただしすでに
rm.log が存在していた場合は rm.log が残りません。
ちなみに tcsh だとリダイレクトが先でした
(tcsh-6.14.00 で確認)。tcsh だと "2>" がないですが、
rm * > rm.log
だと rm.log は残りません。
LPIC だし、"2>" と書いている時点で sh 系だし、
まぁいいのかもしれませんが、良問とは言えないかと思います。