前言
linux是一個很強大開源的系統,筆者作爲一個嵌入式Linux學習者,同樣被Linux的開源文化深深的吸引着。對於大部分職業可能Windows已經夠好了,但是在程序員眼裏,Linux開源的文化纔是歸屬地。對對對,就是喜歡內核裏面有着各種各樣騷操作的代碼,喜歡着基於Linux內核的各種各樣的開源軟件。而被Linux深深吸引的我,爲了系統的學習Linux系統,所以我和大家一起學習這個牛逼的不行的系統,有什麼意見或建議可以私信我,也可以留言評論,大家一起學習,一起進步。
學習的框架
- 基本shell指令和腳本語言可以參考帖子博客,也可以跟着我一起學習,沒有推薦的書籍,但筆者這裏有一本《Linux命令行與shell腳本編程大全(第3版)》和《鳥哥的Linux私房菜-基礎篇(第四版)》網絡評價不錯,我會上傳到我的博客,有需要的可以去下載。
- Makefile的學習可以參考《GNU Make》和《跟我一起寫Makefile》評價不錯,我也上傳到我的博客中。
認識Linux系統
與Windows不同,Windows是可視化窗口界面,安裝軟件,存放文件,卸載什麼的,都是鼠標點點,硬盤分區更是把各種文件歸了類,非常清晰明瞭。在Linux中,有一句話,基本上每個人都會說,那就是一切皆文件,對於熟悉Linux的人來說,這些都是很清晰的,但是對於不熟悉的人來說,卻會說“很麻煩,不好用”之類的話。其實,Linux和Windows一樣清晰,存放文件是以文件樹的形式體現的,而操作是以終端窗口體現的。
文件樹流圖
文件樹結構釋義:
根文件目錄 | 主文件目錄 | 子文件目錄 | 解釋 |
---|---|---|---|
/ | bin | 系統文件和目錄 | 包含了引導啓動所需的命令或普通用戶可能用的命令(可能在引導啓動後).這些命令都是二進制文件的可執行程序,多是系統中重要的系統文件 |
sbin | 系統文件和目錄 | 系統管理命令,存放管理員需要的程序和一些重要的二進制文件,一般不給普通用戶使用 | |
etc |
系統文件和目錄 | 系統管理和配置文件,包含了用戶信息,系統初始化文件 | |
/etc/rc或/etc/rc.d或/etc/rc?.d | 啓動、或改變運行級時運行的腳本或腳本的目錄 | ||
/etc/passwd | 用戶數據庫,其中的域給出了用戶名、真實姓名、用戶起始目錄、加密口令和用戶的其他信息 | ||
/etc/fdprm | 軟盤參數表,用以說明不同的軟盤格式.可用setfdprm 進行設置 | ||
/etc/fstab | 指定啓動時需要自動安裝的文件系統列表.也包括用swapon -a啓用的swap區的信息 | ||
/etc/group | 組信息,包括組的各種數據 | ||
/etc/inittab | 初始化的配置文件 | ||
/etc/issue | 包括用戶在登錄提示符前的輸出信息,通常包括系統的一段說明或歡迎信息,具體內容由系統管理員確定 | ||
/etc/magic | “file”的配置文件,包含不同文件的格式說明,“file”基於它猜測文件類型 | ||
/etc/motd | motd是message of the day的縮寫,用戶成功登錄後自動輸出,內容由系統管理員確定,常用於通告信息,如計劃關機時間的警告等 | ||
/etc/mtab | 當前安裝的文件系統列表,由腳本初始化,並由 mount 命令自動更新,當需要一個當前安裝的文件系統的列表時使用(例如 df 命令) | ||
/etc/shadow | 在安裝了影子(shadow)口令軟件的系統上的影子口令文件,影子口令文件將/etc/passwd文件中的加密口令移動到/etc/shadow中,而後者只對超級用戶(root)可讀,這使破譯口令更難,以此增加系統的安全性 | ||
/etc/login.defs | login命令的配置文件 | ||
/etc/termcap | 終端性能數據庫,說明不同的終端用什麼“轉義序列”控制,寫程序時不直接輸出轉義序列(這樣只能工作於特定品牌得終端),而是從/etc/termcap中查找要做的工作的正確序列。這樣,多數的程序可以在多數的終端上運行 | ||
/etc/profile、/etc/csh.login、/etc/csh.cshrc | 登錄或啓動時bourne或C shell執行的文件,這允許系統管理員爲所有用戶建立全局缺省環境 | ||
/etc/printcap | 針對打印機,類似termcap,但語法不同 | ||
/etc/securetty | 確認安全終端,即哪個終端允許超級用戶(root)登錄,一般只列出虛擬控制檯,這樣就不可能(至少很困難)通過調制解調器或網絡闖入系統並獲得超級用戶權限 | ||
/etc/shells | 列出可以使用的shell.chsh命令允許用戶在本文件指定範圍內改變登錄的shell 提供一臺機器ftp服務的服務進程ftpd檢查用戶shell是否列在/etc/shells文件中,如果不是,將不允許該用戶登錄 | ||
dev |
設備文件 | 設備特殊文件,即設備驅動程序生成的設備節點,用戶可以通過訪問外部設備,設備文件用特殊的約定命名,這在設備列表中有說明,設備文件在安裝時有系統產生,以後可以用/dev/makedev/描述 | |
/dev/makedev.local | 是系統管理員爲本地設備文件(或連接)寫的描述文稿(即一些非標準設備驅動,不是標準makedev的一部分) | ||
/dev/console | 系統控制檯,直接和系統連接的監視器也就是電腦屏幕 | ||
/dev/hd | IDE硬盤驅動程序接口,如/dev/hd是指第一個硬盤,hda1是/dev/hda1的第一個分區 | ||
/dev/sd | SCSI磁盤驅動程序接口,如有系統有SCSI硬盤,就不會訪問/dev/hda而會訪問/dev/sda | ||
/dev/fd | 軟盤設備驅動程序 | ||
/dev/st | SCSI磁盤驅動器驅動程序 | ||
/dev/tty | 虛擬控制檯支持,tty1就是第一個虛擬控制檯 | ||
/dev/pty | 遠程登錄僞終端支持,進行Telnet登錄時就要用到 | ||
/dev/ttys | 計算機串口,對於DOS來說就是COM口 | ||
/dev/cua | 串口,與調制解調器一起使用的設備 | ||
/dev/null | 黑洞,所有寫入該設備的信息都將消失,例如:當想要將屏幕上的輸出信息隱藏起來時,只要將輸出信息輸入到/dev/null中即可。 | ||
proc | 系統文件或目錄 | 是系統內存的映射,可直接訪問這個目錄來獲取系統信息,這些信息是由系統自己產生,該目錄的內容不再硬盤上而在內存上 | |
var | 系統文件或目錄 | 包含系統一般運行時要改變的數據,通常這些數據所在的目錄的大小是要經常變化的或擴充的,每個系統是特定的,不通過網絡和其它計算機共享,系統產生的不可自動銷燬的緩存文件、日誌記錄。(系統和程序運行後產生的數據、不對外提供服務、只能用戶手動清理)(包括mail、數據庫文件、日誌文件) | |
/var/catman | 包括了格式化過的幫助( man )頁.幫助頁的源文件一般存在/usr/man/man中;有些man頁可能有預格式化的版本,存在/usr/man/cat中,而其他的man頁在第一次看時都需要格式化,格式化完的版本存在/var/man中,這樣其他人再看相同的頁時就無須再格式化了,/var/catman 經常被清除,就像清除臨時目錄一樣 | ||
/var/lib | 存放系統正常運行時要改變的文件 | ||
/var/local | 存放系統正常運行時要改變的文件 | ||
/var/lock | 鎖定文件.許多程序遵循在/var/lock中產生一個鎖定文件的約定,以用來支持他們正在使用某個特定的設備或文件,其他程序注意到這個鎖定文件時,就不會再使用這個設備或文件 | ||
/var/log | 各種程序的日誌( log )文件,尤其是login (/var/log/wtmp log紀錄所有到系統的登錄和註銷)和syslog (/var/log/messages 紀錄存儲所有核心和系統程序信息),/var/log 裏的文件經常不確定地增長,應該定期清除 | ||
/var/run | 保存在下一次系統引導前有效的關於系統的信息文件,例如:/var/run/utmp 包含當前登錄的用戶的信息 | ||
/var/spool | 放置“假脫機( spool )”程序的目錄,如mail、news、打印隊列和其他隊列工作的目錄 | ||
tmp | 公用的臨時文件存儲點,保存在使用完畢後可隨時銷燬的緩存文件。(有可能是由系統或程序產生、也有可能是用戶主動放入的臨時數據、系統會自動清理) | ||
usr |
系統或個人 | 所有的程序安裝在usr目錄裏,一般爲系統發行時自帶相當於Windows下的C:\Program files | |
/usr/bin | 集中了幾乎所有用戶命令,是系統的軟件庫,另有些命令在/bin 或/usr/local/bin中 | ||
/usr/sbin | 包括了根文件系統不必要的系統管理命令,例如多數服務程序 | ||
/usr/man、/ usr/info、/usr/doc | 這些目錄包含所有手冊頁、gnu信息文檔和各種其他文檔文件.每個聯機手冊的“節”都有兩個子目錄,例如: / usr/man/man1中包含聯機手冊第一節的源碼(沒有格式化的原始文件),/usr/man/cat1包含第一節已格式化的內容.l聯機手冊分爲以下九節:內部命令、系統調用、庫函數、設備、文件格式、遊戲、宏軟件包、系統管理和核心程序 | ||
/usr/include | 包含了c語言的頭文件,這些文件多以.h結尾,用來描述c語言程序中用到的數據結構、子過程和常量,爲了保持一致性,這實際上應該放在/usr/lib下,但習慣上一直沿用了這個名字 | ||
/usr/lib | 包含了程序或子系統的不變的數據文件,包括一些site-wide配置文件,名字lib來源於庫(library);編程的原始庫也存在/usr/lib裏,當編譯程序時,程序便會和其中的庫進行連接,也有許多程序把配置文件存入其中 | ||
/usr/local | 本地安裝的軟件和其他文件放在這裏,這與/usr類似,用戶可能會在這發現一些比較大的軟件包,如tex、emacs等! | ||
home |
用戶 | 用戶自己的目錄,可以在此存儲自己文件,資料等! | |
boot | 系統文件或目錄 | 引導加載文件以及映像文件等 | |
lib | 程序庫文件 | 根文件系統上的程序所需的共享庫,存放了根文件系統程序運行所需的共享文件,這些文件包含了可被許多程序共享的代碼,以避免每個程序都包含有相同的子程序的副本,故可以使得可執行文件變得更小,節省空間 | |
/lib/modules | 目錄包含系統核心,可加載各種模塊,尤其是那些在恢復損壞的系統時重新引導系統所需的模塊(例如網絡和文件系統驅動). | ||
opt |
三方軟件安裝文件夾,相當於Windows下的除C盤外的其它盤 | ||
mnt | 用戶臨時掛載點 | ||
media | 有些linux的發行版使用這個目錄來掛載那些usb接口的移動硬盤(包括U盤)、CD/DVD驅動器等等 | ||
srv | 主要用來存儲本機或本服務器提供的服務或數據(用戶主動生產的數據、對外提供服務) |
由上面可以知道,紅字部分都是重要文件夾,有時候會根據自己的需要修改一些文件,根文件夾下的home文件夾使我們自己可以配置的,三方軟件一般要安裝到opt文件夾裏面。我們可以在home裏面新建DEFGH當做我們的盤作爲區分,三方軟件安裝在opt文件夾下,可以把運行腳本建立軟連接到home的一個文件夾內,相當於Windows下的快捷方式。這樣一看其實結構也是很清晰的。
電子書鏈接
可以加入羣聊:667039215找羣主獲取
Linux命令行與shell腳本編程大全第三版
鳥哥的Linux私房菜-基礎篇》第四版
跟我一起寫Makefile 高清無碼文檔
GNU make中文手冊