По мере того, как я все больше и больше играю с Ubuntu, я начинаю понимать, как я могу автоматизировать большинство повторяющихся команд, которые я выполняю всякий раз, когда переустанавливаю операционную систему. Пока что это всего лишь один гигантский список команд скрипта / терминала apt-get, связанный десятками символов &&.

Раньше я был приличным в питоне, но я довольно много забыл. Вот как сейчас выглядит моя команда apt-get (которую я просто вставляю и нажимаю ввод):

sudo add-apt-repository -y ppa:numix/ppa && sudo add-apt-repository -y ppa:gwendal-lebihan-dev/hexchat-stable && sudo add-apt-repository -y ppa:webupd8team/nemo && sudo apt-get update && sudo apt-get install -y numix-icon-theme numix-gtk-theme docky hexchat nemo nemo-fileroller dconf-tools vlc unity-tweak-tool gnome-tweak-tool python-pip && sudo pip install speedtest-cli && gsettings set org.gnome.desktop.background show-desktop-icons false && xdg-mime default nemo.desktop inode/directory application/x-gnome-saved-search && gsettings set org.gnome.desktop.interface gtk-theme "Numix" && gsettings set org.gnome.desktop.interface icon-theme 'Numix-Circle' && gsettings set com.canonical.desktop.interface scrollbar-mode normal

Я знаю, это не совсем чисто. Я не хочу продолжать делать это таким образом, и я хотел бы превратить его в своего рода скрипт, который мне было бы намного проще обновлять, поддерживать и читать. Вот какой-то псевдокод, который я набрал из того, что я хотел бы сделать.

#Install/Config Script

#Add Repos
print ("Adding Numix, Hexchat, and Webupd8 Repositories...")
enter.line ('sudo add-apt-repository -y ppa:numix/ppa && sudo add-apt-repository -y ppa:gwendal-lebihan-dev/hexchat-stable && sudo add-apt-repository -y ppa:webupd8team/nemo')

#Update Repos
print ("Updating repostiory lists...")
enter.line ('sudo apt-get update')

#Install apps
print ("Installing Numix Icon Theme...")
enter.line ('sudo apt-get install -y numix-icon-theme')
print ("Installing etc etc...")

#Configure Nemo File Explorer
print ("Configuring Nemo as default file manager")
enter.line ('gsettings set org.gnome.desktop.background show-desktop-icons false')
enter.line ('xdg-mime default nemo.desktop inode/directory application/x-gnome-saved-search')

#Set Numix Theme and fix scrollbars
print ("Setting Numix GTK and Icon Set...")
enter.line ('gsettings set org.gnome.desktop.interface gtk-theme "Numix"')
enter.line ('gsettings set org.gnome.desktop.interface icon-theme 'Numix-Circle'')
enter.line ('gsettings set com.canonical.desktop.interface scrollbar-mode normal
')

По сути, я хотел бы иметь возможность сохранить его как своего рода исполняемый скрипт, и просто запустить его в терминале и позволить ему делать свое дело. Я знаком с Java, C++ и Python, но с тех пор, как я его написал, прошло много времени.

Любые предложения для кого-то, пытающегося вернуться в игру, будут очень благодарны! Обратите внимание, что я не прошу никого делать всю работу за меня. Я с нетерпением жду возможности попробовать и потерпеть неудачу, поскольку сам разбираюсь в этом, я просто хотел бы получить некоторую информацию о том, как начать, какой язык использовать, организационные схемы и любые другие полезные советы для начала работы.

2 ответа2

1

Просто сохраните эту строку в файле, скажем, do_stuff.sh . И запустить это так . path/to/do_stuff.sh .

Если вы действительно хотите сделать это правильно, просто добавьте #!/bin/bash в качестве первой строки и chmod +x path/to/do_stuff.sh . Затем вы можете запустить его как исполняемый файл.

Нет необходимости (пере) изучать python - bash - это язык сценариев.

1

Используйте скрипт оболочки (bash):

#!/bin/bash
#above line ensures it runs with bash because of the '#!'
sudo apt-get update
sudo apt-get install -y numix-icon-theme package2 package3 package4
sudo apt-get install -y package5 package6 package7 etc

gsettings set org.gnome.desktop.interface gtk-theme "Numix"

В качестве альтернативы, если вы знаете, что ваши предпочтения изменятся, вы можете написать скрипт, который читает во входном файле:

#newserver.in
install,numix-icon-theme,package2,package3
install,package4
custom,gsettings,"set org.gnome.desktop.interface gtk-theme \"Numix\""

Чтение входного файла

#!/bin/bash
infile=foobar.in
thisserver=""

cat $infile | while read line
do
   case $line in
      "#"*) [ ];; #matches commented lines
      "") [ ]  ;; #matches empty lines
      *)          #matches the rest
         #echo $line 
         while IFS=, read val1 val2 val3 val4 val5 val6
         do
            #echo "val1=$val1   val2=$val2   val3=$val3   val4=$val4"
            #echo "$thisserver    $line"
            if [[ "$thisserver" == author* ]] && [ "$val1" != "SERVER" ];
            then
               echo "$val1 $val2 wrote during the $val3"
            elif [[ "$thisserver" == movies* ]] && [ "$val1" != "SERVER" ];
            then
               echo "$val1 ($val2) rates $val3 on imdb.com"
            fi
            if [ "$val1" = "SERVER" ];
            then
               echo "$val2"
               thisserver=$val2
            fi

         done <<< $line
         ;;
   esac

done

foobar.in

#foobar.in

# example comment
SERVER,authors.example.com,
alexandre,dumas,1700s
robert,heinlein,1900s,science fiction, nothing to see here, extra properties

timothy,zahn,1900s,
mark,twain,1800s,
SERVER,movies.example.com,
The Avengers,2012,8,
Star Wars,1997,9,
Ratatouille,2007,8,

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .