빠른 질문

빠른 질문

저는 프로그래머나 스크립터가 아니라는 점부터 말씀드리겠습니다. 다음은 컴퓨터를 지우고 처음부터 시작할 때 사용하는 스크립트입니다. 이것은 내 사용자 프로필을 설정하기 위한 기본 스크립트(명령 모음과 비슷함)입니다. "필수 소프트웨어 설치"라고 언급된 섹션에서 소프트웨어 이름 목록을 스크립트로 생성한 다음 어떻게든 해당 목록을 호출하고 apt-get 설치 명령을 입력하는 방법이 있는지 궁금합니다. 꼭 필요한 것은 아니지만 가능하다면 이렇게 하고 싶습니다. 이것이 배열이나 그와 유사한 것으로 수행될 수 있는지는 모르겠지만 단 한 줄에서 모든 것을 설치하고 싶습니다. 도움을 주셔서 미리 감사드립니다.

저스틴

#/bin/bash

###################################

# Script Name: deploy.sh
# Creation Date: 28OCT15
# Completion Date: 17FEB18

###################################

# Modify /etc/fstab to include user defined devices

sudo echo >> /etc/fstab
sudo echo >> /etc/fstab
sudo echo "# User defined Devices" >> /etc/fstab
sudo echo >> /etc/fstab
sudo echo "#250G for Downloads/etc" >> /etc/fstab
sudo echo "UUID=9ba4afc0-f565-4bf4-b935-102352dccd2c /mnt/250G     ext4    errors=remount-ro 0     2" >> /etc/fstab

# Installs needed software

sudo add-apt-repository ppa:stebbins/handbrake-releases
sudo apt-get install autofs nfs-common handbrake-cli handbrake lame vim chromium-browser screen ffmpeg htop cdparanoia eyed3 vorbis-tools clementine

# Configures autofs

sudo echo >> /etc/auto.master
sudo echo "/- /etc/auto.direct" >> /etc/auto.master

sudo touch /etc/auto.direct

sudo echo "# /mnt/music -rw 192.168.0.20:/export/music" >> /etc/auto.direct
sudo echo "# /mnt/storage -rw 192.168.0.20:/export/storage" >> /etc/auto.direct
sudo echo "# /mnt/movies -rw 192.168.0.20:/export/movies" >> /etc/auto.direct
sudo echo "# /mnt/shows -rw 192.168.0.20:/export/shows" >> /etc/auto.direct
sudo echo "# /mnt/pictures -rw 192.168.0.20:/export/pictures" >> /etc/auto.direct
sudo echo >> /etc/auto.direct
sudo echo "/mnt/music -rw,hard,intr,nfsvers=3 192.168.0.20:/export/music" >> /etc/auto.direct
sudo echo "/mnt/storage -rw,hard,intr,nfsvers=3 192.168.0.20:/export/storage" >> /etc/auto.direct
sudo echo "/mnt/movies -rw,hard,intr,nfsvers=3 192.168.0.20:/export/movies" >> /etc/auto.direct
sudo echo "/mnt/shows -rw,hard,intr,nfsvers=3 192.168.0.20:/export/shows" >> /etc/auto.direct
sudo echo "/mnt/pictures -rw,hard,intr,nfsvers=3 192.168.0.20:/export/pictures" >> /etc/auto.direct

# Remove existing directories

rm -Rf $HOME/Music
rm -Rf $HOME/Pictures

# Create mount points for NFS shares

sudo mkdir /mnt/music
sudo mkdir /mnt/pictures
sudo mkdir /mnt/storage
sudo mkdir /mnt/movies
sudo mkdir /mnt/shows

#Create symbolic links in home folder 

sudo ln -s /mnt/music $HOME/music
sudo ln -s /mnt/pictures $HOME/pictures
sudo ln -s /mnt/storage $HOME/storage
sudo ln -s /mnt/movies $HOME/Videos/movies
sudo ln -s /mnt/shows $HOME/Videos/shows
sudo ln -s /mnt/storage/Scripts/linux $HOME/scripts
sudo ln -s /mnt/250G/ $HOME/Downloads

# Restart needed services

sudo service autofs restart

# Generates .bash_aliases file with useful aliases

sudo echo >> $HOME/.bash_aliases
sudo echo "alias ls='ls --color=auto'" >> $HOME/.bash_aliases
sudo echo "alias vi='vim'" >> $HOME/.bash_aliases
sudo echo "alias grep='egrep --color=auto'" >> $HOME/.bash_aliases
sudo echo "alias fgrep='fgrep --color=auto'" >> $HOME/.bash_aliases
sudo echo "alias egrep='egrep --color=auto'" >> $HOME/.bash_aliases

# Create $HOME/bin directory for personal bin location

mkdir $HOME/.bin

# Add scripts to above directory

sudo cp $HOME/scripts/bash/audio/extract.sh $HOME/.bin/
sudo cp $HOME/scripts/bash/audio/m4a2mp3.sh $HOME/.bin/
sudo cp $HOME/scripts/bash/video/mkv2mp4.sh $HOME/.bin/

# Not yet up to par for video quality
# sudo cp $HOME/scripts/bash/video/avi2mp4.sh $HOME/bin/

답변1

배열을 사용할 수 있습니다

pkgs=(autofs nfs-common handbrake-cli handbrake lame vim chromium-browser screen ffmpeg htop cdparanoia eyed3 vorbis-tools clementine)

sudo apt-get install "${pkgs[@]}"

답변2

스크립트를 단순화하는 한 가지 방법은 모든 sudo 호출을 제거하고 sudo를 사용하여 전체 스크립트를 호출하는 것입니다.

#!/bin/bash
if [[ $(id -un) != root ]]; then
    echo "invoke me with sudo: sudo $0"
    exit
fi

echo >> /etc/fstab
# etc

또한 더 읽기 쉽게 배열 정의에 개행 문자를 넣을 수 있습니다.

pkgs=(
  autofs lame  vim  nfs-common handbrake-cli handbrake  chromium-browser 
  screen eyed3 htop clementine vorbis-tools  cdparanoia ffmpeg
)

관련 정보