Linux基礎命令之目錄管理——了解各種操作文件目錄的命令,萬字教學,超詳細!!!(1)

文章目錄

  • 前言
  • 1、Linux文件系統
    • 1.1 核心特點
    • 1.2 重要目錄結構
    • 1.3 文件類型
    • 1.4 文件和目錄的命名規則
    • 1.5 文件與目錄的定位方式
  • 2、查看目錄或文件的詳細信息(ls)
    • 2.1 基本語法
    • 2.2 常用操作
    • 2.3 高級用法
  • 3、切換目錄(cd)
    • 3.1 常用操作
    • 3.2 擴展:顯示當前工作目錄(pwd)
  • 4、查看、合并文件(cat)
  • 5、復制文件或目錄(cp)
  • 6、移動或重命名文件/目錄(mv)
  • 7、創建文件或目錄
    • 7.1 創建文件(touch)
    • 7.2 創建目錄(mkdir)
  • 8、刪除文件或目錄
    • 8.1 rm 命令的使用
    • 8.2 rmdir 命令的使用
  • 9、檢測文件類型(file)

前言

本篇文章從底層出發,詳細講解了Linux文件系統的結構及特點,同時介紹了許多管理文件和目錄的命令,包括ls、cd、cat、cp、touch、mkdir、file等命令,通過學習這些命令,大家可以更好的操作并管理linux文件系統,整篇文章超10000字,每個知識點都進行了詳細的講解并給出了操作實例,適合零基礎學習者。

環境準備:

在開始學習Linux命令前,我們首先需要準備好運行命令所需的環境,也就是安裝Linux操作系統。這里為了方便學習,我們將通過VMware Workstation 虛擬化軟件模擬一臺Centos 7操作系統的虛擬機,后續所有操作都將在該虛擬機上進行

安裝教程推薦:
VMware Workstation:https://blog.csdn.net/weixin_74195551/article/details/127288338
Centos 7 操作系統:https://blog.csdn.net/m0_74950751/article/details/128773027

安裝完成后,在桌面鼠標右鍵,打開終端,后續所有命令都是在終端運行的,若安裝的命令行界面,則直接輸入命令即可。
在這里插入圖片描述
在這里插入圖片描述

1、Linux文件系統

Linux 文件系統是操作系統中用于管理和組織存儲設備(如硬盤、SSD、U盤等)數據的關鍵組件。它不僅定義了文件和目錄的存儲方式,還提供了一套邏輯規則和數據結構,確保用戶和應用程序能夠高效、安全地訪問數據。

1.1 核心特點

  • 單根樹形結構:所有文件和目錄以單一的根目錄(/)為起點,形成層次化的樹狀結構,所有文件和目錄都在根目錄(/)下

  • 統一命名空間:無論物理存儲設備如何分布,所有文件和目錄都在同一邏輯路徑下訪問,也就是通過路徑符/來進行訪問,如:訪問 /data/int/log ,路徑通過 /字符進行分隔

  • 區分大小寫:文件名和路徑對大小寫敏感(例如 File.txt 和 file.txt 是兩個不同的文件)。

  • 一切皆文件:Linux 將硬件設備、進程信息、網絡接口等抽象為文件(如 /dev/sda、/proc/cpuinfo)。

  • 所有目錄均可以是掛載點 :掛載點本質就是一個目錄,只要目錄存在,未被其它文件占用,就可以作為掛載點,包括根目錄(/)都可以成為掛載點

Tips:

  1. 在Windows中所有文件和目錄都是以盤符為起點,如:C:\data,D:\image ;而在Linux中則是以根目錄(/)為起點,如:/data
  2. Linux中的目錄相當于Windows中的文件夾
  3. 文件是操作系統中數據存放的最小單位

1.2 重要目錄結構

  • /(根目錄):所有目錄和文件的起點。
  • /root:超級用戶(root)的家目錄。
  • /bin:存放系統基本命令(如 ls、cp)。
  • /etc:系統全局配置文件(如網絡配置、用戶賬戶)。
  • /home:存放普通用戶的家目錄(每個用戶獨立子目錄)。
  • /var:存放動態數據(系統服務數據、日志文件、數據庫文件、郵件等)。
  • /tmp:系統臨時文件,重啟后可能被清除。
  • /dev:設備文件(如硬盤 /dev/sda1、終端 /dev/tty)。
  • /proc和/sys:虛擬文件系統,提供內核和進程的實時信息,反映當前系統運行狀態。
  • /usr:用戶程序和數據(如應用程序、庫文件)。
  • /boot:系統啟動所需文件(內核、引導加載程序)。
  • /mnt 和 /media:臨時掛載外部設備的目錄(如U盤、光盤)。
  • /opt:第三方軟件的可選安裝位置。

1.3 文件類型


