Добавьте вывод команды в txt файл и поместите его в не перезаписываемый каталог?

Если я пробую, например:

каталог A у меня нет разрешения записи на нем

sudo ls -l > /home/A/a.txt
bash: /home/A/a.txt: Permission denied

Затем, как я могу сделать этот прием, какое-либо Предложение ценится.

0
задан 17 May 2014 в 12:17

3 ответа

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 сохраняет его в памяти), но я думаю больше, чем что-нибудь, что это - объективно более симпатичный код. Это - недооцененный аспект, когда Вы имеете дело с этой ерундой на ежедневной основе.

4
ответ дан 8 August 2019 в 19:14

Можно создать файл с помощью sudo (или как пользователь, владеющий каталогом):

sudo touch /home/A/a.txt

Теперь можно сделать другого пользователя владельцем из использования файла:

sudo chown username:username /home/A/a.txt

Замена username именем пользователя Вы хотите быть владельцем.

Или если Вы хотите, чтобы все пользователи были в состоянии считать и отредактировать файл:

sudo chmod 666 /home/A/a.txt
<час>

Примечание: использование > Вы не добавите в файл. Используйте >> для добавления.

0
ответ дан 8 August 2019 в 19:14

ответ Oli Прекрасен, после поиск Google , который я пытался запустить, окружает себя с полномочием:

Команда:

sudo bash -c " ls -l > /home/A/a.txt"

И его решенный.

0
ответ дан 8 August 2019 в 19:14

Другие вопросы по тегам:

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