Я хочу делать:
echo "something" >> /etc/config_file
Но, поскольку только пользователь root имеет право на запись в этот файл, я не могу этого сделать. Но следующее также не работает.
sudo echo "something" >> /etc/config_file
Есть ли способ добавить файл в такой ситуации, не открывая его сначала с помощью sudo
редактора 'd, а затем добавляя новый контент вручную?
linux
command-line
sudo
hsribei
источник
источник
ls
с каталогом пути показывает файлы, аls
с шаблоном файла нет?Ответы:
Использовать
tee -a
(илиtee --append
) сsudo
Так ваша команда становится
Преимущества
tee
выполнения Bash с правами администратора:источник
tee
имеет-a
флаг добавления.echo "output" | sudo tee -a file > /dev/null
если хотите пропустить вывод консоли.Перенаправление выполняется в текущей оболочке. Чтобы выполнить перенаправление с повышенными привилегиями, вы должны запустить саму оболочку с повышенными привилегиями:
источник
Есть ли у sudo суб-оболочка:
В этом примере sudo запускает «sh» с остальными в качестве аргументов.
(это показано в качестве примера на странице руководства sudo)
источник
Я обычно использую оболочку ЗДЕСЬ для документа с sudo tee -a . Что-то вроде:
источник
На мой взгляд, лучшим в этом случае является дд:
источник
Здесь может быть проблема с sudo и перенаправлением. Используйте текстовый редактор по вашему выбору, чтобы добавить строку.
Или вы можете попробовать вместо этого su
источник
su -c 'echo "JAVA_HOME=/usr/lib/jvm/java-6-sun" >> /etc/profile'
должно сработать. поскольку нет ничего, что оболочка может ошибочно развернуть в arg, чтобы повторить, заключите в кавычки всю команду.Это не сработает, вы пытаетесь перенаправить (используя
>>
) вывод sudo. Что вы действительно хотите сделать, это перенаправить выводecho
. Я предлагаю вам просто использовать ваш любимый редактор и добавить эту строку вручную/etc/profile
. Это имеет дополнительное преимущество, которое вы можете проверить, если/etc/profile
уже устанавливаетJAVA_HOME
.источник
Используйте ex -way:
и замените его
FOO
вашей переменной для добавления.В некоторых системах (например, OS X)
/etc/profile
файл имеет 444 разрешения, поэтому, если вам по-прежнему отказано в разрешении, сначала проверьте и исправьте разрешение:затем попробуйте еще раз.
источник