저는 프로그래머나 스크립터가 아니라는 점부터 말씀드리겠습니다. 다음은 컴퓨터를 지우고 처음부터 시작할 때 사용하는 스크립트입니다. 이것은 내 사용자 프로필을 설정하기 위한 기본 스크립트(명령 모음과 비슷함)입니다. "필수 소프트웨어 설치"라고 언급된 섹션에서 소프트웨어 이름 목록을 스크립트로 생성한 다음 어떻게든 해당 목록을 호출하고 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
)