Contents
  1. 1. bash指令sublime text開發
  2. 2. 針對需要密碼的sudo指令運行
  3. 3. 透過applescript另開啟terminal
  4. 4. 用shell script串起工作

先跟大家說聲新年快樂,好久沒有撰寫學習筆記了,趁這過年過節來寫點東西。
16年年底因為論文投稿加上一些工作上的時程壓力,沒什麼時間寫部落格,但這段期間還是玩了不少東西,以後再把筆記加進來。

這次筆記主要是因為工作上對於前端開發,每次總是要花一兩分鐘進行環境的啟動,尤其不是full time工作的我,一直要切換環境進行因應不同需求的開發,尤其是上次survey了dockerfile蒙發了想要無痛進行環境啟動的念頭。

針對這次需求,一開始挑的是使用.sh進行撰寫,但某些需要另外啟動其他程式的環境就要透過.scpt(applescript)進行啟動。

此篇是針對osx作業系統噢!
撰寫指令之前先了解一下.sh
鳥哥的linux私房菜-學習 Shell Scripts: http://linux.vbird.org/linux_basic/0340bashshell-scripts.php

bash指令sublime text開發

在完成效率開發環境啟動的第一步是將相關指令建置完成。
使用bash指令開啟資料夾進sublime text進行開發,透過這樣開啟就可以不用將資料夾拖曳來拖曳去,透過指令就可以完成開啟開發編輯器的功能。這邊是參考:
https://gist.github.com/olivierlacan/1195304
將環境路徑設定完畢後,就可以用底下指令快速開啟資料夾以利開發。

$cd /Develop/Folder/Path
$sublime .

針對需要密碼的sudo指令運行

因為將使用者帳號密碼明文寫進.sh也是挺危險,因此用變數將此重新輸入會是比較安全的做法。
這邊參考:
http://stackoverflow.com/questions/3980668/how-to-get-a-password-from-a-shell-script-without-echoing?answertab=oldest#tab-top

#!/bin/bash
# 讀取密碼
echo -n Password: 
read -s password
echo
# 執行步驟
echo $password

此方法就可以再啟動前重新輸入一次,並用變數記住,進而開啟其他指令。

透過applescript另開啟terminal

因為環境開啟可能不只開啟一個terminal就能完成,還有其他工作指令,例如監聽資料夾更動、資料庫啟動等等,因此要透過另開terminal視窗進行指令,於此就要使用applescript來聯繫另外的視窗。
下面的範例是另開視窗:

#!/bin/bash
osascript -e 'tell app "Terminal"
    do script "echo hello world"
end tell'

更要人性化的操作這部分,其實可以survey一下mac內建的機器人Automator進行腳本建置。

用shell script串起工作

對於工作需求的前端開發要執行好多個指令,先釐清一下將列點出來

  1. 執行mongoDB (需要sudo 另開視窗)
  2. 將專案資料夾用sublime開起來
  3. 執行專案內的自動化工具gulp (腳本內需要sudo 另開視窗)
  4. 開啟localhost以利開發

1 mongoDB要另開視窗
2 3 要進入開發資料夾,並啟動gulp-watch進行監聽因此也另開資料夾
4 就是用預設瀏覽器開啟localhost

最後將個工作串起來
以下就是整個.sh
.sh放這邊噢,有興趣可以參考
https://github.com/Mike-Zheng/Work-ShellScript

#!/bin/bash
echo "工作腳本"
echo "請輸入密碼"
read -s password

#先把sublime叫起床
osascript -e 'tell application "Sublime Text"
    activate
end tell'

#開啟mongo資料庫
osascript -e 'tell app "Terminal"
    do script "echo '"$password"' | sudo -S sudo mongod"
end tell'
echo "Start mongodb"

#開啟sublime 並運行gulp
osascript -e 'tell app "Terminal"
    do script "cd /Develop/Folder/Path && sublime . && echo '"$password"'|sudo -S gulp "
end tell'
echo "Start sublime && develop"

#等待開發環境運行3秒
sleep 3

#開啟localhost
open http://127.0.0.1:3000 && exit

Comments