Переменная URL-адреса файла пути пользователя (Ubuntu)

Надеюсь, я правильно понимаю. Этот сценарий удалит все из строки, начиная со второго * до конца буфера, создав желаемый результат из примера:

sed -n 'H;1h;$x;$s/\(\*[^*]*\)\n\*.*$/\1/p'

Пояснение добавить все строки ( H ) в буфер удержания. Для удержания последнего обмена строкой и буфера шаблонов ( $ x ), поэтому у вас есть весь файл как один шаблон. В этом шаблоне сохраняемая часть устанавливается в \ (\) и сохраняется ( \ 1 ), в то время как все, начиная с новой строки с * , удаляется.

Это соответствует вашему описанию, но если это не подходит для всех возможных примеров, вы можете изменить сценарий.

1
26.08.2018, 01:04
2 ответа

Не знаю, поможет ли это вам, но вы можете переписать свой код как здесь:

#!/bin/bash -l
#$ -S /bin/bash
#$ -N $1

rm -rf ~/.minecraft
cp -rn  /media/$1/MC/minecraft  ~/
mv /home/$1/minecraft /home/$1/.minecraft
java -jar Minecraft.jar

и указать пользователя в аргументе: sh this_script.sh userбудет использовать путь /media/user.

Если вам нужен текущий пользователь, используйте:

sh this_script.sh `whoami`

Возможно, вы можете добавить sudoперед командами, если вам это нужно.

0
27.01.2020, 23:45

Если все системы, которые вы используете, используют BASH (как указано в вашем операторе hashbang в вашем скрипте), вы можете отредактировать третью строку, чтобы использовать переменную среды EUID:

sudo cp -rn /media/${EUID}/MC/minecraft ~/

$EUID будет верните свой эффективный идентификатор пользователя. Он работает с sudo, что означает, что он знает разницу между командой с эскалацией sudo и командой без эскалации.

Следующее просто демонстрирует, как он реагирует на вызовы от меня, от меня с помощью sudo и от root

[sheepd0g@sys42 ~]$ echo $EUID
17388
[sheepd0g@sys42 ~]$ sudo echo $EUID
17388
[sheepd0g@sys42 ~]$ su -c 'echo $EUID'
0
1
27.01.2020, 23:45

Теги

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