這篇文章主要為大家展示了“Shell的參數(shù)有哪些”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Shell的參數(shù)有哪些”這篇文章吧。
專注于為中小企業(yè)提供網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)郊區(qū)免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。 傳遞參數(shù):可以將外部的值傳遞到腳本的內(nèi)部函數(shù)中,提高腳本的靈活性;可以添加腳本的使用選項(xiàng),增加腳本的可定制性。
上圖顯示了 Shell 中函數(shù)的參數(shù)傳遞:定義函數(shù) testfunc();函數(shù)輸出兩個(gè)引用參數(shù),$# 表示傳入函數(shù)的參數(shù)個(gè)數(shù),$@ 表示所有參數(shù)的內(nèi)容。
值得注意的是,如果擁有的參數(shù)多余 9 個(gè),則不能使用 $10 來(lái)引用第十個(gè)參數(shù),必須先處理或者保存第一個(gè)參數(shù)($1),然后使用 shift 命令刪除第一個(gè)參數(shù),并將剩下的參數(shù)上移一位,則 $10 就變成了 $9,以此類推,而 $# 的值將被更新以反映剩余參數(shù)的個(gè)數(shù)。實(shí)際情況中,一般使用迭代的方法完成這個(gè)約束。
許多 UNIX 程序遵循以下原則:從標(biāo)準(zhǔn)輸入(standard input)讀入,經(jīng)過(guò)處理,從標(biāo)準(zhǔn)輸出(standard output)輸出,將異常及錯(cuò)誤報(bào)告到標(biāo)準(zhǔn)錯(cuò)誤(standard error)。這樣的程序被稱為過(guò)濾器(filter)。
重定向符號(hào) command>filename 會(huì)將 command 的標(biāo)準(zhǔn)輸出重定向到 filename 中而不是打印在控制臺(tái),如果有同名 filename,則覆蓋它,如果沒(méi)有,則新建;command>>filename 會(huì)將 command 的標(biāo)準(zhǔn)輸出以追加的形式重定向到 filename,不會(huì)覆蓋同名文件;command
文件描述符表:用戶區(qū)的一部分,除非通過(guò)使用文件描述符的函數(shù),否則程序無(wú)法對(duì)其進(jìn)行訪問(wèn)。對(duì)進(jìn)程中每個(gè)打開(kāi)的文件,它都包含一個(gè)條目。
系統(tǒng)文件表:為系統(tǒng)中所有的進(jìn)程共享。對(duì)每個(gè)活動(dòng)的 open 都包含一個(gè)條目。每個(gè)系統(tǒng)文件表的條目都包含文件偏移量、訪問(wèn)模式(讀、寫、讀寫),以及指向它的文件描述符表的條目計(jì)數(shù)。每個(gè)進(jìn)程的文件表在系統(tǒng)文件表中的區(qū)域都不重合,這樣使每個(gè)進(jìn)程都有它自己對(duì)該文件的當(dāng)前偏移量。
內(nèi)存索引節(jié)點(diǎn)表:對(duì)系統(tǒng)中的每個(gè)活動(dòng)的文件(被某個(gè)進(jìn)程打開(kāi)了),內(nèi)存中的索引節(jié)點(diǎn)表都包含一個(gè)條目。幾個(gè)系統(tǒng)文件表?xiàng)l目可能對(duì)應(yīng)于同一個(gè)內(nèi)存索引節(jié)點(diǎn)表(不同進(jìn)程打開(kāi)同一文件)。
每個(gè)進(jìn)程維護(hù)自己的文件描述符表,當(dāng)進(jìn)程調(diào)用文件描述符相關(guān)的函數(shù)或命令時(shí),會(huì)對(duì)其進(jìn)行修改操作;文件描述符表中的每一項(xiàng)指向系統(tǒng)文件表;系統(tǒng)文件表被所有進(jìn)程共享,處于內(nèi)核區(qū),與內(nèi)存中的索引節(jié)點(diǎn)表對(duì)應(yīng)。因此,進(jìn)程通過(guò)對(duì)文件描述符表的操作,訪問(wèn)被內(nèi)存中的索引節(jié)點(diǎn)表控制的文件。
標(biāo)準(zhǔn)輸入的文件描述符是 0,標(biāo)準(zhǔn)輸出的文件描述符是 1,標(biāo)準(zhǔn)錯(cuò)誤的習(xí)慣描述符是 2。1> 表示重定向標(biāo)準(zhǔn)輸出,2> 表示重定向標(biāo)準(zhǔn)錯(cuò)誤,0< 表示重定向標(biāo)準(zhǔn)輸入,&> 表示重定向標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤。文件描述符是由無(wú)符號(hào)整數(shù)表示的句柄,進(jìn)程使用它來(lái)標(biāo)識(shí)打開(kāi)的文件,它與包括相關(guān)信息(如文件的打開(kāi)模式、文件的位置類型、文件的初始類型等)的文件對(duì)象相關(guān)聯(lián),這些信息被稱為文件的上下文。
特殊文件:/dev/null 非常接近于一個(gè)只寫文件,所有寫入它的內(nèi)容都會(huì)永遠(yuǎn)丟失,而且讀取它的結(jié)果是空值,一般用于重定向標(biāo)準(zhǔn)輸出或標(biāo)準(zhǔn)錯(cuò)誤,或者清空某個(gè)文件的內(nèi)容并且不改變文件權(quán)限。/dev/zero 會(huì)產(chǎn)生一個(gè) null 流(二進(jìn)制的 0 流,而不是 ASCII 類型),主要用來(lái)創(chuàng)建一個(gè)指定長(zhǎng)度、并且初始化為空的文件,一般用作臨時(shí)交換文件。
常見(jiàn) Linux 文件類型
普通文件:用 ls -lh 查看某個(gè)文件的屬性,第一個(gè)字符為 - 的文件。一般是用一些相關(guān)的應(yīng)用程序創(chuàng)建,用 rm 命令刪除。
目錄:第一個(gè)字符為 d 的文件。創(chuàng)建目錄可以使用 mkdir 或 cp 命令,刪除用 rm 或 rmdir。
字符設(shè)備或塊設(shè)備文件:第一個(gè)字符為 c 表示字符設(shè)備文件,b 表示塊設(shè)備。用 mknode 創(chuàng)建,用 rm 刪除。但是一般不自主創(chuàng)建,它們跟內(nèi)核相關(guān)聯(lián)的。
套接口文件:第一個(gè)字符為 s 的文件。
符號(hào)鏈接文件:第一個(gè)字符為 l 的文件。通過(guò)命令 “l(fā)n -s 源文件名 新文件名”創(chuàng)建。類似于 windows 系統(tǒng)中的快捷方式。
以上是“Shell的參數(shù)有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道!