說明:如果您有任何疑問或想咨詢其他業務請撥打電話 400 685 0732
全網監測海量數據按需發布監測預警
實時把握輿情動態精準追溯信息源頭
一個系統當中操作系統就是一個系統資源的管理者和分配者,而這操作的過程當中就一定是要到一些程序,其中有一種包括具有輸入設備讀取命令作用的shell編程。可是shell編程到底是什么呢?接下來我們就一起來好好的了解一下吧。
shell編程——shell編程是什么
讀過操作系統概論的讀者們都知道操作系統是一個系統資源的管理者與分配者,當您有需求時,您得向系統提出;從操作系統的角度來看,它也必須防止使用者因為錯誤的操作而造成系統的傷害?眾所周知,對計算機下命令得通過命令(command)或是程序(program);程序有編譯器(compiler)將程序轉為二進制代碼,可是命令呢?
其實shell也是一支程序,它由輸入設備讀取命令,再將其轉為計算機可以了解的機械碼,然后執行它。各種操作系統都有它自己的shell,以DOS為例,它的shell就是command.com文件。如同DOS下有NDOS,4DOS,DRDOS等不同的命令解譯程序可以取代標準的command.com,UNIX下除了Bourneshell(/bin/sh)外還有Cshell(/bin/csh)、Kornshell(/bin/ksh)、Bourneagainshell(/bin/bash)、TenexCshell(tcsh)等其它的shell。UNIX/linux將shell獨立于核心程序之外,使得它就如同一般的應用程序,可以在不影響操作系統本身的情況下進行修改、更新版本或是添加新的功能。
shell是計算機用來解釋你輸入的命令然后決定進行何種處理的程序。shell也可以在非交互模式下調用。舉個例子,可以把一些要輸入的命令預先存放在文本文件里(叫做shell腳本)然后執行該文件。可以把shell看作是DOS下面的command.com(命令行解釋器),而shell腳本就象是DOS的批處理文件(*.bat)。和DOS相比較,shell的功能要先進和豐富得多。
shell編程中/dev和/proc目錄怎么用
dev目錄是系統中集中用來存放設備文件的目錄。除了設備文件以外,系統中也有不少特殊的功能通過設備的形式表現出來。設備文件是一種特殊的文件,它們實際上是驅動程序的接口。在Linux操作系統中,很多設備都是通過設備文件的方式為進程提供了輸入、輸出的調用標準,這也符合UNIX的“一切皆文件”的設計原則。所以,對于設備文件來說,文件名和路徑其實都不重要,最重要的使其主設備號和輔助設備號,就是用ls-l命令顯示出來的原本應該出現在文件大小位置上的兩個數字,比如下面命令顯示的8和0:
[zorro@zorrozou-pc0bash]$ls-l/dev/sda
brw-rw—-1rootdisk8,05月1210:47/dev/sda
設備文件的主設備號對應了這種設備所使用的驅動是哪個,而輔助設備號則表示使用同一種驅動的設備編號。我們可以使用mknod命令手動創建一個設備文件:
[zorro@zorrozou-pc0bash]$sudomknodharddiskb80
[zorro@zorrozou-pc0bash]$ls-lharddisk
brw-r–r–1rootroot8,05月1809:49harddisk
這樣我們就創建了一個設備文件叫harddisk,實際上它跟/dev/sda是同一個設備,因為它們對應的設備驅動和編號都一樣。所以這個設備實際上是跟sda相同功能的設備。
系統還給我們提供了幾個有特殊功能的設備文件,在bash編程的時候可能會經常用到:
/dev/null:黑洞文件。可以對它重定向如何輸出。
/dev/zero:0發生器。可以產生二進制的0,產生多少根使用時間長度有關。我們經常用這個文件來產生大文件進行某些測試,如:
[zorro@zorrozou-pc0bash]$ddif=/dev/zeroof=./bigfilebs=1Mcount=1024
1024+0recordsin
1024+0recordsout
1073741824bytes(1.1GB,1.0GiB)copied,0.3501s,3.1GB/s
dd命令也是我們在bash編程中可能會經常使用到的命令。
/dev/random:Linux下的random文件是一個根據計算機背景噪聲而產生隨機數的真隨機數發生器。所以,如果容納噪聲數據的熵池空了,那么對文件的讀取會出現阻塞。
/dev/urandom:是一個偽隨機數發生器。實際上在Linux的視線中,urandom產生隨機數的方法根random一樣,只是它可以重復使用熵池中的數據。這兩個文件在不同的類unix系統中可能實現方法不同,請注意它們的區別。
/dev/tcp&/dev/udp:這兩個神奇的目錄為bash編程提供了一種可以進行網絡編程的功能。在bash程序中使用/dev/tcp/ip/port的方式就可以創建一個scoket作為客戶端去連接服務端的ip:port。我們用一個檢查http協議的80端口是否打開的例子來說明它的使用方法:
[zorro@zorrozou-pc0bash]$cattcp.sh
#!/bin/bash
ipaddr=127.0.0.1
port=80
if!exec5<>/dev/tcp/$ipaddr/$port
then
exit1
fi
echo-e”GET/HTTP/1.0\n”>&5
cat<&5
ipaddr的部分還可以寫一個主機名。大家可以用此腳本分別在本機打開web服務和不打開的情況下分別執行觀察是什么效果。
/proc是另一個我們經常使用的目錄。這個目錄完全是內核虛擬的。內核將一些系統信息都放在/proc目錄下一文件和文本的方式顯示出來,如:/proc/cpuinfo、/proc/meminfo。我們可以使用man5proc來查詢這個目錄下文件的作用。
以上就是有關shell編程的所有內容,那就只是shell編程一小部分的內容,如果大家還想要學習更多的可以去網絡上搜索更多的資料,或者是買一本專門學習該編程的書籍。如果大家對此想要有一個更深入的了解,歡迎關注我們文軍營銷的官網。
推薦閱讀
說明:如果您有任何疑問或想咨詢其他業務請撥打電話 400 685 0732