Как вставить код в терминал и выполнить его по строкам? (он имеет sudo)

Предположим, что вы используете команду say xyz, чтобы получить этот вывод, тогда

xyz | grep "[8-9][5-9]%"

должен дать вам правильный вывод

1
задан 29 July 2016 в 22:24

5 ответов

В вашем случае ответ заключается в изменении команд, которые вы используете. Вы пытаетесь запустить оболочку bash как root, чтобы выполнить команду. Чистый способ сделать это - просто запустить sudo command. Итак, все, что вам нужно, это скопировать вставьте прямо в ваш терминал:

wclean
sudo wmake

Вам не нужно сначала запускать sudo bash, а затем wmake, запустить wmake с помощью sudo напрямую. Вы также не нуждаетесь в ; в конце каждой команды. [F8] требуется, только если вы используете две команды в одной строке (например, comm1; comm2).

2
ответ дан 23 May 2018 в 07:41
  • 1
    Это был только пример. Я понимаю, что в этом случае мы можем просто изменить порядок. – Vitor Abella 29 July 2016 в 22:07

Если вы входите в качестве суперпользователя, вся выполняемая вами команда будет предоставлена ​​с привилегиями суперпользователя, поэтому пароль не будет задан.

Просто введите sudo su в приглашении терминала, прежде чем вставлять свои команды , Запрос должно быть изменено с $ на #.

0
ответ дан 23 May 2018 в 07:41
  • 1
    Это нарушает принцип наименьших привилегий. Команды всегда должны запускаться с наименьшими привилегиями, что означает не запускать ничего как root, если это действительно необходимо. Открытие корневой оболочки - это то, что вам следует избегать. – Byte Commander 29 July 2016 в 11:20
  • 2
    Кроме того, не используйте sudo su. Это неэлегантно и не нужно . Вместо этого используйте sudo -i. – terdon♦ 29 July 2016 в 12:23

Простой, скопируйте это и вставьте в файл, а затем выполните файл, например:

nano test.sh
Ctrl+Shift+V [to paste the code]
Ctrl+O [Save it]
Ctrl+X [Exit]
chmod 755 test.sh
./test.sh

Cheers

0
ответ дан 23 May 2018 в 07:41
  • 1
    Нет необходимости в временном файле, у Bash есть встроенная функция редактора команд. Подробнее см. Мой ответ. Но кроме этого вы также можете сохранить один шаг, выполнив bash test.sh вместо chmod 755 test.sh ; ./test.sh. И chmod +x test.sh также будет проще. – Byte Commander 29 July 2016 в 11:18
  • 2
    Спасибо за эту информацию, да sh test.h даже сохранит две буквы: P. Умм, использующий 755, мне легче. – Kuntal Majumder 29 July 2016 в 11:42

Как прокомментировал @jiipeezz, нет ничего плохого в том, что не продолжать после sudo bash, потому что с помощью этой команды вы открываете новую оболочку. Фактически, завершение оболочки (с exit) выполняется следующая команда. Если вы хотите запустить команду wmake в качестве суперпользователя, тогда вам нужно передать команду в качестве аргумента shell, с sudo bash -c 'wmake'. Попробуйте:

wclean;
sudo bash -c 'wmake';

Но я не думаю, что имеет смысл запускать одну команду в новой оболочке, вместо этого она использует sudo для непосредственного запуска команды.

0
ответ дан 23 May 2018 в 07:41

Вы можете изменить точки с запятой (;) с помощью '& amp; & amp;' без кавычек, например, в вашем случае:

wclean &&
sudo bash &&
wmake 

BTW no '& amp; & amp;' в конце.

Хороший день

-1
ответ дан 23 May 2018 в 07:41
  • 1
    И какая польза от этого будет в первоначальном подходе OP с точкой с запятой? && означает, что следующая команда запускается только в том случае, если предыдущий успешно прошел без ошибок (код выхода 0). Здесь это не помогает. – Byte Commander 29 July 2016 в 11:15
  • 2
    Таким образом выполняется команда после команды с sudo. С точкой с запятой это не так. (по крайней мере, когда я пытаюсь). – Pejo30 30 July 2016 в 07:40
  • 3
    Нет, с ; последняя команда будет выполняться в любом случае, но с && она будет выполнена только в том случае, если предыдущая команда завершилась успешно. – Byte Commander 30 July 2016 в 10:22

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

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