Linux目錄與路徑

2022-10-10 18:02:16

Linux目錄與路徑

1.絕對路徑與相對路徑

​ 與Windows一樣,linux也有絕對路徑相對路徑的區別:

​ Windows的絕對路徑是以某個盤為起點,如win的桌面的絕對路徑為:

cd C:\Users\Administrator\Desktop

​ 而win的相對路徑,如桌面上有兩個檔案test1.txt和test2.txt,那麼他們的相對路徑就是他們互相的檔名。

​ linux的相對路徑與win相同,而絕對路徑是從 / 也就是根目錄(root)寫起,如linux的桌面路徑為:

cd /usr/Administrator/home/Desktop

​ 由路徑就引向了linux的目錄架構

絕對路徑相對路徑的區別就是,當錨定的檔案移動時,絕對路徑是依然能找到目標檔案的,而相對路徑則不行。它們各有優劣,相對路徑可以在大量檔案整體移動時保持相對完整的參照鏈;而絕對路徑在對檔案的定位時更為準確清晰。

2.linux的目錄結構

​ Linux的不管是redhat還是debian都有相似的目錄架構,在尋找檔案或安裝檔案時,能作為參考。Linux因為一切皆檔案的特性,會有一些特殊的檔案路徑,如 /proc, **/dev **等

​ 這裡參照菜鳥教學的目錄結構介紹,非常清晰明瞭:

  • /bin
    bin 是 Binaries (二進位制檔案) 的縮寫, 這個目錄存放著最經常使用的命令。

  • /boot:
    這裡存放的是啟動 Linux 時使用的一些核心檔案,包括一些連線檔案以及映象檔案。

  • /dev :
    dev 是 Device(裝置) 的縮寫, 該目錄下存放的是 Linux 的外部裝置,在 Linux 中存取裝置的方式和存取檔案的方式是相同的。

  • /etc:
    etc 是 Etcetera(等等) 的縮寫,這個目錄用來存放所有的系統管理所需要的組態檔和子目錄。

  • /home
    使用者的主目錄,在 Linux 中,每個使用者都有一個自己的目錄,一般該目錄名是以使用者的賬號命名的,如上圖中的 alice、bob 和 eve。

  • /lib
    lib 是 Library(庫) 的縮寫這個目錄裡存放著系統最基本的動態連線共用庫,其作用類似於 Windows 裡的 DLL 檔案。幾乎所有的應用程式都需要用到這些共用庫。

  • /lost+found
    這個目錄一般情況下是空的,當系統非法關機後,這裡就存放了一些檔案。

  • /media
    linux 系統會自動識別一些裝置,例如U盤、光碟機等等,當識別後,Linux 會把識別的裝置掛載到這個目錄下。

  • /mnt
    系統提供該目錄是為了讓使用者臨時掛載別的檔案系統的,我們可以將光碟機掛載在 /mnt/ 上,然後進入該目錄就可以檢視光碟機裡的內容了。

  • /opt
    opt 是 optional(可選) 的縮寫,這是給主機額外安裝軟體所擺放的目錄。比如你安裝一個ORACLE資料庫則就可以放到這個目錄下。預設是空的。

  • /proc
    proc 是 Processes(程序) 的縮寫,/proc 是一種偽檔案系統(也即虛擬檔案系統),儲存的是當前核心執行狀態的一系列特殊檔案,這個目錄是一個虛擬的目錄,它是系統記憶體的對映,我們可以通過直接存取這個目錄來獲取系統資訊。
    這個目錄的內容不在硬碟上而是在記憶體裡,我們也可以直接修改裡面的某些檔案,以達到修改程序的目的 ,如:

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
  • /root
    該目錄為系統管理員,也稱作超級許可權者的使用者主目錄。

  • /sbin
    s 就是 Super User 的意思,是 Superuser Binaries (超級使用者的二進位制檔案) 的縮寫,這裡存放的是系統管理員使用的系統管理程式。

  • /selinux
    這個目錄是 Redhat/CentOS 所特有的目錄,Selinux 是一個安全機制,類似於 windows 的防火牆,但是這套機制比較複雜,這個目錄就是存放selinux相關的檔案的。

  • /srv
    該目錄存放一些服務啟動之後需要提取的資料。

  • /sys

    這是 Linux2.6 核心的一個很大的變化。該目錄下安裝了 2.6 核心中新出現的一個檔案系統 sysfs 。

    sysfs 檔案系統整合了下面3種檔案系統的資訊:針對程序資訊的 proc 檔案系統、針對裝置的 devfs 檔案系統以及針對偽終端的 devpts 檔案系統。

    該檔案系統是核心裝置樹的一個直觀反映。

    當一個核心物件被建立的時候,對應的檔案和目錄也在核心物件子系統中被建立。

  • /tmp
    tmp 是 temporary(臨時) 的縮寫這個目錄是用來存放一些臨時檔案的。

  • /usr
    usr 是 unix shared resources(共用資源) 的縮寫,這是一個非常重要的目錄,使用者的很多應用程式和檔案都放在這個目錄下,類似於 windows 下的 program files 目錄。

  • /usr/bin:
    系統使用者使用的應用程式。

  • /usr/sbin:
    超級使用者使用的比較高階的管理程式和系統守護程式。

  • /usr/src:
    核心原始碼預設的放置目錄。

  • /var
    var 是 variable(變數) 的縮寫,這個目錄中存放著在不斷擴充著的東西,我們習慣將那些經常被修改的目錄放在這個目錄下。包括各種紀錄檔檔案。

  • /run
    是一個臨時檔案系統,儲存系統啟動以來的資訊。當系統重啟時,這個目錄下的檔案應該被刪掉或清除。如果你的系統上有 /var/run 目錄,應該讓它指向 run。

