Этот вопрос касается другого вопроса. Если бы я вставляю предложенный код @kyodake, внезапно в терминале он работал бы?
Или я должен пойти линию за линией?
Существует несколько подходов к разрешению нескольким командам, выполненным с sudo
.
Первый удовлетворяет Вашему примеру использования лучше всего. Другие добавляются ради исследования альтернатив; они не могут удовлетворить Вашей конкретной потребности, но могут пригодиться Вам в будущем или других пользователях.
Подход № 1: Самый Чистый и самый простой
Поместите все в сценарий, например myscript.sh
, сделайте исполняемый файл файла с chmod 755 myscript.sh
, и запущенный тот скрипт с sudo myscript.sh
Подход № 2: длинная строка команд
Вам нужно что-то с полномочиями суперпользователя выполнить несколько команд. Это было бы оболочкой, (любая оболочка в этом отношении, bash
или sh
). Оболочки имеют a -c
флаг, который говорит им выполнять команду или ряд команд, разделенных точкой с запятой ;
. Простой пример: sudo bash -c 'apt-get update; apt-get upgrade'
. В частности, ответ kyodake может быть восстановлен как так:
sudo bash -c 'apt-get update;apt-get install --reinstall aptitude deborphan mate-desktop; aptitude remove '?and(?reverse-depends(unity),?not(?reverse-depends(?exact-name(mate-desktop))))';aptitude remove '?and(?reverse-depends(ubuntu),?not(?reverse-depends(?exact-name(mate-desktop))))';aptitude remove '?and(?reverse-depends(gnome),?not(?reverse-depends(?exact-name(mate-desktop))))';apt-get install --reinstall mate-desktop;deborphan;apt-get --purge remove $(deborphan);deborphan --libdevel;apt-get --purge remove $(deborphan --libdevel);deborphan --find-config;dpkg --purge $(deborphan --find-config);apt-get autoremove;apt-get clean;reboot'
Длинный? Да. Этот подход работает лучше, когда необходимо выполнить всего несколько команд с sudo.
Подход № 3: проигрывание с sudo тайм-аутом
По умолчанию, sudo
полномочие испытывает таймаут после 15 минут. Таким образом, если Вы уверены, что все те команды не займут у этого много времени, Вы могли бы выполнить первую команду с sudo
и будет запрошен пароль; для всех последующих команд Вам не предложат, но все еще необходимо ввести sudo
.
Подход № 4: использование корневой оболочки
Поскольку kyodake предложил себя в ответе, входе в систему корневой оболочки с sudo -i
использовать полномочие пользователя root до Вас exit
. Обратите внимание на то, что это не рекомендуется из соображений безопасности. Если Вы не будете на 100% уверены, что не забудете выходить из системы, после того как Вы сделаны, работая, и никто не войдет в Вашу корневую оболочку, затем... использовать этот подход по Вашему усмотрению.
Однако проблема здесь $
/ #
символы в начале каждой строки, которая повредила бы каждую команду; удаление их обязательно прежде, чем запустить скрипт всегда .
я думаю самое быстрое / самый прямой способ сделать, это должно было бы обработать его и выполнять его одновременно использование следующего метода:
#
символы в запуске) sed 's/^.//' <<EOF | sudo bash
EOF
Преимущества против создания сценария нарочно и выполнения его:
$
/ #
, символы Вот являются примером с помощью этого сценария:
# whoami
# echo command1
# echo command2
# echo command3
ubuntu@ubuntu ~ % sed 's/^.//' <<EOF | sudo bash
ubuntu@ubuntu ~ pipe heredoc> # whoami
ubuntu@ubuntu ~ pipe heredoc> # echo command1
ubuntu@ubuntu ~ pipe heredoc> # echo command2
ubuntu@ubuntu ~ pipe heredoc> # echo command3
ubuntu@ubuntu ~ pipe heredoc> EOF
root
command1
command2
command3