1. 程式人生 > >Linux個人學習筆記

Linux個人學習筆記

linux入門 筆記

針對自學的入門筆記

linux認識

  1. [email protected] ~】# ,root :當前登陸使用者; happy:主機名 ~當前所在目錄; #超級使用者的提示符;$普通使用者提示符。
  2. **ls [選項] 檔案或者目錄 **
    其中選項型別
    -a 顯示所有檔案包括隱藏的檔案
    -l 顯示詳細資訊
    -d 檢視目錄屬性
    -h 人性化顯示檔案大小
    -i 顯示inode
  3. -rw-r–r--(1 3 3 3) - rw- r-- r–
    -檔案型別(-檔案 d目錄 l軟連結)
    rw- : 所有者; r–:g所有組 r–:o其他人
    r:讀 w:寫 x:執行
  4. **目錄處理命令,make directories mkdir [目錄名]
    中間加 -p 遞迴建立(目錄中在建立目錄);cd 切換目錄
    cd ~ =cd ;cd - 進入上一次目錄 ; cd … 進入上一級目錄 ; cd. :進入當前目錄
    pwd :顯示當前的目錄。
    其中路徑的分類為:相對路徑和絕對路徑。
    相對路徑:參考當時所在目錄 進行查詢 cd…
    絕對路徑:從跟目錄開始指定 一級一級的遞迴查詢。
    Tab 鍵的使用 補全 .
    4.1刪除目錄 rmdir(remove empty directories) rm 檔案

rm -r 檔案 rm -rf 檔案 (-r 刪除目錄 ;-f 強制)
5. cp (copy)
-r 複製目錄; -p :連帶檔案屬性複製 ; -d 若檔案是連結檔案 則複製連結屬性。
-a相當於-pdr.
6. mv (move) mv (原檔案或者目錄) (目標目錄)


7. 判斷原始檔和目標是否在同一目錄下{ y 改名;n 剪下}。

常見linux目錄作用

