Linux目錄與路徑

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 **等

linux目錄結構

​ 這裡引用菜鳥教程的目錄結構介紹,非常清晰明了:

  • /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 要移動的目錄的相對/絕對路徑 移動到的目錄的相對/絕對路徑

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