Linux 文件系統支持多種文件類型:

  1. 普通文件(Regular File):文本、二進制、圖像等數據。

  2. 目錄(Directory):包含其他文件或子目錄的容器。

  3. 符號鏈接(Symbolic Link):指向另一個文件或目錄的快捷方式。

  4. 設備文件(Device File)

    • 塊設備(Block Device):按塊訪問的設備(如硬盤)。
    • 字符設備(Character Device):按字符流訪問的設備(如鍵盤)。
  5. 管道(Pipe)和套接字(Socket):用于進程間通信。

  6. 命名管道(FIFO):類似管道,但有文件名。

1.4 文件和目錄的命名規則


1、基本規則

  1. 區分大小寫

    • 文件名和目錄名對大小寫敏感,例如 file.txt、File.txt 和 FILE.TXT 是三個不同的文件。
  2. 允許的字符

    • 可以使用字母(A-Z、a-z)、數字(0-9)、下劃線(_)、點(.)、連字符(-)等。
    • 避免特殊字符:如!@#$%^&*(){}[]|\;:'"<>?等,因為它們可能在 Shell 中有特殊含義(需用引號或轉義符)。
  3. 長度限制

    • 通常最大長度為 255 字節(UTF-8 編碼下可能少于 255 個字符)。
    • 完整路徑(含 /)的最大長度為 4096 字節(PATH_MAX 限制)。
  4. 不能以 / 命名

    • / 是路徑分隔符,不能作為文件名的一部分。


2、特殊名稱

  1. ...

    • . 表示當前目錄,.. 表示父目錄(是每個目錄默認存在的硬鏈接)。
  2. 隱藏文件或目錄

    • . 開頭的文件或目錄(如 .bashrc)默認隱藏,需用 ls -a 查看。
  3. 避免使用空格

    • 雖然允許(如 my file.txt),但空格在 Shell 中會被解析為參數分隔符,需用引號或轉義符(\)處理,如下:
      touch "my file.txt"    # 正確(使用引號包裹)
      touch my\ file.txt     # 正確(使用反斜杠轉義)
      

3、推薦寫法

  1. 使用小寫字母和下劃線

    例如 project_notes.txt,避免大小寫混用導致的混淆。

  2. 避免特殊字符和空格

    優先用 -_ 代替空格(如 backup-2023.tar.gz)。

  3. 擴展名非強制要求但有用

    Linux 不依賴擴展名識別文件類型(如 .txt、.sh 僅為約定),但推薦保留以便管理。

4、 禁止使用的名稱

  • 系統保留名稱:如 /dev/null、/proc 等路徑下的特殊文件。

  • 設備文件:避免直接命名文件為 sda、tty 等,可能與系統設備沖突。

1.5 文件與目錄的定位方式

在 Linux 中,絕對路徑和相對路徑是兩種不同的文件或目錄定位方式,它們的核心區別在于參照點不同。以下是詳細解釋和對比:

1、絕對路徑(Absolute Path)

  • 定義:從文件系統的根目錄(/)開始的完整路徑,唯一指向目標文件或目錄。

  • 特點

    • / 開頭(例如 /home/user/file.txt)。
    • 無論當前工作目錄在哪里,絕對路徑始終指向同一目標。
  • 用途

    • 腳本或配置文件中需要明確指定文件位置時(如服務配置文件路徑)
    • 跨目錄操作時避免歧義。
  • 示例:

    cat /etc/passwd       # 直接訪問根目錄下的文件
    ls /usr/local/bin     # 列出絕對路徑指向的目錄內容
    

2、相對路徑(Relative Path)

  • 定義:以當前工作目錄(pwd)為參照點的路徑,無需從根目錄開始。

  • 特點

    • 不以 / 開頭(例如 docs/report.txt)。
    • 路徑的實際含義依賴當前所在目錄。
  • 特殊符號
    . 表示當前目錄(例如 ./script.sh)。
    .. 表示父目錄(例如 ../project/file.c)。

  • 用途

    • 快速訪問當前目錄附近的文件。
    • 簡化命令行操作(減少長路徑輸入)。

2、查看目錄或文件的詳細信息(ls)

2.1 基本語法

語法:ls [選項] [文件/目錄]
ls 是 Linux 中最常用的命令之一,用于列出目錄中的文件和子目錄

注意:

  • 如果不指定目錄,默認列出當前目錄的內容。

  • 可以指定文件或目錄名,查看特定路徑下的內容。

常用選項

選項說明
-a顯示所有文件(包括隱藏文件,以 . 開頭的文件)
-l以長格式顯示詳細信息(權限、所有者、大小、修改時間等)
-h與 -l 一起使用,以人類可讀的格式顯示文件大小(如 KB、MB)
-t按修改時間排序(最新修改的在前)
-r反向排序
-S按文件大小排序(大的在前)
-R遞歸列出子目錄內容
-i顯示文件的 inode 編號
--color彩色輸出(默認啟用,目錄、文件等類型顯示不同顏色)

