初識Shell&Shell腳本&MacOS權(quán)限

我們在iOS開發(fā)的時候很少關(guān)注ShellMacOS的權(quán)限問題,但是說起來Shell我們也是經(jīng)常使用的嵌溢,比如我們終端輸入ls弥虐,會列舉出當(dāng)前目錄下的所有文件夾和文件漓踢,其實ls就是一條Shell指令。

1疚颊、什么是Shell?

對于圖形界面,用戶只需要點擊圖標即可啟動某個軟件渣淤;對于命令行挺据,輸入某個程序的名字(可以看做一個命令)啟動某個程序。所以圖形界面和命令行要達到的目的是一樣的其掂,都是讓用戶控制計算機油挥。

然而,真正能夠控制計算的硬件(CPU款熬、內(nèi)存深寥、顯示器等)的只有操作系統(tǒng)內(nèi)核(Kernel),圖形界面和命令行只是架設(shè)在用戶和內(nèi)核之間的一座橋梁贤牛。

由于安全惋鹅、復(fù)雜、繁瑣的原因盔夜,不能讓用戶直接接觸內(nèi)核(也沒有必要)负饲,需要另外再開發(fā)一個程序堤魁,讓用戶直接使用這個程序;該程序的作用就是接收用戶的操作(點擊圖標返十、輸入命令)妥泉,并進行簡單的處理,然后再傳遞給內(nèi)核洞坑,這樣用戶就能間接地使用操作系統(tǒng)內(nèi)核了盲链。

為了既能簡化用戶的操作,又能保障內(nèi)核的安全迟杂,就需要在用戶和內(nèi)核之間增加一層“代理”刽沾,而開發(fā)的用戶界面和命令行程序就是這層“代理”。在Unix或Linux下排拷,這個命令行程序就叫做 Shell侧漓。

2、Shell的種類有哪些监氢?

Shell的種類有很多種布蔗,在我們MacOS操作系統(tǒng)上默認的是bash

我們可以查看一下當(dāng)前MacOS有多少種Shell浪腐。
打開終端纵揍,進入 /private/etc,然后當(dāng)前文件夾下有一個叫做ShellsShells里面存儲了我們當(dāng)前Mac電腦的操作系統(tǒng)里擁有的Shell種類议街。zsh是目前比較流行的且更友好的Shell泽谨,有興趣的課可以裝一裝。

Shells

3特漩、Shell的使用

這里使用2個簡單的例子

  • 新建一個文件夾
  • 在新建的文件夾里面新建一個文件

新建一個文件夾吧雹,終端輸入:mkdir 代碼

創(chuàng)建文件夾

新建一個文件,終端輸入:touch appShell.sh

新建文件

4拾稳、Shell腳本的介紹和使用

Shell腳本也就是用各類命令預(yù)先放入到一個文本文件中吮炕,方便一次性執(zhí)行的一個腳本文件。

我們把剛才的指令放到Shell腳本中

Shell腳本

執(zhí)行腳本bash appShell.sh

執(zhí)行腳本

