Если я правильно понимаю вопрос, который вы хотите Получите только значения после =
и храните эти значения в отдельных файлах, на основе второго поля (?). Если я правильно, попробуйте что-то вроде этого:
$ 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
Вам следует попробовать
sudo cp /home/sk/keys/master.pem /home/sg-user/keys/
Когда команды выполняются, они разделяются на дочерние процессы, поэтому когда команда '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/
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
.