2.2 常用操作


1、列出當前目錄內容

ls


2、顯示所有文件(包括隱藏文件)

ls -a


3、以長格式顯示詳細信息

ls -l

輸出示例:

-rw-r--r-- 1 user group  1024 Jan 10 10:00 file.txt   # 文件
drwxr-xr-x 2 user group  4096 Jan 11 11:00 dir   # 目錄

信息說明:

  • 第一列:文件類型和權限(- 表示文件,d 表示目錄)。

  • 第二列:硬鏈接數。

  • 第三列:所有者。

  • 第四列:所屬組。

  • 第五列:文件大小(默認字節)。

  • 第六列:最后修改時間。

  • 第七列:文件名。

4、組合選項(如 -lh 顯示易讀的文件大小)

ls -lh

輸出大小會顯示為 1.0K、2.5M 等格式。

5、按時間排序(最新修改的在前)

ls -lt


6、遞歸列出子目錄內容

ls -R


7、顯示文件的 inode 編號

ls -i


8、列出指定目錄的內容

ls /path/to/directory


9、反向排序

ls -lr


10、按文件大小排序(大的在前)

ls -lS

2.3 高級用法


1、過濾顯示特定文件(結合通配符)

ls *.txt       # 列出所有 .txt 文件
ls file[1-3].* # 列出 file1.txt, file2.log 等


2、忽略某些文件(需搭配 --ignore)

ls --ignore='*.log'  # 不顯示 .log 文件


3、自定義時間顯示格式(需搭配 --time-style)

ls -l --time-style="+%Y-%m-%d %H:%M:%S"


注意事項:

  1. 如果文件名包含空格或特殊字符,需要用引號包裹:

    ls "my file.txt"
    
  2. 默認情況下,ls 輸出的顏色可能因系統配置而異。如果顏色不顯示,可以強制啟用:

    ls --color=auto
    

通過靈活組合選項,ls 可以滿足大部分文件列表需求。如需更多幫助,可以通過 man ls 查看完整手冊。

3、切換目錄(cd)

語法:cd [選項] [目錄路徑]
在Linux中,cd(Change Directory)命令用于切換當前工作目錄。它是日常操作中最基礎且頻繁使用的命令之一。

3.1 常用操作


1、切換到指定目錄

  • 使用絕對路徑進行切換:

    cd /usr/local  # 進入/usr/local目錄
    
  • 使用相對路徑進行切換,假設當前目錄是/home/user:

    cd Downloads      # 進入/home/user/Downloads
    cd ./Documents    # ./表示當前目錄(可省略)
    

2、返回家目錄

cd          # 直接輸入cd,不加參數,默認切換為家目錄
cd ~        # ~代表用戶的家目錄
cd $HOME    # 使用環境變量$HOME


3、返回上一級目錄

cd ..       # 兩個點表示上一級目錄


4、返回上兩級目錄

cd ../..    # 每多一個..就再往上一級


5、切換到上一個工作目錄

cd -        # 在最近使用的兩個目錄之間快速切換


6、切換到帶有空格或特殊字符的目錄

  • 用引號包裹路徑或使用轉義符:

    cd "My Documents"   # 路徑包含空格
    cd My\ Documents    # 使用反斜杠轉義空格
    

7、常見問題解決

  1. 目錄不存在時
    如果路徑錯誤或目錄不存在,會提示:

    bash: cd: no such file or directory 	# 檢查路徑拼寫或先用ls確認目錄是否存在。
    
  2. 權限不足
    若目錄無執行權限(x),會提示:

    bash: cd: permission denied   # 用ls -l查看權限,并通過chmod或sudo解決。
    

3.2 擴展:顯示當前工作目錄(pwd)


假如當前工作目錄為: /path/data

pwd    # 輸入命令后顯示: /path/data

4、查看、合并文件(cat)

cat 是 Linux 中一個常用的命令,用于查看、合并或創建文件。它的名稱來源于 concatenate(連接),但它的功能不僅限于文件連接。