在這是Linux系統的頂層目錄結構插入圖片描述
/usr/local
安裝本地程式的一般預設路徑。
當我們下載一個程式原始碼,編譯並且安裝的時候,如果不特別指定安裝的程式路徑,那麼預設會將程式相關的檔案安裝到這個目錄的對應目錄下。例如,安裝的程式可執行檔案被安裝(安裝實質就是複製到了/usr/local/bin下面,此程式(可執行檔案所需要依賴的庫檔案被安裝到了/usr/local/lib目錄下,被安裝的軟體如果是某個開發庫(例如Qt,Gtk等那麼相應的標頭檔案可能就被安裝到了/usr/local/include中等等。也就是說,這個目錄存放的內容,一般都是我們後來自己安裝的軟體的預設路徑,如果擇了這個預設路徑作為軟體的安裝路徑,被安裝的軟體的所檔案都限制在這個目錄中,其中的子目錄就相應於根目錄的子目錄。

/etc
全域性的配置檔案存放目錄。
系統和程式一般都可以通過修改相應的配置檔案,來進行配置。例如,要配置系統開機的時候啟動那些程式,配置某個程式啟動的時候顯示什麼樣的風格等等。通常這些配置檔案都集中存放在/etc目錄中,所以想要配置什麼東西的話,可以在/etc下面尋找我們可能需要修改的檔案。一些大型套件,如X11,在 /etc 下它們自己的子目錄。系統配置檔案可以放在這裡或在 /usr/etc。 不過所程式總是在 /etc 目錄下查詢所需的配置檔案,你也可以將這些檔案連結到目錄 /usr/etc。另外,還一個需要注意的常見現象就是,當某個程式在某個使用者下執行的時候,可能會在該使用者的家目錄中生成一個配置檔案(一般這個檔案最開始就是/etc下相應配置檔案的拷貝,存放相應於“當前使用者”的配置,這樣當前使用者可以通過配置這個家目錄的配置檔案,來改變程式的行為,並且這個行為只是該使用者特的。原因就是:一般來說一個程式啟動,如果需要讀取一些配置檔案的話,它會首先讀取當前使用者家目錄的配置檔案,如果存在就使用;如果不存在它就到/etc下讀取全域性的配置檔案進而啟動程式。就是這個配置檔案不自動生成,我們手動在自己的家目錄中建立一個檔案的話,也有許多程式會首先讀取到這個家目錄的檔案並且以它的配置作為啟動的選項(例如我們可以在家目錄中建立vim程式的配置檔案.vimrc,來配置自己的vim程式。
/usr
這個目錄中包含了命令庫檔案和在通常操作中不會修改的檔案。
這個目錄對於系統來說也是一個非常重要的目錄,其地位類似Windows上面的”Program Files”目錄(請原諒我可能這樣做比較不太恰當_。安裝程式的時候,預設就是安裝在此檔案內部某個子資料夾內。輸入命令後系統預設執行/usr/bin下的程式(當然,前提是這個目錄的路徑已經被新增到了系統的環境變數中。此目錄通常也會掛載一個獨立的磁碟分割槽,它應儲存共享只讀類檔案,這樣它可以被執行Linux的不同主機掛載。/usr/lib
目標庫檔案,包括動態連線庫加上一些通常不是直接呼叫的可執行檔案的存放位置。
這個目錄功能類似/lib目錄,理說,這裡存放的檔案應該是/bin目錄下程式所需要的庫檔案的存放地,也不排除一些例外的情況。

/usr/bin
一般使用者使用並且不是系統自檢等所必需可執行檔案的目錄。
此目錄相當於根檔案系統下的對應目錄(/bin,非啟動系統,非修復系統以及非本地安裝的程式一般都放在此目錄下。

/usr/sbin
管理員使用的非系統必須的可執行檔案存放目錄。
此目錄相當於根檔案系統下的對應目錄(/sbin,儲存系統管理程式的二進位制檔案,並且這些檔案不是系統啟動或檔案系統掛載 /usr 目錄或修復系統所必需的。

/usr/share
存放共享檔案的目錄。
在此目錄下不同的子目錄中儲存了同一個作業系統在不同構架下工作時特定應用程式的共享資料(例如程式文件資訊)。使用者可以找到通常放在 /usr/doc 或 /usr/lib 或 /usr/man 目錄下的這些類似資料。

/usr/include
C程式語言編譯使用的標頭檔案。
linux下開發和編譯應用程式所需要的標頭檔案一般都存放在這裡,通過標頭檔案來使用某些庫函式。預設來說這個路徑被新增到了環境變數中,這樣編譯開發程式的時候編譯器會自動搜尋這個路徑,從中找到你的程式中可能包含的標頭檔案。

/usr/local
安裝本地程式的一般預設路徑。
當我們下載一個程式原始碼,編譯並且安裝的時候,如果不特別指定安裝的程式路徑,那麼預設會將程式相關的檔案安裝到這個目錄的對應目錄下。例如,安裝的程式可執行檔案被安裝(安裝實質就是複製到了/usr/local/bin下面,此程式(可執行檔案所需要依賴的庫檔案被安裝到了/usr/local/lib目錄下,被安裝的軟體如果是某個開發庫(例如Qt,Gtk等那麼相應的標頭檔案可能就被安裝到了/usr/local/include中等等。也就是說,這個目錄存放的內容,一般都是我們後來自己安裝的軟體的預設路徑,如果擇了這個預設路徑作為軟體的安裝路徑,被安裝的軟體的所檔案都限制在這個目錄中,其中的子目錄就相應於根目錄的子目錄。
/var
內容經常變化的目錄。
此目錄下檔案的大小可能會改變,如緩衝檔案,日誌檔案,快取檔案,等一般都存放在這裡。

/tmp
臨時檔案目錄。
該目錄存放系統中的一些臨時檔案,檔案可能會被系統自動清空。的系統直接把tmpfs型別的檔案系統掛載到這個目錄上,tmpfs檔案系統由Linux核心支援,在這個檔案系統中的資料,實際上是記憶體中的,由於記憶體的資料斷電易失,當系統重新啟動的時候我們就會發現這個目錄被清空了。
/root
使用者root的 H O M E ( r o o t ) / h o m e / r o o t / h o m e HOME目錄 系統管理員(就是root使用者或超級使用者)的主目錄比較特殊,不存放在/home中,而是直接放在/root目錄下了。 /home 普通使用者的家目錄( HOME目錄。
在Linux機器上,使用者主目錄通常直接或間接地置在此目錄下。其結構通常由本地機的管理員來決定。通常而言,系統的每個使用者都自己的家目錄,目錄以使用者名稱作為名字存放在/home下面(例如quietheart使用者,其家目錄的名字為/home/quietheart。該目錄中儲存了絕大多數的使用者檔案(使用者自己的配置檔案,定製檔案,文件,資料等),root使用者除外(參見後面的/root目錄。由於這個目錄包含了使用者實際的資料,通常系統管理員為這個目錄單獨掛載一個獨立的磁碟分割槽,這樣這個目錄的檔案系統格式就可能和其他目錄不一樣了(儘管表面上看,這個目錄還是屬於根目錄的一棵子樹上),有利於資料的維護。
/dev
裝置檔案目錄。
在Linux中裝置都是以檔案形式出現,這裡的裝置可以是硬碟,鍵盤,滑鼠,網絡卡,終端,等裝置,通過訪問這些檔案可以訪問到相應的裝置。裝置檔案可以使用mknod命令來建立,具體參見相應的命令;而為了將對這些裝置檔案的訪問轉化為對裝置的訪問,需要向相應的裝置提供裝置驅動模組(一般將裝置驅動編譯之後,生成的結果是一個*.ko型別的二進位制檔案,在核心啟動之後,再通過insmod等命令載入相應的裝置驅動之後,我們就可以通過裝置檔案來訪問裝置了。一般來說,想要Linux系統支援某個裝置,只要個東西:相應的硬體裝置,支援硬體的驅動模組,以及相應的裝置檔案/
根目錄。
包含了幾乎所的檔案目錄。相當於中央系統。進入的最簡單方法是:cd /。

/boot
載入程式,核心等存放的目錄。
這個目錄,包括了在引導過程中所必需的檔案,載入程式的相關檔案(例如grub,lilo以及相應的配置檔案以及Linux作業系統核心相關檔案(例如vmlinuz等一般都存放在這裡。在最開始的啟動階段,通過載入程式將核心載入到記憶體,完成核心的啟動(這個時候,虛擬檔案系統還不存在,載入的核心雖然是從硬碟讀取的,但是沒經過Linux的虛擬檔案系統,這是比較底層的東西來實現的。然後核心自己建立好虛擬檔案系統,並且從虛擬檔案系統的其他子目錄中(例如/sbin 和 /etc載入需要在開機啟動的其他程式或者服務或者特定的動作(部分可以由使用者自己在相應的目錄中修改相應的檔案來配製。如果我們的機器中包含多個作業系統,那麼可以通過修改這個目錄中的某個配置檔案(例如grub.conf來調整啟動的預設作業系統,系統啟動的擇選單,以及啟動延遲等引數。

/sbin
超級使用者可以使用的命令的存放目錄。
存放大多涉及系統管理的命令(例如引導系統的init程式,是超級許可權使用者root的可執行命令存放地,普通使用者無許可權執行這個目錄下的命令(但是時普通使用者也可能會用到。這個目錄和/usr/sbin; /usr/X11R6/sbin或/usr/local/sbin等目錄是相似的,我們要記住,凡是目錄sbin中包含的都是root許可權才能執行的,這樣就行了。後面會具體區分。

/bin
普通使用者可以使用的命令的存放目錄。
系統所需要的那些命令位於此目錄,比如ls、cp、mkdir等命令;類似的目錄還/usr/bin,/usr/local/bin等等。這個目錄中的檔案都是可執行的、普通使用者都可以使用的命令。作為基礎系統所需要的最基礎的命令就是放在這裡。

/lib
根目錄下的所程式的共享庫目錄。
此目錄下包含系統引導和在根使用者執行命令時候所必需用到的共享庫。做個不太好但是比較形象的比喻,點類似於Windows上面的system32目錄。理說,這裡存放的檔案應該是/bin目錄下程式所需要的庫檔案的存放地,也不排除一些例外的情況。類似的目錄還/usr/lib,/usr/local/lib等等。

複製別人僅供學習
此外,有些目錄初學者容易混淆,這裡簡單區分一下:
/bin,/sbin與/usr/bin,/usr/sbin:
/bin一般存放對於使用者和系統來說“必須”的程式(二進位制檔案)。
/sbin一般存放用於系統管理的“必需”的程式(二進位制檔案),一般普通使用者不會使用,根使用者使用。
/usr/bin一般存放的只是對使用者和系統來說“不是必需的”程式(二進位制檔案)。
/usr/sbin一般存放用於系統管理的系統管理的不是必需的程式(二進位制檔案)。

/lib與/usr/lib:
/lib和/usr/lib的區別類似/bin,/sbin與/usr/bin,/usr/sbin。
/lib一般存放對於使用者和系統來說“必須”的庫(二進位制檔案)。
/usr/lib一般存放的只是對使用者和系統來說“不是必需的”庫(二進位制檔案)。

Linux 的硬連結和軟連結

索引節點(inode)
要了解連結,我們首先得了解一個概念,叫索引節點(inode)。在Linux系統中,核心為每一個新建立的檔案分配一個Inode(索引結點),每個檔案都有一個惟一的inode號,我們可以將inode簡單理解成一個指標,它永遠指向本檔案的具體儲存位置。檔案屬性儲存在索引結點裡,在訪問檔案時,索引結點被複制到記憶體在,從而實現檔案的快速訪問。系統是通過索引節點(而不是檔名)來定位每一個檔案。

硬連結(Hard Link)
硬連結說白了是一個指標,指向檔案索引節點,系統並不為它重新分配inode。
可以用:ln命令來建立硬連結。引用ln [options] existingfile newfile
ln [options] existingfile-list directory
用法:
第一種為”existingfile”建立硬連結,檔名為”newfile”。
第二種在”directory”目錄中,為” existingfile-list”中包含的所有檔案建立一個同名的硬連結。
常用可選[options]:-f 無論”newfile”存在與否,都建立連結。-n 如果”newfile”已存在,就不建立連結。

軟連結(Soft Link)類似於window的快捷方式
軟連結又叫符號連結,這個檔案包含了另一個檔案的路徑名。可以是任意檔案或目錄,可以連結不同檔案系統的檔案。和win下的快捷方式差不多。
可以用:ln -s 命令來建立軟連結。引用ln -s existingfile newfile
ln -s existingfile-list directory