1

ターミナルで「rmdir *」を実行してみました。一部のファイルは現在のフォルダーの下のディレクトリではないため、一部のファイルがディレクトリではないことを示すエラー メッセージが表示されます。私の目標は、出力なしでコマンドをサイレントに実行することです。

私は次のことを試しました:

rmdir * > /dev/null
rmdir * > file.txt
rmdir * |grep "noexist"  (some non-existing characters)
rmdir * 2>&1 > /dev/null
rmdir * 2>&1 > file.txt
rmdir * 2>&1 |grep "noexist"

最後のコマンドのみが機能します。少し混乱しています。最後のコマンドが機能するのに、4 番目と 5 番目のコマンドが機能しないのはなぜですか?

4

3 に答える 3

4

>STDOUT をリダイレクトします。2>STDERR をリダイレクトします。&1STDOUT にリダイレクトします。|新しいプロセスの STDOUT を STDIN に転送します。

試しましたか:

rmdir * > /dev/null 2> /dev/null

STDOUT と STDERR の両方を null デバイスにリダイレクトします。

于 2013-07-04T18:35:39.463 に答える
1
1) Doesn't redirect stderr using 2>...
2) See 1.
3) See 2.
4) Redirects stderr to stdout, and stdout is redirected to /dev/null, so you still see the redirected stderr on stdout.
5) See 4. The file to which stdout is redirected is just different.
6) This works because you redirected stderr to stdout. stdout is piped in to grep as grep's stdin.

本当に機能するもの:

rmdir * >/dev/null 2>&1

なぜそれが機能するのですか?最初の stdout が /dev/null にリダイレクトされたためです。その後、stderr は stdout にリダイレクトされましたが、stdout は既に /dev/null にリダイレクトされていました。

于 2013-07-04T18:41:54.257 に答える
0

U cant use rmdir ディレクトリが空になるまで..確認してください..操作を実行する前に..

于 2013-08-14T01:28:35.667 に答える