1、常用方法使用示例:

  1. 查看文件內容

    cat filename
    
    • 這會顯示 filename文件 的全部內容到終端。
    • 示例:
      cat /etc/os-release  # 查看系統信息文件
      
  2. 查看多個文件

    cat file1 file2
    
    • 依次顯示 file1file2 的內容。
    • 示例:
      cat notes.txt backup.txt
      
  3. 合并文件內容并輸出到新文件

    cat file1 file2 > merged_file
    
    • file1file2 的內容合并后寫入 merged_file(會覆蓋目標文件)。
    • 示例:
      cat part1.txt part2.txt > complete.txt
      
  4. 追加內容到文件

    cat file1 >> file2
    
    • file1 的內容追加到 file2 的末尾(不會覆蓋 file2)。
    • 示例:
      cat log.txt >> archive.log
      
  5. 創建新文件(或編輯小文件)

    cat > newfile.txt
    
    • 從鍵盤輸入內容,按 Ctrl+d 保存到 newfile.txt(會覆蓋已有文件)。

    • 示例:

      cat > greeting.txt
      Hello World!  # 輸入內容
      Ctrl+d        # 保存并退出
      
  6. 顯示行號

    cat -n filename
    
    • 顯示文件內容并加上行號(包括空行)。
    • 示例:
      cat -n /etc/hosts
      
  7. 顯示非空行的行號

    cat -b filename
    
    • 只對非空行編號(類似 -n,但忽略空行)。
    • 示例:
      cat -b script.sh
      
  8. 顯示特殊字符(如制表符、換行符等)

    cat -A filename
    
    • ^I 表示制表符(Tab),$ 表示行尾。
    • 示例:
      cat -A /etc/profile
      
  9. 避免輸出中的多行空行

    cat -s filename
    
    • 將連續的空行壓縮為一行。
    • 示例:
      cat -s logfile.txt
      
  10. 與其他命令結合使用

    • 通過管道(|)cat 輸出傳遞給其他命令:
      cat file.txt | grep "keyword"  # 搜索文件中的關鍵詞
      cat file.txt | less           # 分頁查看內容
      

2、注意事項

  1. 大文件警告: cat 會一次性輸出整個文件,如果文件很大(如日志文件),建議用 lessmore 分頁查看:

    less hugefile.log
    
  2. 文件覆蓋風險: > 會覆蓋目標文件,使用前請確認。

總結:
cat 的核心功能是快速查看、合并或創建小文件。對于復雜操作(如編輯、分頁),建議結合其他工具(如 less、vim 或 grep)。

5、復制文件或目錄(cp)


1、基礎語法

cp 是 Linux 中用于復制文件或目錄的基本命令,語法如下:

cp [選項] 源文件 目標文件
cp [選項] 源文件... 目標目錄


2、基本用法

  • 復制文件到目標文件(重命名):

    cp file1.txt file2.txt  # 將 file1.txt 復制為 file2.txt
    
  • 復制文件到目錄:

    cp file1.txt /path/to/directory/  # 將 file1.txt 復制到指定目錄
    
  • 復制多個文件到目錄:

    cp file1.txt file2.txt /path/to/directory/  # 復制多個文件到目錄
    

2、常用選項

選項說明
-r 或 -R遞歸復制目錄(用于復制文件夾)
-i覆蓋前提示確認(交互模式)
-f強制覆蓋,不提示(慎用)
-v顯示復制過程的詳細信息
-u僅當源文件比目標文件新時復制(更新)
-p保留原文件的屬性(權限、時間戳等)
-a歸檔模式(相當于 -rp,保留所有屬性)


3、常用方法使用示例

  • 遞歸復制目錄:

    cp -r dir1/ dir2/  # 將 dir1 目錄及其內容復制到 dir2
    
  • 交互式復制(覆蓋前詢問):

    cp -i file1.txt /path/to/directory/
    
  • 保留文件屬性:

    cp -p file1.txt /backup/  # 保留權限、時間戳等
    
  • 僅更新新文件:

    cp -u *.txt /backup/  # 僅將目標目錄中沒有的文件復制進去
    

4、注意事項

  • 如果目標文件已存在,cp 會默認覆蓋(除非使用 -i 選項)。

  • 復制目錄時必須加 -r-a

  • 使用 -a 可以完整保留文件屬性(適合備份)。

5、高級用法

  • 通配符復制:

    cp *.jpg /path/to/images/  # 復制所有 .jpg 文件
    
  • 復制到當前目錄:

    cp /path/to/file1.txt .  # 目標 `.` 表示當前目錄
    

示例完整命令:

cp -av source_dir/ backup_dir/  # 遞歸復制并保留所有屬性,顯示詳細信息

通過靈活組合選項,可以滿足不同場景的復制需求。

6、移動或重命名文件/目錄(mv)


1、基本語法

mv 命令是 Linux 中用于移動或重命名文件/目錄的基本命令,其名稱來源于 “move”。語法如下:

mv [選項] 源文件或目錄 目標文件或目錄

常用選項:

選項作用
-i覆蓋前提示確認
-n禁止覆蓋已存在文件
-f強制覆蓋,不提示
-v顯示操作詳情
-u僅在源文件比目標新時移動


