1. 怎么理解“Linux中一切皆文件”?Linux是如何組織文件的?
(1)“Linux中一切皆文件”的理解和文件組織:
在Linux中,“一切皆文件”指的是Linux將各種設備、目錄、文件等都視為文件對象進行管理。這種統一的文件系統視圖簡化了對系統資源的訪問和管理。
(2)Linux文件系統的組織:
Linux文件系統的組織是基于樹狀結構的,根目錄 / 下包含了各種子目錄和文件,每個子目錄又可以包含更多的子目錄或文件。文件系統通常由文件、目錄、鏈接和特殊文件(如設備文件)組成。
2. Linux目錄樹中有哪些重要的目錄及其用途?
① bin:存放系統核心命令。
② boot:存放啟動Linux時使用的文件。
③ etc:存放系統的配置文件。
④ home:普通用戶的主目錄。
⑤ root:超級用戶(root)的主目錄。
⑥ tmp:存放臨時文件。
⑦ usr:存放系統應用程序和文件。
⑧ var:存放經常變化的文件,比如日志文件。
⑨ dev:存放設備描述文件,用于與系統中的硬件設備和虛擬設備進行交互。
⑩ media和mnt:用于掛載可移動設備(如光盤、USB閃存驅動器)和臨時掛載點的目錄。通常,media用于自動掛載,而mnt用于手動掛載。
3. 如何識別一個路徑名是絕對路徑名還是相對路徑名?
① 絕對路徑名以 /(斜杠) 開頭,例如 /home/user/file.txt ;
② 相對路徑名不以 / (斜杠)開頭,例如 .../.../file.txt 。
4. 有三個特殊目錄,請列舉。
① .(一點):表示當前目錄;
② ..(兩點):表示父級目錄;
③ /(斜杠):表示根目錄。
5. rm -r 和 rmdir (rm -d) 有什么區別?
① rm -r :遞歸刪除目錄及其內容;
② rmdir(rm -d):只能刪除空目錄。
6. 怎么理解文件間的鏈接?有幾種方式可以管理文件間的鏈接?它們有什么區別?
(1)文件間的連接:
文件鏈接是指在文件系統中創建一個文件名,指向另一個文件的鏈接。
(2)主要有兩種鏈接方式:硬鏈接和軟鏈接。
① 硬鏈接:創建的是一個指向inode的新目錄項,它與原始文件共享inode和數據塊。
類似于:從一個盤向另一個盤復制粘貼文件的緩沖加載過程,該過程就是在創建硬連接的過程。
② 軟鏈接(符號鏈接):創建的是一個指向原始文件路徑的特殊文件。
類似于:Windows中的快捷方式。
(3)二者的區別:
① 創建方式:硬鏈接創建的是同一inode下的額外文件名,而軟鏈接創建的是一個特殊的文件,內容是目標的路徑名。
② 目標類型:硬鏈接只能指向文件,軟鏈接可以指向文件或目錄。
③ 文件系統限制:硬鏈接不能跨文件系統,軟鏈接可以。
④ 刪除行為:刪除原始文件后,硬鏈接仍然可以訪問原始數據;刪除原始文件后,軟鏈接指向的路徑無效,即“死鏈接”。
7. 如何創建軟連接和硬鏈接? 如何查看?
① 創建軟鏈接:ln -s ;
② 創建硬鏈接:ln ;
③ 查看鏈接:ls -l 。
8. 說出以下通配符的匹配項:* 、? 、??? 、 a* 、*b、*c* 、[ac]* 、[^abc] 、[!abc]
① * :任意字符序列(包括空序列)。
② ? :任意單個字符。
③ ??? :正好三個字符。
④ a* :以 a 開頭的任意字符序列。
⑤ *b :以 b 結尾的任意字符序列。
⑥ *c* :包含字符 c 的任意字符序列。
⑦ [ac]* :以 a 或 c 開頭的任意字符序列。
⑧ [^abc] 或 [!abc] :不以 a、b 或 c 開頭的任意字符序列。
9. $HOSTNAME 、${HOSNAME} 、$(hostname) 這三個字符串的區別是什么?
① $HOSTNAME:環境變量,表示當前主機的名稱。
② ${HOSNAME}:如果沒有定義環境變量 HOSNAME,會直接展示為 ${HOSNAME}。
③ $(hostname):命令替換,執行 hostname 命令并將結果插入到該位置。
10. 如何防止 shell 命令參數被擴展?
使用 ' '(單引號)或者 \(反斜杠)可以防止 shell 對命令參數進行擴展。
11. 為防止shell 命令參數被擴展,使用單引號和雙引號有什么區別?
單引號 ' ' :禁止 shell 對字符串中的特殊字符進行擴展,所有字符都被視為普通字符。
雙引號 " " :允許在字符串中使用變量,并會對變量進行擴展,但不會對部分特殊字符如 $、\ 和 `` 進行擴展。