Unixでは、0と2はstdin stdoutとstderrを表しています。
なぜcat 0>ファイルが動作しないのですか
私が理解しているように、「連結」を意味するコマンドcat
は、異なるファイルを連結することができます。例えば
、cat file>&1
はfile
とstdoutを連結することができ、矢印はstdoutにfile
からリダイレクトを意味するので、我々は標準出力である端末からfile
の内容を見ることができます。
しかし、以下のコマンドが動作しない理由を私は理解していない:
cat 0>file
私は、このコマンドが動作するはずだと思う、それはstdinとfile
を連結して行うようにすることを意味するのでstdinからfile
へのリダイレクト。
それが動作しないと、私はエラーを取得するしかし:
cat: input error on standard input: Bad file number
私はちょうどcat file
とcat file>&1
のようにまったく同じですが、私が間違っているようで、cat > file
とcat 0>file
がまったく同じであることを考えました...
私の驚いたことに、cat 1>file
とcat > file
は同じです。どうして?
'>'は連結されていません。上書きされます。連結は '>>'です。 – Ruslan
@Ruslan OK。 'cat 0 >> file'も動作しません。 – Yves
あなたは何を達成しようとしていますか? 'cat'スタンダードとファイルをしようとする背後にある論理は何ですか? – PeterK