linux文件系統\環境變量\幫助文件

    概要: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)、主流發行版官方文檔:

        http://www.redhat.com/doc

f)、程序的官方文檔:(document)

g)、搜索引擎(keyword filetype:pdf)

相關文章
相關標籤/搜索