2、常用方法使用實例

  1. 移動文件/目錄

    mv file.txt /path/to/destination/  # 將文件移動到目標目錄
    mv dir1 /path/to/destination/     # 將目錄移動到目標目錄
    
  2. 重命名文件/目錄

    mv oldname.txt newname.txt       # 重命名文件
    mv olddir newdir                 # 重命名目錄
    
  3. 移動多個文件到目錄

    mv file1.txt file2.txt /target/dir/  # 移動多個文件到目標目錄
    
  4. 覆蓋文件時的提示

    • 默認情況下,mv 會直接覆蓋已存在的目標文件。

    • 使用 -i(交互模式)會在覆蓋前提示確認:

      mv -i file.txt existing_file.txt
      
  5. 禁止覆蓋(安全模式)

    mv -n file.txt existing_file.txt  # 如果目標存在,則不移動
    
  6. 強制覆蓋(忽略提示)

    mv -f file.txt /target/  # 強制覆蓋,不詢問
    
  7. 顯示詳細操作(調試)

    mv -v file.txt /target/  # 顯示移動的詳細信息
    

3、注意事項

  1. 權限問題:需要有對源文件的讀取權限和目標目錄的寫入權限。

  2. 跨設備移動:如果目標在另一設備(如U盤),mv 實際是復制+刪除,速度較慢。

  3. 符號鏈接:移動符號鏈接時,默認移動鏈接本身(而非指向的文件)。

通過靈活組合選項和參數,mv 可以高效管理文件位置和名稱。使用前建議用 ls 確認路徑,避免誤操作。

7、創建文件或目錄

7.1 創建文件(touch)


1、基本語法

在 Linux 中,touch 命令主要用于創建空文件或更新文件的時間戳(訪問時間和修改時間)。語法格式如下:

touch [選項] 文件名...

常用選項:

選項說明
-a僅更新訪問時間(atime)
-m僅更新修改時間(mtime)
-c不創建新文件(若文件不存在)
-t指定時間戳(格式:[[CC]YY]MMDDhhmm[.ss])
-r使用參考文件的時間戳
-d使用字符串描述時間(如 touch -d “2024-01-01” file.txt)


2、常用方法使用示例

  1. 創建一個空文件

    touch file.txt
    

    如果 file.txt 不存在,則會創建一個空文件;如果已存在,則會更新其時間戳(默認為當前時間)。

  2. 同時創建多個文件

    touch file1.txt file2.txt file3.txt
    
  3. 強制不創建新文件(僅更新時間戳)

    touch -c non_existent_file.txt
    

    如果文件不存在,-c(或 --no-create)選項會避免創建新文件。

  4. 指定時間戳(而非當前時間)

    touch -t 202401011200 file.txt
    

    -t 后接時間格式:[[CC]YY]MMDDhhmm[.ss](例如:202401011200 表示 2024 年 1 月 1 日 12:00:00)。

  5. 使用參考文件的時間戳

    touch -r reference_file.txt target_file.txt
    

    -r(或 --reference)將 target_file.txt 的時間戳設置為與 reference_file.txt 相同。

  6. 僅更新訪問時間(atime)或修改時間(mtime)

    touch -a file.txt      # 只更新訪問時間
    touch -m file.txt      # 只更新修改時間
    

3、注意事項

  • 如果文件名包含空格或特殊字符,需用引號包裹:

    touch "my file.txt"
    
  • 需要權限:對目標目錄有寫入權限才能創建文件。

通過靈活組合選項,touch 可以高效管理文件的時間戳或快速創建空文件。

7.2 創建目錄(mkdir)


1、基本語法

mkdir 是 Linux 中用于創建目錄(文件夾)的命令,語法格式如下:

mkdir [選項] 目錄名

常用選項:

選項作用
-p遞歸創建多級目錄
-m設置權限(如 755、644)
-v顯示操作詳情

2、常用方法使用示例

  1. 創建單個目錄

    mkdir dir1
    

    會在當前目錄下創建名為 dir1 的文件夾。

  2. 同時創建多個目錄

    mkdir dir1 dir2 dir3
    

    一次性創建多個同級目錄。

  3. 創建嵌套目錄(遞歸創建)

    mkdir -p parent/child/grandchild
    

    -p 選項會自動創建路徑中所有不存在的父目錄。

  4. 設置目錄權限(創建時指定權限)

    mkdir -m 755 mydir
    

    -m 選項直接設置目錄權限(此處 755 表示所有者可讀/寫/執行,其他用戶可讀/執行)。

  5. 顯示創建過程(verbose 模式)

    mkdir -v dir1 dir2
    

    -v 選項會輸出每個目錄的創建信息。

3、常見問題解決

  • 目錄已存在時報錯:
    使用 -p 選項可忽略此錯誤(不會覆蓋原有目錄)。

  • 權限不足:
    確保對目標路徑有寫入權限,或用 sudo 提權:

    sudo mkdir /protected_path/newdir
    

