Если я пробую, например:
каталог A у меня нет разрешения записи на нем
sudo ls -l > /home/A/a.txt
bash: /home/A/a.txt: Permission denied
Затем, как я могу сделать этот прием, какое-либо Предложение ценится.
tee
люди команды, обычно использовал бы. Можно передать по каналу к нему, и это перенаправляет в файл (а также консоль).
ls -l | sudo tee /home/A/a.txt
Это также имеет добавлять флаг (эквивалентный >>
):
ls -l | sudo tee -a /home/A/a.txt
Альтернатива переносит всю подоболочку в Ваш sudo:
sudo bash -c 'ls -l > /home/A/a.txt'
Я предпочтение tee
главным образом, потому что тот путь Вы все еще выполняете объем команды как более низкий пользователь. Когда Вы переносите все в a sudo bash -c '...'
создайте, все это выполняется как пользователь root. Перенаправление чего-то как whoami
в каталог другого пользователя мог стать неприятным.
Поскольку я веду с, tee
также возвращает вывод назад к STDOUT
. Это делает команды объединения в цепочку довольно простыми.
Например, если Вы хотели скомпилировать .less файл в CSS (и сохранить его), "минимизируют" тот CSS (и сохраните его), и затем сожмитесь, который минимизировал копию с gzip, чтобы сохранить Ваш сервер, делающий его (и сохранить это).
Вы могли использовать пустые команды, с помощью полных имен файлов каждый раз:
lessc less/bootstrap.less > dist/bootstrap.css
cleancss --selectors-merge-mode ie8 dist/bootstrap.css > dist/boostrap.min.css
gzip -qk9 dist/boostrap.min.css
или просто передайте его по каналу вокруг с мишенью:
lessc less/bootstrap.less | tee dist/bootstrap.css \
| cleancss --selectors-merge-mode ie8 | tee dist/boostrap.min.css \
| gzip -qc9 > dist/boostrap.min.css
Это - код, который я ежедневно использую.
Это, вероятно, более эффективно (Вы сохраняете чтение из последующих файлов, tee
сохраняет его в памяти), но я думаю больше, чем что-нибудь, что это - объективно более симпатичный код. Это - недооцененный аспект, когда Вы имеете дело с этой ерундой на ежедневной основе.
Можно создать файл с помощью sudo
(или как пользователь, владеющий каталогом):
sudo touch /home/A/a.txt
Теперь можно сделать другого пользователя владельцем из использования файла:
sudo chown username:username /home/A/a.txt
Замена username
именем пользователя Вы хотите быть владельцем.
Или если Вы хотите, чтобы все пользователи были в состоянии считать и отредактировать файл:
sudo chmod 666 /home/A/a.txt
<час> Примечание: использование >
Вы не добавите в файл. Используйте >>
для добавления.
ответ Oli Прекрасен, после поиск Google , который я пытался запустить, окружает себя с полномочием:
Команда:
sudo bash -c " ls -l > /home/A/a.txt"
И его решенный.