Bash function og automatisering

Da ja tester og udvikler diverse applikation i PHP og MySQL, på min hjemme maskine, havde jeg brug for at kunne hurtigt starte/stoppe for web-/mysql-server. Da jeg er Mac bruger, og kan godt lide selv at kompilere MySQL, PHP og min web server, var det lidt svært at finde widgets som tillod mig at starte diverse tjenester ved enkelt tryk.

Mac OS X kommer med Apache, og den kan nemt startes/slukkes i Sharing indstillinger. Men da jeg bruger LiteSpeed web server, skulle jeg skrive kommandoen i terminalen for at gøre det samme. Det samme er med MySQL, der findes en indstilling widget der tillader dette, men kun hvis man installere deres egen binær version af MySQL server.

Disse kommandoer var ikke indviklede, men der var svære at huske og skrive hele tiden. Så jeg oprettede nogle alias’er som skulle hjælpe mig med det, og dermed også gøre kommandoer lidt kortere.

alias litespeed='sudo /opt/lsws/bin/lswsctrl $1'
alias sqlsrv='sudo /usr/local/mysql/share/mysql/mysql.server $1'

Det fungerede også i et styk tid, indtil jeg blev træt af at tænde dem enkeltvis. Så jeg kiggede efter hvordan man kunne lave en funktion som gjorde flere ting. Og sjovt nok, bash shell (fil ~/.bash_profile) tillader brugeren at oprette funktioner.

Så nu har jeg én kommando til at starte alle de relevante processer som jeg skal bruge når jeg tester og udvikler.

Nu skal jeg kun skrive dev start, for at starte web/mysql server. jeg kan også bruge stop for at stoppe dem, eller restart til at genstarte dem.

dev()
{
sudo echo $1"ing Dev Environment"
sudo /opt/lsws/bin/lswsctrl $1
sudo /usr/local/mysql/share/mysql/mysql.server $1
echo "Environment" $1"ed"
}

Jeg elsker simpelthen UNIX miljø, den tillader mig at opstille og indstille ting som jeg gerne vil have dem.