概要:linux
linux文件系統(FHS)介紹;文件路徑;文件名;程序命令的位置;程序格式(ELF);命令分類;命令幫助;
程序員
1、linux的哲學思想包括如下幾個方面:shell
一、一切都由文件組成(包括硬件設備、以及通訊接口等),使用文本文件保存配置信息(好處:一款文本編輯器完成大多數系統操做)。數據庫
二、由衆多功能單一的程序組成:保證一個程序只作一件事,而且能作好他。編程
三、儘可能避免與用戶交互。(易於以編程的方式實現自動化任務)windows
2、文件系統及文件介紹:
架構
linux採用目錄、文件的樹形層級結構形式的文件系統。其中目錄主要是作路徑映射;文件是存儲空間存儲的一段數據流,對數據能夠作到按名存取。app
FHS(Filesystem Hierarchy Standard(文件系統目錄標準)的縮寫)定義了兩層規範,第一層是, / 下面的各個目錄應該要放什麼文件數據,例如/etc應該要放置設置文件,/bin與/sbin則應該要放置可執行文件等等。由於Linux的開發人員實在太多了,若是每一個人都使用本身的目錄配置方法,那麼將可能會帶來不少管理問題。你能想象,你進入一個企業以後,所接觸到的Linux目錄配置方法居然跟你之前學的徹底不一樣嗎?很難想象。因此,後來就有所謂的文件系統層次標準(Filesystem Hierarchy Standard,FHS)出臺。編輯器
第二層則是針對/usr及/var這兩個目錄的子目錄來定義。例如/var/log放置系統登陸文件、/usr/share放置共享數據等等ide
linux文件系統:(FHS:文件系統層級標準)
FHS定義了linux文件系統根目錄下應有的目錄及文件:
/bin:全部用戶使用的基本命令程序文件;
/sbin:系統管理員使用的工具程序(/usr/sbin;/usr/local/sbin);
/boot:啓動過程當中須要的靜態文件(kernel、initramfs(initrd)、grub),系統啓動後將不須要此文件。
/dev:設備文件或特殊文件;
設備類型(字符設備\(線性設備)(如:鍵盤)、塊設備\(隨機設備)(如:硬盤))
/etc:主機程序特有的配置文件只能爲靜態的,不能爲二進制的;(大多數都是文本文件),其下也遵循 文件系統層級分級
/home:普通用戶家目錄(可選目錄)
/root:管理員家目錄
/lib:系統啓動過程當中或啓動程序調用/bin、/sbin下的用到的庫文件,以及爲內核提供內核文件
/lib下的三個重要的庫:
libc.so.*:動態連接的c庫
ld*:運行時連接器/加載器
modules:用於存儲內核模塊的目錄
/lib(64):64位系統啓動過程當中或啓動程序調用/bin、/sbin下的用到的庫文件,以及爲內核提供內核文件
/media:爲便攜性設備(如:軟盤、光盤、U盤等)提供掛載點;(不嚴格限制)
/mnt:其餘文件系統的臨時掛載點
/opt:非關鍵性的第三方的程序安裝位置;(非限制性)
/srv:主機爲服務提供的數據;
/tmp:臨時文件目錄(爲那些會產生臨時文件的程序提供的用於存儲臨時文件的目錄,可供全部用戶提供寫入操做,有特殊權限);
/usr:全局共享的只讀數據路徑;除根目錄(/),第二重要目錄。
usr也是一個層級結構,裏面必有目錄:
bin、sbin、
lib、
include:c程序頭文件
share:命令手冊頁和自帶文檔等架構特有的文件存儲路徑、
local:用來存儲第三方程序;另外一個層級目錄
/usr/local:讓系統管理安裝本地應用程序,一般也安裝第三方程序
usr也是一個層級結構,裏面可選目錄:
lib6四、
x11r6:x-windows程序安裝位置
src:程序源碼文件的存儲位置
/var:存儲常常發生變化的目錄(如日誌);它也是一個層級文件。
cache、lib、local、lock、log、opt、run、spool、tmp
/proc:基於內存的虛擬文件系統,用來爲內核及進程存儲其相關信息,他們多爲內核參數。
/sys:sysfs虛擬文件系統提供了一種比proc更爲理想的訪問內核數據的路徑。它也是基於內存的虛擬文件系統,其主要做用爲linux統一設備模型提供接口以便管理之用。
程序的編譯方式:(動態編譯、靜態編譯)
動態編譯:庫文件不被複制在源程序中,而是被調用。(程序編譯時要指定庫文件所在路徑)
靜態編譯:程序調用的庫直接編譯在源程序文件中(將庫文件複製一份在源程序中)。
linux庫:glibc
因爲FHS僅是定義出最上層(/)及子層(/usr, /var)的目錄內容應該要放置的文件數據,所以,在其餘子目錄層級內,就能夠隨開發人員自行配置了。
一、文件路徑的表示:
絕對路徑:從根起始的路徑。
相對路徑:從當前位置開始表示的路徑。
二、文件名使用法則:
嚴格區分字符大小寫;
目錄也是文件,在同一路徑下,兩個文件不能同名;
支持除/之外的任意字符;
最長不能超過255個字符。
以.(點)開頭的文件爲隱藏文件 // 目錄中的.文件表明當前目錄,..表明上級目錄
三、linux文件系統結構:
/:系統原始起點,根目錄。
家目錄:/home:用戶家目錄(用戶起始目錄),普通用戶管理文件的位置。
工做目錄:(working )directory
/etc/sysconfig/network-scripts/ifcfg-eno16777736
basename:最右側的文件或目錄名,如上述的ifcfg-eno16777736;
dirname:basename左側的路徑,如上述的 /etc/sysconfig/network-scripts/;
獲取文件路徑的basename:
#basename /etc/sysconfig/network-scripts/ifcfg-eno16777736
獲取文件路徑的dirname:
#dirname /etc/sysconfig/network-scripts/ifcfg-eno16777736
四、程序、
多數系統程序文件通常存在 :/bin,/sbin,/usr/bin,/usr/sbin,
第三方安裝的程序文件通常存在:/usr/local/bin,/usr/local/sbin
普通命令:/bin,/usr/bin,/usr/local/bin
管理命令:/sbin,/usr/sbin,/usr/local/sbin
庫文件(不能單獨執行,需被調用執行)通常存於:放:/lib,/lib64,/usr/lib,/usr/lib64,/usr/local/lib,/usr/local/lib64
32位庫文件:/lib,/usr/lib,/usr/local/lib
64位庫文件:/lib64,/usr/lib64,/usr/local/lib64elf
五、linux命令遵循的特定格式規範:ELF
#file /bin/ls //查看特定路徑下可執行程序的文件格式的類型;
並不是全部的命令都有一個在某個目錄下與之對應的可執行程序,如cd就沒有。
命令分類:
a)、由shell程序自帶的命令:內置命令(bulitin)
b)、獨立的可執行程序文件、文件名即命令名:外部命令
shell程序是獨特的程序,負責解析用戶提供的命令。(藉助於環境變量實現)
環境變量: PATH //定義了從哪些路徑中查找用戶鍵入的命令字符串所對應的命令文件。
查看環境變量#echo $PATH //(路徑中自左向右查找,按照查找次序執行命令)
以上是外部命令查找方法,內部命令不在上述查找內。
查看命令類型:
#type 命令 //查看命令是內部或外部命令。
六、命令的使用幫助:
內部命令:#help 命令
外部命令:
a)、#command --help
b)、#man command //man手冊/usr/share/man,
命令幫助分段(section):
NAME:功能性說明
SYNOPSIS:語法格式(摘要) //[ ]可選內容;< > 必選內容;a | b | c,a、b、c項選一項;。。。同類內容可 出現多個,{ }命令分組。
DESCRIPTION:描述
OPTIONS:選項
EXAMPLS:使用事例
AUTHOR:做者
BUGS:報告程序bugs的方式
SEE ALSO:參考命令。
命令幫助章節說明:(/usr/share/man)
#man # command //man後的#表示要看的幫助章節。並不是每一個command在每一個章節都有幫助手冊。
#whatis command //顯示command在哪些章節有幫助。
#man -f command //做用同whatis command
#makewhatis //手動更新whatis數據庫。由於用whatis command命令查看時,是查詢數據庫的出來的。
man一、用戶命令(普通用戶、管理員)
man二、系統調用命令,通常程序員會用到
man三、c庫調用
man四、設備文件及特殊文件
man五、文件配置格式的說明
man六、遊戲幫助
man七、雜項
man八、管理工具及守護進程
man命令打開後操做方法:
翻屏:
空格鍵:一次向後翻一屏
b建:一次向前翻一屏
ctrl+d鍵:向後翻半屏
ctrl+u鍵:向前翻半屏
回車鍵:向後翻一行
k鍵:向前翻一行
G鍵:跳轉至最後同樣
#+G鍵:跳轉至指定行
1+G鍵:跳轉至首行。
文本搜索:
/keyword //從文件首部向文件尾部依次查找;不區分字符大小寫
?keyword //從文件尾部向文件首部依次查找
找到關鍵字後,若是有多個敲入n(與查找命令方向相同)查找,N(與查找命令方向相反)查找。
退出:
q:quit
選項
#-M /path/to/somewhere //到指定目錄下查找命令手冊並打開它。
#man -f //至關於whatis,查找man全部文件幫助所在的章節
#man -w //--where, --path, --location
不實際顯示手冊頁,但打印將格式化的 nroff 文件的位置。
#id user //查看用戶的id
#tail -1 /some/where //查看最後一行。
c)、info command 獲取命令的在線幫助文檔(不是每一個命令都有)
d)、不少應用程序會自帶幫助文檔,文檔位置:/usr/share/doc/app-version(應用程序+版本號)
README:程序相關信息
INSTALL:安裝幫助
CHANGES:版本變更
e)、主流發行版官方文檔:
f)、程序的官方文檔:(document)
g)、搜索引擎(keyword filetype:pdf)