В Unix я знаю, что 0 1 и 2 представляют stdin stdout и stderr.
Почему cat 0> файл не работает
Как я понимаю, команда cat
, что означает «concatenate», может конкатенировать разные файлы.
Например, cat file>&1
может сцепить file
и стандартный вывод и стрелка означает, что перенаправление из file
на стандартный вывод, таким образом, мы можем видеть содержимое file
от терминала, который является стандартным выводом.
Но я не понимаю, почему ниже команда не работает:
cat 0>file
Я думаю, эта команда должна работать, потому что это означает, что конкатенировать стандартный ввод и file
и сделать перенаправление от stdin до file
.
Однако это не работает, и я получаю сообщение об ошибке:
cat: input error on standard input: Bad file number
Я думал, что cat > file
и cat 0>file
точно так же, как и cat file
cat file>&1
точно так же, но мне кажется, что я не прав ...
К моему удивлению, cat 1>file
и cat > file
- это то же самое. Зачем?
'>' не является конкатенацией: он перезаписывается. Конкатенация - '>>'. – Ruslan
@ Руслан ОК. 'cat 0 >> file' тоже не работает. – Yves
Что вы пытаетесь достичь? Какова логика попытки «cat» stdin и файла? – PeterK