8、刪除文件或目錄

8.1 rm 命令的使用

rm 是 Linux 中用于刪除文件或目錄的命令,使用時需謹慎,因為刪除后通常無法恢復。


1、基本語法

rm [選項] 文件或目錄名

常用選項:

選項作用
-f強制刪除(忽略不存在的文件,不提示確認)
-i刪除前逐一詢問確認(交互式)
-r 或 -R遞歸刪除目錄及其內容(用于刪除目錄)
-v顯示刪除的詳細過程
--help查看幫助信息
--version顯示版本信息


2、常用方法使用示例

  1. 刪除單個文件

    rm file.txt
    
  2. 強制刪除文件(無警告)

    rm -f file.txt
    
  3. 交互式刪除(逐個確認)

    rm -i file1.txt file2.txt
    
  4. 刪除目錄(遞歸刪除)

    rm -r mydir/
    
  5. 強制遞歸刪除目錄(慎用!)

    rm -rf mydir/
    
  6. *刪除多個文件(通配符

    rm *.log   # 刪除所有 .log 文件
    
  7. 顯示刪除過程(verbose)

    rm -v old_*
    

3、危險操作警告

  • rm -rf /rm -rf /*
    這會強制刪除根目錄下的所有文件(系統毀滅性操作!),現代系統通常會有保護機制,但仍需絕對避免。

  • 無備份刪除重要數據
    建議先使用 mv 命令將文件移到臨時目錄,確認無影響后再徹底刪除。

4、注意事項

  1. 權限問題: 刪除文件需對所在目錄有寫權限。

  2. 隱藏文件: 通配符 * 不匹配以 . 開頭的隱藏文件,需顯式指定(如 rm -r .* 需謹慎)。

建議在使用 rm -r 前先用 ls 確認目標文件/目錄,避免誤刪。

8.2 rmdir 命令的使用

rmdir 是 Linux 中用于刪除空目錄的命令

1、基本語法

rmdir [選項] 目錄名

常用選項:

選項描述
-p遞歸刪除父目錄(如果它們為空)。
--ignore-fail-on-non-empty忽略因目錄非空導致的錯誤(不報錯,但仍不會刪除)。
-v顯示操作詳情(verbose 模式)。


2、常用方法使用示例:

  1. 刪除單個空目錄

    rmdir mydir
    

    僅當 mydir 為空時才會刪除。

  2. 遞歸刪除空目錄
    若目錄結構為 parent/child,且兩者均為空:

    rmdir -p parent/child
    

    會先刪除 child,再刪除 parent(如果父目錄也變為空)。

  3. 忽略非空目錄的錯誤

    rmdir --ignore-fail-on-non-empty mydir
    

    如果 mydir 非空,命令會靜默退出,不會報錯。

  4. 顯示操作詳情

    rmdir -v mydir
    

    輸出:rmdir: removing directory 'mydir'

3、注意事項

  1. 僅能刪除空目錄
    如果目錄中有文件或其他子目錄,rmdir 會報錯:

    rmdir: failed to remove 'mydir': Directory not empty
    

    此時需用 rm -r 目錄名 強制遞歸刪除(謹慎使用!)。

  2. 路徑中的父目錄必須存在
    例如 rmdir a/b/c 要求 a/b 存在,否則會報錯。

  3. rm -r 的區別

    • rmdir:安全,只刪空目錄。

    • rm -r:危險,遞歸刪除目錄及所有內容(無確認提示!)。

4、適用場景

  • 在腳本中安全刪除空目錄(避免誤刪數據)。

  • 清理空的日志或臨時目錄結構。

如果需要刪除非空目錄,請改用:

rm -r 目錄名  # 謹慎操作!數據不可恢復!

9、檢測文件類型(file)

file命令是 Linux 中用于檢測文件類型的實用工具,它會根據文件內容(而非文件擴展名)判斷文件類型。

1、基本語法

file [選項] 文件名

常用選項:

選項作用
-b簡潔輸出(不顯示文件名)
-i輸出 MIME 類型
-L跟隨軟鏈接
-f <文件>從文件中讀取待檢測的文件名列表
-k不停止在第一個匹配結果(繼續檢測更多可能類型)
-z嘗試檢測壓縮文件內部內容


2、常用方法使用示例

  1. 檢測單個文件類型

    file /bin/ls
    

    輸出示例:

    /bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, stripped
    
  2. 檢測多個文件類型

    file file1.txt file2.jpg
    
  3. 檢測目錄下所有文件類型

    file *
    
  4. 顯示更詳細的輸出(-i 選項)

    輸出文件的 MIME 類型:

    file -i filename
    

    示例輸出:

    filename: text/plain; charset=utf-8
    
  5. 不壓縮軟鏈接(-L 選項)
    直接檢測鏈接指向的文件類型:

    file -L /path/to/symlink
    
  6. 從標準輸入讀取文件(-f 選項)
    通過列表文件批量檢測:

    file -f file_list.txt  # file_list.txt文件中存放著要檢測的文件名,一行一個文件名
    

3、高級用法

  • 檢測壓縮文件內容:

    file -z backup.tar.gz
    
  • 僅輸出匹配的文本描述(結合 grep):

    file * | grep "text"
    

4、原理說明

file 命令通過以下步驟判斷文件類型:

  1. 檢查文件的 magic number(如 ELF 頭PNG 頭等)。

  2. 若無特殊標識,則分析文件內容(如文本編碼、可讀字符比例等)。

  3. 結合 /usr/share/misc/magic/etc/magic 中的規則庫進行匹配。

通過靈活使用 file 命令,你可以快速識別未知文件的類型,尤其在處理無擴展名文件時非常有用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/80478.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/80478.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/80478.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在線caj轉換word

CAJ格式是中國知網特有的一種文獻格式&#xff0c;在學術研究等領域廣泛使用&#xff0c;但有時我們需要將其轉換為Word格式&#xff0c;方便編輯、引用文獻。本文分享如何輕松將CAJ轉換為word的轉換工具&#xff0c;提高閱讀和辦公效率。 如何將CAJ轉換WORD? 1、使用CAJ轉換…

【現代深度學習技術】注意力機制05:多頭注意力

【作者主頁】Francek Chen 【專欄介紹】 ? ? ?PyTorch深度學習 ? ? ? 深度學習 (DL, Deep Learning) 特指基于深層神經網絡模型和方法的機器學習。它是在統計機器學習、人工神經網絡等算法模型基礎上&#xff0c;結合當代大數據和大算力的發展而發展出來的。深度學習最重…

SpringBoot 集成滑塊驗證碼AJ-Captcha行為驗證碼 Redis分布式 接口限流 防爬蟲

介紹 滑塊驗證碼比傳統的字符驗證碼更加直觀和用戶友好&#xff0c;能夠很好防止爬蟲獲取數據。 AJ-Captcha行為驗證碼&#xff0c;包含滑動拼圖、文字點選兩種方式&#xff0c;UI支持彈出和嵌入兩種方式。后端提供Java實現&#xff0c;前端提供了php、angular、html、vue、u…

邊緣網關(邊緣計算)

邊緣網關是邊緣計算架構中的關鍵組件&#xff0c;充當連接終端設備&#xff08;如傳感器、IoT設備&#xff09;與云端或核心網絡的橋梁。它在數據源頭附近進行實時處理、分析和過濾&#xff0c;顯著提升效率并降低延遲。 核心功能 協議轉換 ○ 支持多種通信協議&#xff08;如…

OpenCV定位地板上的書

任務目標是將下面的圖片中的書本找出來&#xff1a; 使用到的技術包括&#xff1a;轉灰度圖、提取顏色分量、二值化、形態學、輪廓提取等。 我們嘗試先把圖片轉為灰度圖&#xff0c;然后二值化&#xff0c;看看效果&#xff1a; 可以看到&#xff0c;二值化后&#xff0c;書的…

機器學習第一講:機器學習本質:讓機器通過數據自動尋找規律

機器學習第一講&#xff1a;機器學習本質&#xff1a;讓機器通過數據自動尋找規律 資料取自《零基礎學機器學習》。 查看總目錄&#xff1a;學習大綱 關于DeepSeek本地部署指南可以看下我之前寫的文章&#xff1a;DeepSeek R1本地與線上滿血版部署&#xff1a;超詳細手把手指…

修改圖像分辨率

在這個教程中&#xff0c;您將學習如何使用Python和深度學習技術來調整圖像的分辨率。我們將從基礎的圖像處理技術開始&#xff0c;逐步深入到使用預訓練的深度學習模型進行圖像超分辨率處理。 一、常規修改方法 1. 安裝Pillow庫 首先&#xff0c;你需要確保你的Python環境中…

jsAPI

環境準備 1 安裝nvm nvm 即 (node version manager)&#xff0c;好處是方便切換 node.js 版本 安裝注意事項 要卸載掉現有的 nodejs提示選擇 nvm 和 nodejs 目錄時&#xff0c;一定要避免目錄中出現空格選用【以管理員身份運行】cmd 程序來執行 nvm 命令首次運行前設置好國…

SCDN是什么?

SCDN是安全內容分發網絡的簡稱&#xff0c;它在傳統內容分發網絡&#xff08;CDN&#xff09;的基礎上&#xff0c;集成了安全防護能力&#xff0c;旨在同時提升內容傳輸速度和網絡安全性。 SCDN的核心功能有&#xff1a; DDoS防御&#xff1a;識別并抵御大規模分布式拒絕服務…

Qt/C++開發監控GB28181系統/實時視頻預覽/視頻點播/rtp解包解碼顯示

一、前言 通過gb28181做實時視頻預覽&#xff0c;也就是視頻點播功能&#xff0c;是最重要的功能了&#xff0c;絕對是整個系統排第一重要的&#xff0c;這就是核心功能&#xff0c;什么設備注冊、獲取通道等都是為了實時預覽做準備的&#xff0c;當然這個功能也是最難的&…

找銀子 題解(c++)

題目 思路 首先&#xff0c;這道題乍一看&#xff0c;應該可以用搜索來做。 但是&#xff0c;搜索會不會超時間限制呢&#xff1f; 為了防止時間超限,我們可以換一種做法。 先創立兩個二維數組&#xff0c;一個是輸入的數組a&#xff0c;一個是數組b。 假設 i 行 j 列的數…

子集樹算法文檔

1.算法概述 子集樹是一種 回溯算法&#xff0c;用于生成一個集合的所有子集。給定一個數組 arr&#xff0c;該算法遞歸地遍歷所有可能的子集&#xff0c;并通過一個輔助數組 x 標記當前元素是否被選中。 2.算法特點 時間復雜度&#xff1a;O(2n)&#xff08;因為一個包含 n 個…

HTTP/1.1 host虛擬主機詳解

一、核心需求&#xff1a;為什么需要虛擬主機&#xff1f; 在互聯網上&#xff0c;我們常常希望在一臺物理服務器&#xff08;它通常只有一個公網 IP 地址&#xff09;上運行多個獨立的網站&#xff0c;每個網站都有自己獨特的域名&#xff08;例如 www.a-site.com?, www.b-s…

amass:深入攻擊面映射和資產發現工具!全參數詳細教程!Kali Linux教程!

簡介 OWASP Amass 項目使用開源信息收集和主動偵察技術執行攻擊面網絡映射和外部資產發現。 此軟件包包含一個工具&#xff0c;可幫助信息安全專業人員使用開源信息收集和主動偵察技術執行攻擊面網絡映射并執行外部資產發現。 使用的信息收集技術 技術數據來源APIs&#xf…

Spring Web MVC響應

返回靜態頁面 第一步 創建html時&#xff0c;要注意創建的路徑&#xff0c;要在static下面 第二步 把需要寫的內容寫到body內 第三步 直接訪問路徑就可以 返回數據ResponseBody RestController Controller ResponseBody Controller&#xff1a;返回視圖 ResponseBody&…

?鴻蒙PC正式發布:國產操作系統實現全場景生態突破

鴻蒙PC正式發布&#xff1a;國產操作系統實現全場景生態突破? 2025年5月8日&#xff0c;華為在深圳舉辦發布會&#xff0c;正式推出搭載鴻蒙操作系統的個人電腦&#xff08;PC&#xff09;&#xff0c;標志著國產操作系統在核心技術與生態布局上實現歷史性跨越。此次發布的鴻蒙…

【計算機視覺】OpenCV實戰項目:Text-Extraction-Table-Image:基于OpenCV與OCR的表格圖像文本提取系統深度解析

Text-Extraction-Table-Image&#xff1a;基于OpenCV與OCR的表格圖像文本提取系統深度解析 1. 項目概述2. 技術原理與算法設計2.1 圖像預處理流水線2.2 表格結構檢測算法2.3 OCR優化策略 3. 實戰部署指南3.1 環境配置3.2 核心代碼解析3.3 執行流程示例 4. 常見問題與解決方案4.…

Redis BigKey 問題是什么

BigKey 問題是什么 BigKey 的具體表現是 redis 中的 key 對應的 value 很大&#xff0c;占用的 redis 空間比較大&#xff0c;本質上是大 value 問題。 BigKey怎么找 redis-cli --bigkeysscanBig Key 產生的原因 1.redis數據結構使用不恰當 2.未及時清理垃圾數據 3.對業務預…

go-gin

前置 gin是go的一個web框架&#xff0c;我們簡單介紹一下gin的使用 導入gin &#xff1a;"github.com/gin-gonic/gin" 我們使用import導入gin的包 簡單示例&#xff1a; package mainimport ("github.com/gin-gonic/gin" )func main() {r : gin.Default(…

C# NX二次開發:判斷兩個體是否干涉和獲取系統日志的UFUN函數

大家好&#xff0c;今天要講關于如何判斷兩個體是否干涉和獲取系統日志的UFUN函數。 &#xff08;1&#xff09;UF_MODL_check_interference&#xff1a;這個函數的定義為根據單個目標體檢查每個指定的工具體是否有干擾。 Defined in: uf_modl.h Overview Checks each sp…