Печать вывода на экране и перенаправление в файл, а также пересылка ошибок в другой файл

Чтобы получить доступ к каталогу, сам каталог, а также все промежуточные каталоги от корня вниз должны иметь разрешение xдля данного пользователя, его группы или всех. Это позволило бы читать файлы в каталоге, если бы кто-то знал их имена путей (, перечисляющие содержимое каталога, не было бы разрешено, если rтакже не действовало ).

Для мира -запись -только каталог («запись» означает «разрешение создания и удаления файлов и подкаталогов, а также обновление их метаданных» ), права доступа к самому каталогу должны быть wx, и все родительские каталоги должны иметь как минимум x.

Если вы создаете «почтовый ящик» в своем домашнем каталоге, то:

cd
mkdir directory
chmod o=wx,g=wx directory
chmod a+x "$HOME"

Обратите внимание, что я также даю группеwxдоступ к каталогу здесь (вместо того, чтобы использоватьg=).Члену группы, владеющему каталогом (, возможно, ваша основная группа ), в противном случае был бы явно запрещен доступ к каталогу, даже если o=wxдействовал.

Предполагая, что вы как владелец имеете rwxразрешения на доступ к каталогу, это эквивалентно восьмеричным разрешениям 0733 для каталога "Drop Box".

0
09.03.2021, 12:34
1 ответ

Просто используйте tee. Но чтобы получить стандартную ошибку, вам нужно перенаправить стандартную ошибку исходной программы. Канал(|)только передает стандартный вывод в tee, поэтому файл ошибок пуст. То, что вы хотели, это:

ls /etc /dvd /var 2> /tmp/ioerror | tee /tmp/ioutput 

Если вы хотите видеть на экране и stderr, и stdout, попробуйте следующее:

ls /etc /dvd /var 2> >(tee /tmp/ioerror) | tee /tmp/ioutput 

Это сначала перенаправит stderr на tee /tmp/ioerror, что означает, что вы увидите его на экране и сохраните в файле, а затем он направит stdout на tee /tmp/ioutput , гарантируя, что он также будет распечатан и сохранен в файле..

3
18.03.2021, 22:26

Теги

Похожие вопросы