與unix一樣,linux環境中的檔案具有特別重要的意義,因為它們為作業系統服務和裝置提供了乙個簡單而一致的介面。在linux中,一切(或幾乎一切)都是檔案。通常程式完全可以像使用檔案那樣使用磁碟檔案、序列口、印表機和其他裝置,不過也有一些例外情況,比如網路連線。但大多數情況下,只需要使用5個基本的函式——open、close、read、write和ioctl。
1. 目錄
檔案,除了本身包含的內容以外,它還會有乙個名字和一些屬性,即「管理資訊」,包括檔案的建立/修改日期及它的訪問許可權。這些屬性被儲存在檔案的inode(節點)中,它是檔案系統中的乙個特殊的資料塊,它同時還包含檔案的長度和檔案在磁碟上的存放位置,系統使用的是檔案的inode編號。
目錄也是檔案,但它是一種特殊型別的檔案。目錄是用於儲存其他檔案的節點號和名字的檔案。目錄檔案中的每個資料項都是指向某個檔案節點的鏈結,刪除檔名就等於刪除與之對應的鏈結(檔案的節點號可以通過ls -i命令檢視)。你可以使用ln命令在不同的目錄中建立指向同乙個檔案的鏈結。
刪除乙個檔案時,實質上是刪除了該檔案對應的目錄項,同時指向該檔案的鏈結數減1。該檔案中的資料可能仍然能夠通過其他指向同一檔案的鏈結訪問到。如果指向某個檔案的鏈結數(即ls -l命令輸出中跟在許可權後面的那個數字)變為零,就表示該節點以及其指向的資料不再被使用,磁碟上的相應位置就會標記。
2. 檔案和裝置
硬體裝置在linux中通常也被表示(對映)為檔案。例如,作為root使用者,你可以使用如下命令將ide cd-rom驅動器掛載為乙個檔案:
#mount -t iso9660 /dev/hdc /mnt/cdrom
#cd /mnt/cdrom
這個命令將cd-rom裝置中的當前內容掛載為/mnt/cdrom目錄下的檔案結構。然後,就可以像瀏覽目錄一樣瀏覽cd-rom的目錄,只不過該目錄中的內容是唯讀的。
unix和linux中比較重要的裝置檔案有3個:/dev/console, /dev/tty和/dev/null。
(1) /dev/console
這個裝置代表的是系統控制台,錯誤資訊和診斷資訊通常會被傳送到這個裝置。每個unix系統都還有乙個指定的終端或顯示屏用來接收控制泰資訊。
(2) /dev/tty
如果乙個程序有控制終端的話,那麼特殊檔案/dev/tty就是這個控制終端(鍵盤和顯示屏,或鍵盤和視窗)的別名(邏輯裝置)。例如,由系統自動執行的程序和指令碼就沒有控制終端,所以它們不能開啟/dev/tty。
(3) /dev/null
/dev/null檔案是空裝置,所有寫向這個裝置的輸出都將被丟棄,而讀這個裝置會立刻返回乙個檔案結尾標誌,所以在cp命令裡可以把它用做複製空檔案的原始檔。常把不需要的輸出重定向到/dev/null。
addition: 建立空檔案的另乙個方法是使用touch 命令,該命令的作用是改變檔案的修改時間,如果指定的檔案不存在,就建立它,但該命令不會把原有內容的檔案變成空檔案。
/dev目錄中的其他裝置包括:硬碟和軟盤、通訊埠、磁碟驅動器、cd-rom、音效卡以及一些代表系統內部工作狀態的裝置。裝置被分為字元裝置和塊裝置。兩者區別在於訪問裝置時是否需要一次讀寫一整塊。一般情況下,塊裝置是那些支援某些檔案系統的裝置,例如硬碟。
作業系統 再識 Linux從檔案到字元裝置
在 dev下面有很多裝置,其中也有大家廣為使用的字元裝置,呢裡面的檔案是如何與字元裝置掛鉤的呢 平時我們使用的open函式是如何動態載入字元裝置的操作集的呢 下面就讓我們慢慢剖析 以核心2.6.26為參考 一.首先是檔案系統 需要動態解析檔案路徑名 像 dev ts0 在檔案系統裡分為3個部分 1....
python 檔案處理 庫 Python 檔案處理
資料夾 得到當前工作目錄,即當前python指令碼工作的目錄路徑 os.getcwd 返回指定目錄下的所有檔案和目錄名 os.listdir 函式用來刪除乙個檔案 os.remove 刪除多個目錄 os.removedirs r c python 檢驗給出的路徑是否是乙個檔案 os.path.isf...
Linux基礎命令之檔案過濾及內容編輯處理(一)
功能是連線多個檔案並且列印到螢幕輸出,或重定向到指定的檔案 五大功能 1.檢視檔案內容 cat file.txt 2.合併檔案內容 cat file1 file2 newfile3 3.建立便捷新檔案 cat file 輸入完成之後,使用ctrl c結束即可 4.清空檔案內容 cat dev nul...