3.全域性變數$PATH

​ 在liunx中要使用一個可執行檔案一般都是以 ./檔名 的方式執行,但是為什麼像 ls cd ps 這些系統內建命令,和一些通過安裝包安裝的軟體可以在任意位置使用呢?

​ 就是因為有全域性變數$PATH的存在:在執行這些命令時,會從全域性變數$PATH所指的那些路徑中從前到後尋找相應的命令進行執行。

​ 我們可以用以下命令檢視$PATH的內容:

echo $PATH

​ 在Ubuntu 18.04 Desktop裡會得到以下內容:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

​ 在Centos 3.10.0裡會得到以下內容:

/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

​ 那麼因此可以把自己寫的指令碼放到這些目錄下,就可以在任意地方執行了。當然也可以將惡意程式放在優先順序更高的目錄來偽裝成某個程式誘導執行。

​ 可能每個人的$PATH並不全是一樣的,也有可能根據不同的系統,不同的賬戶發生改變,當然,也可以自行進行增刪改。

4.目錄檢視和增刪

4.1檢視目錄

​ 在檢視目錄的可以時候使用:

ls -l

​ 或者:

ll

​ 來檢視檔案的具體情況:有許可權,建立者,所屬人,最後改動的時間戳,詳細的檔名(如目錄、連結檔案等特殊檔案),這些是有關檔案的內容,這裡不做贅述。

​ 在檢視目錄時使用:

ls -a

​ 來檢視當前目錄所有的檔案或目錄。

​ 這兩個引數當然也可以合起來使用,來檢視所有檔案的詳細情況。

4.2增、刪、移目錄

​ 在建立目錄時使用:

mkdir 目錄的相對/絕對路徑

​ 當在建立目錄時,可以使用 -m 來指定該目錄的許可權,一般來說目錄都應含有執行許可權(x許可權)和讀取許可權(r許可權),這樣才能進入(對應x許可權)和讀取(對應r許可權)該目錄。

​ 也可以遞迴建立目錄,只需要加上 -p 則可以依次建立不存在的目錄。

​ 在刪除目錄時使用:

rmdir 目錄的相對/絕對路徑

但是這樣只能刪除空目錄!也就是說如果該目錄中有檔案或者其他目錄時,則不能使用該命令,而要用:

rm -r 目錄的相對/絕對路徑

​ 來刪除該目錄和該目錄下的所有內容。

​ 在移動或重新命名目錄時:(對於檔案也可以使用這個命令)

mv 要移動的目錄的相對/絕對路徑 移動到的目錄的相對/絕對路徑

由此可見,其實重新命名的本質也是移動