プロが教える店舗&オフィスのセキュリティ対策術

(ls a b c no-file > /dev/null) >& some_out
では、何が行われてるんでしょうか?教えてください。
また、PCとWSの改行コードの差を確認するにはどうすればいいのでしょうか?

A 回答 (5件)

質問の前半については皆さんの答えられている通り。


後半については、確かにエディタで開いてみて分かる場合もありますが、
LINUX上のvi等自動認識してしまうようなものもありますので、
UNIX上でのことのようですから、ダンプしてしまいましょう。
例えば
Hello
とだけ書かれたファイル(ファイル名file)があったとします。
% od -c file
とコマンド入力します。
UNIX形式なら
00000000 H e l l o \n
DOS形式なら
00000000 H e l l o \r \n
と表示されます。(このサイトの表示は空白がつまってしまいますが)
なお、改行コードの違いはテキストファイルの形式の違いによるもので、
日本語コードの違いによるものではありません。
その点で、finalanswerさんの回答は不正確だと思います。
    • good
    • 0

"> /dev/null" は コマンドが吐き出す標準出力を捨ててしまう時に使用します。


ので、この場合、ls a b c no-file の標準出力はのこりません。
ls コマンドは、引数で指定したファイルが存在しない場合に、

$ ls ファイル名1 ファイル名2 ←存在しないファイル名
ls: ファイル名1: no such file or directory.
ls: ファイル名2: no such file or directory.

のようにメッセージを標準エラー出力に出しますから、この場合はエラーメッセージ(存在しないファイル名の入ったエラーメッセージのリスト?)をsome_out に取り出しているのだと思います。

これが何をしているのか、ときかれると、答えは分からないのですが...。

改行コードについては、
UNIX 系 LF DOS(Windows)系 CR + LF Macintosh CR
の違いがあります。
それぞれに変換してくれるソフトもあります。
Windows なら秀丸エディタにもあるそうです。

確認したいのであれば、それそれのOS の標準のエディタで読み込んでみれば、
見た目で見当はつくと思います。
つかない(自動判定してくれる)のもありますけど。
OS によってそれぞれ方法がちがうので、確実な方法はないかもしれません。

DOS系→UNIX系
改行→^M
次の行^M
その次の行^M

UNIX系→DOS系(Mac系→UNIX系も同様)
改行→(記号のような文字化け)次の行(文字化け)その次の行

Mac系→UNIX系、またはDOS系
改行→
   次の行→
       その次の行

以上、回答になってなくてすいません。
    • good
    • 0

例題として、以下のコマンド


% (ls dir_a > std_out) >& std_err
は、「ディレクトリdir_aの中身を表示させたときの標準出力をファイルstd_outに出力し、バックグラウンドで標準エラー出力をファイルstd_errに出力する」という意味になります。
また、"/dev/null"は、ごみ箱に相当するものです。したがって、標準出力には何も出力しません。

結論として、質問にあるコマンドは「ディレクトリa、b、c、no-fileの中身をそれぞれリスト表示したときの標準エラー出力を、ファイルsome_outにバックグラウンドで出力する。このとき、標準出力は画面に表示しない。」という意味だと思います。
#要するに、ファイルの中身を表示させたときの標準エラー出力がないかをチェックするためのコマンドでしょう。

また、改行コードの判別法についてですが、WS上にファイルがある場合は、ファイルをviコマンドで開き、行の末尾に ^M が表示されていたら、SJISのファイルです。
改行コードは、SJISではCR+LF、EUCではLFとなります。
#PC上にファイルがあった場合は、バイナリエディタを使用すれば確実に判別できます。

参考URL:http://x68000.startshop.co.jp/~68user/unix/
    • good
    • 0

答えは


ls a b c no-file のエラー出力のみを some_out に出力する。
ですね。

おまけ
ls の場合のエラーってファイルがないときとパーミッションがないときでしたっけ??
そのコマンドの目的が何かわからないのですが、
他の実装方法があるような気がします。
    • good
    • 0

ls a b c no-file ・・・a,b,c,no-fileディレクトリの中身を表示する


> /dev/null   ・・・結果を画面表示しない
>& some_out   ・・・結果をsome_outというファイルに出力

だと思うのですが。
そうすると、some_outにはなにも出力されないような・・・。
実際、実行したら、0バイトのファイルができました。
間違ってたらすみません。
    • good
    • 0
この回答へのお礼

ありがとうございます。
自分の場合、実行してmuleで中身を見たら
ls: a: ファイルもディレクトリもありません。
ls: b: ファイルもディレクトリもありません。
ls: c: ファイルもディレクトリもありません。
ls: no-file: ファイルもディレクトリもありません。
この様に出てきました。う~ん。。。

お礼日時:2001/11/07 15:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!