20141203 mac os terminal 常用指令與小技巧

Post on 18-Jul-2015

4.110 views 4 download

Transcript of 20141203 mac os terminal 常用指令與小技巧

Mac OS Terminal 常⽤用指令與⼩小技巧

終端機

• Linux 的介⾯面就是終端機,看到畫⾯面的地⽅方。

• Linux 系統同時會有很多終端機,⼀一般⼀一次只會看到⼀一個。

• Mac OS 因爲有圖像化介⾯面,視窗的概念,因此可以同時操作多個終端機。

Option + ⽅方向鍵可快速在⻑⾧長指令內,做遊標的移動

pwd

• 顯⽰示當前⺫⽬目錄

!

• 重複上⼀一個執⾏行過,開頭相同的指令

• ex. !redis > redis-server

ls -alh

• 可列出當前⺫⽬目錄的檔案系統

• al: 全部檔案(含隱藏檔)與屬性

• h: ⼤大⼩小顯⽰示爲可讀的⼤大⼩小(B,K,M)

ls -alh

檔案權限權限 擁有者羣組

chown

• 可同時變更擁有者與羣組

• ex. chown user:group file

檔案權限格式爲 drwxrwxrwx

• 綠:是否爲⺫⽬目錄

• 紅:擁有者(Owner)權限

• ⿈黃:羣組(Group)權限

• 紫:擁有者(Other)權限

檔案權限rwx

• 讀取:是否可讀取

• 寫⼊入:是否可寫⼊入

• 執⾏行:是否可執⾏行

檔案權限

• 每⼀一個區塊的權限都是數字的總和

• 如果只可執⾏行權限就是 1

• 可讀執⾏行不可寫是 5

• 不具有權限是 0

20

21

22

rwx

chmod

• 可變更檔案或是資料夾的權限

• ex. chmod 777 mylog < 最壞⽰示範

• ex. chmod -R 755 htdoc < Web 常⽤用權限

Recursive與檔案系統

• 資料夾與檔案都是物件,有各⾃自的權限

• chmod 與 chown 都只能變更⼀一個標的

• 遞迴可以讓指令對⺫⽬目標下的檔案與根⺫⽬目錄重複執⾏行

rm

• 只能移除檔案

• 移除資料夾使⽤用 rmdir ,且只能移除空資料夾

• 透過遞迴可以移除所有檔案與資料夾

• ex. rm -Rf test/ < ⾮非常危險

touch

• 修改檔案時間戳記 (存取時間與更改時間)

• 有時候也被當做快速建⽴立檔案的⽅方式

• 建⽴立的檔案權限就是建⽴立者的權限

tail

• 可在終端機顯⽰示特定檔案最後⼗十⾏行內容

• 適合⽤用來觀看 log 檔案

tail• 加上參數 -n 20 可顯⽰示 20 ⾏行,或是可以偷懶直接帶⼊入數字

tail• 加上參數 -f 可以讓終端機持續顯⽰示 log 的更新,直到按下 Ctrl + C 中斷操作

&

• 執⾏行檔案的指令後⾯面加上 & 符號,可不鎖定終端機

• 但是這個程式如果有 print 訊息,還是會在終端機上⾯面被看到

• ex. redis-server&

>

• 執⾏行檔案的指令後⾯面加上 > 符號,可將程式 print 的訊息導向

• ex. redis-server > /dev/null

ps

• Process Status,顯⽰示當前使⽤用者執⾏行的程序

• 加上 aux 參數,可顯⽰示所有系統的程序

• ex. ps aux

grep

• Globally Search a Regular Expression and Print,搜尋⼯工具

• 給 grep 關鍵字或正規表⽰示式,會列出結果

• ex. grep apple fruitlist.txt

|

• pipe ,會把左邊的執⾏行結果丟給右邊

• ex. ps aux | grep redis

kill

• 關閉系統程序,後⾯面通常加上 PID

• 正常關閉 : 15

• 強制關閉 : 9

• ex. kill -9 5568

Finder

不能被關閉• 可以關閉 Finder 所有視窗

• 但是 Finder 不能被關閉

回到上⼀一層

• 在 Windows 內是倒退鍵

• 在 Mac 使⽤用 Cmd+ 上

新增視窗與分⾴頁

• Cmd+N,開新視窗

• Cmd+T,開新分⾴頁

精度

var numA = 0.1;

var numB = 0.2;

alert( (numA + numB) === 0.3 );

會顯⽰示?

精度

false

精度0.1+0.2 = ????

JavaScript 說

0.01 = 0.0001 1001 1001 1001 … 無限循環

0.02 = 0.0011 0011 0011 0011 … 無限循環

不過雙精度浮點數最⾼高是 52 位

精度

所以相加後是 0.0100110011001100110011001100110011001100110011001100

轉爲⼗十進位就是 0.30000000000000004

精度只要先將數字乘上10的 n 次⽅方,n 是你要的⼩小數點精度,運算完在除以10的 n 次⽅方就可以解決這個問題。

ex. 想要算出 0.1+0.2,可寫成

var accuracy = 1 * 10;

alert((0.1*accuracy+0.2*accuracy)/accuracy);

閉包

• myText 執⾏行完 closure_test 之後就應該要消失了

• 但是因爲 closure_test return 了⼀一個 function,且這個 function 內部使⽤用到了 text 變數,形成了⼀一個閉包。

• 這個閉包的特性,就像保護罩⼀一樣保護了 myText 。