переключение на пользователя sudo с помощью команды AND не работает

Если я правильно понимаю вопрос, который вы хотите Получите только значения после = и храните эти значения в отдельных файлах, на основе второго поля (?). Если я правильно, попробуйте что-то вроде этого:

$ awk -F'[ =]' '{print $6>"file_"$2".txt"}' file

Результат:

$ ls -1
  file_leftWallPhi.txt
  file_leftWallUSf.txt
  file_leftWallrhoPhi.txt
  file_leftWallrhoUSf.txt
  file_loweWallrhoPhi.txt
  file_loweWallrhoUSf.txt
  file_lowerWallPhi.txt
  file_lowerWallUSf.txt

$ cat  file_leftWallPhi.txt
  5.12623e-12
0
14.06.2015, 10:49
3 ответа

Вам следует попробовать

sudo cp /home/sk/keys/master.pem /home/sg-user/keys/
0
28.01.2020, 02:28

Когда команды выполняются, они разделяются на дочерние процессы, поэтому когда команда 'su' выполняется, она будет выполняться в отдельном процессе к команде cp, а не внутри корневого терминала.

Команда будет работать, если вы запустите cp с помощью sudo, но она не будет выполняться внутри корневого терминала, для этого вам придется запускать команды отдельно внутри su.

sudo su && sudo cp /home/sk/keys/master.pem /home/sg-user/keys/

Команда 'sudo so &&' является избыточной, однако, если вы только пытаетесь выполнить копирование. Это должно быть все, что нужно:

sudo cp /home/sk/keys/master.pem /home/sg-user/keys/
2
28.01.2020, 02:28
 sudo su && cp /home/sk/keys/master.pem / home / sg-user / keys / 
 

Это запускает команду sudo su . sudo su запускает интерактивную оболочку от имени пользователя root, это в основном эквивалентно sudo -s или sudo bash (если ваша оболочка - bash). После завершения этой команды, если она вернула статус успеха, команда cp выполняется от имени исходного пользователя.

Что касается оболочки, sudo - это обычная команда, а не специальный синтаксис оболочки. Таким образом, как и любая другая команда, && является разделителем команд, и сначала выполняется команда слева от нее, затем команда справа (если первая команда была успешной).

  sudo su && cp /home/sk/keys/master.pem / home / sg-user / keys / && exit 
 

Этот вариант делает то же самое, за исключением того, что он выходит из родительской оболочки один раз sudo su возвращается, и файл был скопирован (при условии, что эти операции были успешными). Команда su запускает интерактивную оболочку, которая запускает команды, которые вы передаете ей в качестве входных данных, а не команды, которые родительская оболочка будет запускать позже.

Если вы хотите запустить две команды от имени пользователя root, а вторую - только в случае успеха первой, вы можете дважды вызвать sudo :

sudo command1 && sudo command2

или сделать sudo вызвать оболочку и использовать оператор && в этой вложенной оболочке:

sudo sh -c 'command1 && command2'

В вашем случае вы выполняете только одну команду, поэтому просто

sudo cp /home/sk/keys/master.pem /home/sg-user/keys/

sudo su в основном всегда бесполезно , потому что оба sudo и su используются для смены пользователей.Поскольку sudo уже запускает указанную команду от имени пользователя root, su является избыточным. Это просто запускает оболочку от имени пользователя root, что вы можете сделать с помощью sudo su .

1
28.01.2020, 02:28

Теги

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