Команда:
/etc/passwd >> file.log
пытается выполнить файл /etc/passwd
, но /etc/passwd
не является исполняемым файлом, отсюда и ошибка отказа в разрешении .
Чтобы перенаправить содержимое файла, вы можете использоватьcat
:
cat /etc/passwd >> file.log
(На самом деле вы можете использовать любую другую команду, которая читает файлы и выводит их содержимое на стандартный вывод, например sed '' /etc/passwd
или awk 1 /etc/passwd
).
sudo > api-server-out-0.log
не работает. Что он на самом деле делает, он запускается sudo
без каких-либо параметров и пытается перенаправить свой вывод под вашей учетной записью пользователя в указанный файл, что, конечно, не сработает, поскольку файл принадлежит root.
То, что вы действительно хотите сделать, это что-то вроде
sudo dd if=/dev/null of=api-server-out-0.log
# or
sudo truncate -s 0 api-server-out-0.log
# or
sudo sh -c 'echo -n "" > api-server-out-0.log'
# or
sudo sh -c ': > api-server-out-0.log'
Артем С. Ташкинов описал «почему» и предложил некоторые из множества вариантов. Вот еще один способ сделать это:
sudo tee api-server-out-0.log </dev/null