同理我們可以用其他的Shell執(zhí)行访得,比如:

  • ksh appShell.sh
  • zsh appShell.sh(我電腦安裝的zsh

我們也可以使用source appShell.sh執(zhí)行龙亲。注意:source 后路徑變了

source執(zhí)行腳本

我們平常最常用的就是./appShell.sh了悍抑,執(zhí)行后發(fā)現(xiàn)沒有權(quán)限鳄炉,我們添加一個權(quán)限(權(quán)限下一條說)chmod 755 appShell.sh,然后再執(zhí)行./appShell.sh

添加權(quán)限搜骡,執(zhí)行腳本

腳本執(zhí)行相關(guān)命令的區(qū)別
  • $source FileName

    • 意思:在當(dāng)前shell環(huán)境中讀取并執(zhí)行FileName中的命令
    • 特點:
      • 命令可以強行讓一個腳本去立即影響當(dāng)前的環(huán)境(一般用于加載配置文件)拂盯。
      • 命令會強制執(zhí)行腳本中的全部命令,而忽略文件的權(quán)限。
  • $bash FileName记靡、zsh FileName

    • 意思:重新建立一個子shell谈竿,在子shell中執(zhí)行腳本里面的句子团驱。
  • $./FileName

    • 意思:讀取并執(zhí)行文件中的命令。但有一個前提空凸,腳本文件需要有可執(zhí)行權(quán)限嚎花。
5、MacOS權(quán)限的介紹和文件權(quán)限的修改

MacOS是基于Unix內(nèi)核的圖形化操作系統(tǒng)呀洲,而Unix是多用戶紊选、多任務(wù)的系統(tǒng),所以這樣的系統(tǒng)里面就擁有了用戶道逗、組的概念兵罢,那么同樣文件的權(quán)限也就有相應(yīng)的所屬用戶和所屬組了。

Windows上只要能進入系統(tǒng)硬盤上的所有東西都可以訪問滓窍,由于Unix的多用戶多任務(wù)優(yōu)點卖词,所以UnixLinux多被用于服務(wù)器。

如下圖中顯示贰您,明顯的能看到Unix(Linux)的多用戶和Windows的一個用戶訪問區(qū)別坏平。

Windows

Unix(Lunix)

稍微了解一下MacOS系統(tǒng),上條中./appShell.sh的提示權(quán)限不足原來是我們當(dāng)前登錄的用戶未擁有對appShell.sh執(zhí)行的權(quán)限锦亦。

好,我們查看一下文件權(quán)限令境,終端輸入ls -l杠园,顯示如下

tancheng@localhost ~/Documents/SecurityProducts/003-CodeSign應(yīng)用重簽名/代碼/WeChatDemo : ls -l
total 8
drwxr-xr-x     3      tancheng     staff        96          10 17 11:07        APP
drwxr-xr-x    13      tancheng     staff       416          10 19 10:21        WeChatDemo
drwxr-xr-x     5      tancheng     staff       160          10 19 10:50        WeChatDemo.xcodeproj
drwxr-xr-x     4      tancheng     staff       128          10 19 10:02        WeChatDemoTests
drwxr-xr-x     4      tancheng     staff       128          10 19 10:02        WeChatDemoUITests
-rw-r--r--     1      tancheng     staff      1979          10 19 10:40        appShell.sh
[   權(quán)限    ]  [連接]  [所有者]      [所屬組]  [文件大小]       [最后修改日期]        [文件名稱]

上方第一列就是權(quán)限,接下來依次是連接數(shù)舔庶,文件所有者抛蚁、所屬組,文件大小惕橙、最后修改時間和文件名稱瞧甩,下圖說明了,文件類型和權(quán)限:

權(quán)限說明.png

那么我們上方使用的chmod 755 appShell.sh是怎么來的呢弥鹦?

我們在iOS開發(fā)的時候經(jīng)常能看到類似于下方這種的枚舉肚逸,代表二進制往前移動幾位,這是為了我們能一次使用多個枚舉彬坏,比如UIRectCornerTopLeftUIRectCornerTopRight同時使用朦促。

typedef NS_OPTIONS(NSUInteger, UIRectCorner) {
    UIRectCornerTopLeft     = 1 << 0,
    UIRectCornerTopRight    = 1 << 1,
    UIRectCornerBottomLeft  = 1 << 2,
    UIRectCornerBottomRight = 1 << 3,
    UIRectCornerAllCorners  = ~0UL
};

其實權(quán)限也是一樣的,那么755代表如下:

  • 7:第一組文件所有者權(quán)限 栓始, 二進制為111务冕,表示可讀、可寫幻赚、可執(zhí)行(rwx
  • 5:第二組用戶所在組其他用戶權(quán)限禀忆,二進制為101 臊旭,表示可讀、不可寫箩退、可執(zhí)行(r-x
  • 5:第三組非本組用戶的權(quán)限巍扛,二進制為101 ,表示可讀乏德、不可寫撤奸、可執(zhí)行(r-x

相應(yīng)的我們也可以直接操作執(zhí)行權(quán)限chmod a+x appShell.sh去執(zhí)行,下方圖明確的介紹了改變權(quán)限的方法喊括。u所屬用戶胧瓜,g用戶所屬組,o非本組用戶的權(quán)限郑什,a以上3種都添加府喳。

改變權(quán)限.png

以上就是對Shell&Shell腳本&MacOS權(quán)限的一些簡單介紹了,對于我的日常也是夠用了蘑拯。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钝满,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子申窘,更是在濱河造成了極大的恐慌弯蚜,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件剃法,死亡現(xiàn)場離奇詭異碎捺,居然都是意外死亡,警方通過查閱死者的電腦和手機贷洲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進店門收厨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人优构,你說我怎么就攤上這事诵叁。” “怎么了钦椭?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵拧额,是天一觀的道長。 經(jīng)常有香客問我玉凯,道長势腮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任漫仆,我火速辦了婚禮捎拯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己署照,他們只是感情好祸泪,可當(dāng)我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著建芙,像睡著了一般没隘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上禁荸,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天右蒲,我揣著相機與錄音,去河邊找鬼赶熟。 笑死瑰妄,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的映砖。 我是一名探鬼主播间坐,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼邑退!你這毒婦竟也來了竹宋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤地技,失蹤者是張志新(化名)和其女友劉穎蜈七,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乓土,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡宪潮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了趣苏。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡梯轻,死狀恐怖食磕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情喳挑,我是刑警寧澤彬伦,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站伊诵,受9級特大地震影響单绑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜曹宴,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一搂橙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧笛坦,春花似錦区转、人聲如沸苔巨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽侄泽。三九已至,卻和暖如春蜻韭,著一層夾襖步出監(jiān)牢的瞬間悼尾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工肖方, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留闺魏,地道東北人。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓窥妇,卻偏偏與公主長得像舷胜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子活翩,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,974評論 2 355