新迭代以前忙裏偷閒摸魚了幾種腳本的寫法:bash, alfred,automator,applescript安全
這篇就說說這個applescriptbash
以iterm爲例
初看它的字典大概長這樣:
一、方法包
它有兩個suite也就是兩個方法包
第一個看名字就知道是一個標準包,這個系統自動加的,給每個應用程序會自動生成一個這樣的方法包,裏面的方法不少是同樣的,可是有的細節有區別:
第二個方法包就是軟件本身提供的方法包了
這裏上面淺藍色的是方法,紫色的是類,類能夠有本身的方法,下面分別講
二、方法
- 其實這裏的方法有一點消息的意思,跟OC有點像
- 第一行
-
- 先是方法名split vertically(用豎直線切割)
- 而後v的意思就是動詞,相似方法的意思
- 而後接着是對這個方法的描述
- 第二行開始是這個消息的發送格式
-
- 先是主消息名
- 後邊接一個specifier類型的參數(有的時候不用傳參數)
-
- 這個specifier類型是什麼在哪兒都找不到,本身領悟而且看其餘各類的註釋(對,對同一個類型的描述註釋都不太同樣,像這裏這個描述,根本就風馬牛不相及)而且搜索各類別人的插邊球回答而且翻看了一些別人寫的AS代碼,最後實踐試出來,這個類型的意思是:window tab session一類的東西
- 以後是描述
- 第三行以及以後就是次消息名
-
- 用中括號括起的表示可選參數,沒用的就是必選
- text類型就是String類型
- 最後一行一個箭頭加後邊,是返回值類型的意思
三、類
- n表示是名詞,是類
- 而後第一部分是包含和被包含關係 elements,相似類圖,告訴你持有和被持有的關係
- 第二部分是方法properties,這塊很是重要,是你要使用的
-
- 這個方法比上面的方法形式要簡單,不須要傳參數,括號裏就是返回值類型,後邊接着描述
- 方法調用的方式是:[返回值] = [方法] of [類]
四、一個重要的公用類:application
說這個類重要是由於在我實際操做中發現它很是重要
它是程序開啓(也就是被tell以後就自動生成的類),而後不少方法都須要傳入這個參數,能夠說他是一切操做的開始
經過這個類的方法能獲取到一些重要的系統常量:當前應用的窗口、可見性、大小等等數據
在使用Iterm的時候我最以爲重要的是就是返回當前的窗口了,從窗口中才能拿session,拿到session才能幹後邊全部的活
五、舉例
以一段對iterm操做的代碼爲例具體解釋一下使用時的技巧
這段代碼實現的效果是:按照個人需求打開個人iterm,切分窗口,使用不一樣的配置文件,分別進入某個路徑
tell application "iTerm"
set session1 to (current session of current window) write session1 text "cd ~/AndroidStudioProjects/HqyxEduStudentAndroid"
set session2 to (split vertically session1 with profile "Teacher") write session2 text "cd ~/AndroidStudioProjects/Tea"
set session3 to (split horizontally session1 with profile "Common") write session3 text "cd ~/AndroidStudioProjects/SharedLibrary"
split horizontally session2 with profile "MyProfile"
end tell |
split vertically session1 with profile "Teacher" command "cd ~/AndroidStudioProjects/Tea" |
- 在講以前先科普一下本身在探索過程當中發現的這個iterm裏的幾個概念
-
- window,這個是全部app共通的,就是整個程序窗口
- tab,這裏沒有出現使用,指的是一個個tab頁面
- session,是會話的意思,這裏值的是一個個小窗口,或者感受是一個個小進程
- 而後下一段是兩句話
-
- 第一句:先是括號內經過application類的類方法獲取當前的窗口(由於是元類,因此能夠直接調方法),而後經過這個窗口的方法獲取當前的session,而且把這個session進行賦值
- 第二個句是給這個session的窗口中運行命令
- 注意,這個session是默認建立的,咱們都控制不了
- 下一段仍是兩句話
-
- 先是括號內,這句號自己就是一個方法調用,在session1上切分一個新的窗口,而且使用teacher的配置文件來配置,這句話會返回新建立的session,而後把這個session記錄下來而且賦值
- 第二句就是跟上面同樣了
- 很是值得一提的是,第一句括號裏的方法原本是還有一個command參數的,使用這個參數的話兩句話能夠合併爲一句話(表格中第二行),可是很是遺憾的是,它會莫名奇妙報錯,因此只能放棄這種寫法
- 後邊幾段就都是同樣了
總結一些經常使用知識(很是主觀):
- 資料很是少,能夠看到用的人很是少,須要本身探索
- 竟然有兩本書的資料能夠方便下到,可是這兩本書裏能給的幫助真是很少
- 用過的人都說很差,確實是正在沒落的語言
- 會莫名奇妙崩潰,探索能曲線救國的方法
- 線程迷之不安全,最好寫得線程健壯
總結一些習慣用法:
- 獲取當前窗口
- 調用對象的屬性方法
- 賦值方法
- 可使用小括號進行優先執行
- 判斷某個應用是否開啓
- if else
- 延時:delay 1(延時1S後繼續執行)
- 打印結果:say 「string」 (直接發聲進行打印)