gunzip и создайте каталоги после имени zip-файла

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

gpasswd -a "${SUDO_USER}" docker

или

gpasswd -a "${SUDO_USER-$USER}" docker

, если вы хотите вернуться к USER в отсутствие SUDO_USER.

Команда, которая заставляет вас войти в систему как root (строго говоря, это не меняет ваш логин, она запускает новую оболочку)

newgrp docker

Чтобы это исправить, то есть закончите как вы с docker в качестве вашей основной группы, вам нужно запустить это как себя; предполагая, что sudo,

su "${SUDO_USER}" -c "newgrp docker"

сделает это.

Обратите внимание, что завершение вашего скрипта с newgrp таким образом означает, что ваш скрипт не завершается как таковой, когда вы получаете новое приглашение; результат:

  • оболочка, в которой вы находитесь при вводе sudo ./myscript.sh
    • sudo
      • запущенная оболочка myscript.sh
        • newgrp
          • запущенная оболочка с docker в качестве основной группы

Сценарий завершится только при выходе из оболочки, запущенной newgrp.

0
08.06.2017, 16:28
2 ответа

Во-первых, было бы проще, если бы вы немного переформулировали свой вопрос. Легко решается с помощью какого-то сценария. Следующее должно работать в сценарии BASH. Запустите его с именем файла в качестве первого аргумента. Например, "./change_name_script.sh hdf5-1.8.18.tar.gz" и он будет работать так, как вы хотите

#!/bin/bash
filename=$1

gunzip < $filename | tar xf -
move_filename=$(echo $filename | sed -r 's/.tar.gz$//')
first_part=$(echo "$move_filename" | sed -r 's/-.*$//')
second_part=$(echo "$move_filename" | sed -r 's/^.*-//')

mkdir $first_part
mv $move_filename $first_part/$second_part
2
28.01.2020, 02:19

Возможно, вы захотите взглянуть на опцию -C команды tar.

tar zxf hdf5-1.8.18.tar.gz -C hdf

разархивирует, распаковает и поместит каталог в каталог hdf/.

2
28.01.2020, 02:19

Теги

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