Linux基礎(五)——文件管理

一、文件系統

文件系統特徵

* 文件和目錄被組織成一個單根倒置樹結構
* 文件系統從根目錄下開始,用“/” 表示
* 根文件系統(rootfs): root filesystem
* 文件名稱:區分大小寫
* 以.開頭的文件爲隱藏文件
* 路徑分隔的 /
* 文件有兩類數據:
* 
    * 元數據: metadata
    * 數據: data

* 

 元數據內容包括

    * 
        * 文件名
        * 文件大小
        * 文件所在數據塊
        * 數據塊的大小
        * 文件類型
        * 文件所在的Inode
        * 硬鏈接次數
        * 權限
        * 屬主id
        * 屬組id
        * 最近一次訪問時間戳
        * 最近一次更改文件內容的時間戳
        * 最近一次更改文件元數據的時間戳

* 

* 文件系統分層結構: LSB(Linux Standard Base)
  FHS: (Filesystem Hierarchy Standard)
  http://www.pathname.com/fhs/

文件命名規則

* 文件名最長255個字節
* 包括路徑在內文件名稱最長4095個字節
* 在系統中默認顯示:
藍色-->目錄 
綠色-->可執行文件 
紅色-->壓縮文件
淺藍色-->鏈接文件
灰色-->其他文件

* 除了 斜槓和NUL,所有字符都有效.但使用特殊字符的目錄名和文件不推薦使用,某些字符需要用引號來引用
* 標準Linux文件系統(如ext4),文件名稱大小寫敏感
例如: MAIL, Mail, mail, mAiL

注:大小寫敏感與否與文件系統格式有關,如windows系統掛載到Linux中,大小寫不敏感

二、目錄結構

* /boot:引導文件存放目錄,內核文件(vmlinuz)、引導加載器(bootloader, grub)都存放於此目錄
* /bin:所有用戶使用的基本命令;不能關聯至獨立分區, OS啓動即會用到的程序(另:該“目錄”是一個鏈接文件,鏈接至/usr/bin)

* /sbin:管理類的基本命令;不能關聯至獨立分區, OS啓動即會用到的程序(另:該“目錄”是一個鏈接文件,鏈接至/usr/sbin)

* /lib:啓動時程序依賴的基本共享庫文件以及內核模塊文件(/lib/modules)
* /lib64:專用於x86_64系統上的輔助共享庫文件存放位置
* /etc:配置文件目錄
* /home/USERNAME:普通用戶家目錄
* /root:管理員的家目錄
* /media:便攜式移動設備掛載點
* /mnt:臨時文件系統掛載點
* /dev:設備文件及特殊文件存儲位置
* 
    * b: block device,隨機訪問
    * c: character device,線性訪問

* /opt:第三方應用程序的安裝位置
* /srv:系統上運行的服務用到的數據
* /tmp:臨時文件存儲位置
* /usr: universal shared, read-only data
* 
    * bin: 保證系統擁有完整功能而提供的應用程序,參考/bin
    * sbin: 參考/sbin
    * tmp: 

    * lib: 32位使用
    * lib64:只存在64位系統
    * include: C程序的頭文件(header files)
    * share:結構化獨立的數據,例如doc, man等
    * local:第三方應用程序的安裝位置
    * 
        * bin, sbin, lib, lib64, etc, share

* /var: variable data files
* 
    * cache: 應用程序緩存數據目錄
    * lib: 應用程序狀態信息數據
    * local:專用於爲/usr/local下的應用程序存儲可變數據;
    * lock: 鎖文件
    * log: 日誌目錄及文件
    * opt: 專用於爲/opt下的應用程序存儲可變數據;
    * run: 運行中的進程相關數據,通常用於存儲進程pid文件
    * spool: 應用程序數據池
    * tmp: 保存系統兩次重啓之間產生的臨時數據

* /proc: 用於輸出內核與進程信息相關的虛擬文件系統
* /sys:用於輸出當前系統上硬件設備相關信息虛擬文件系統
* /selinux(security enhanced Linux): selinux相關的安全策略等信息的存儲位置

三、Linux文件類型

* - 普通文件
* d 目錄文件
* b 塊設備
* c 字符設備
* l 符號鏈接文件
* p 管道文件pipe
* s 套接字文件socket

四、絕對路徑及相對路徑

絕對路徑

* 以正斜槓開始
* 完整的文件位置路徑
* 可用於指定任何一個文件名

相對路徑

* 不以斜線開始
* 指定相對於當前工作目錄或某目錄的位置
* 可以作爲一個簡短的形式指定一個文件名

五、文件通配符

  • 匹配零個或多個字符
    ? 匹配任何單個字符
    ~ 當前用戶家目錄
    ~username 用戶家目錄
    ~+ 當前工作目錄
    ~- 前一個工作目錄
    [0-9] 匹配數字範圍
    [a-z] 字母
    [A-Z] 字母
    [wang] 匹配列表中的任何的一個字符
    [^wang] 匹配列表中的所有字符以外的字符

    預定義的字符類:
    可以使用命令查看:man 7 glob
    [:digit:]:任意數字,相當於0-9
    [:lower:]:任意小寫字母
    [:alnum:]:任意數字或字母
    [:blank:]:水平空白字符
    [:space:]:水平或垂直空白字符
    [:punct:]:標點符號
    [:print:]:可打印字符
    [:cntrl:]:控制(非打印)字符
    [:graph:]:圖形字符
    [:xdigit:]:十六進制字符

六、文件管理相關命令

pwd(print working directory):列出當前工作目錄

相關變量:
PWD:當前目錄路徑
OLDPWD:前一次目錄路徑

basename:獲取文件基名

dirname:獲取文件路徑名

cd:切換目錄
.. 切換至上一層目錄(父目錄)

~ 切換至當前用戶家目錄(只用cd也可切換至用戶家目錄)

  • 切換至前上次所在目錄

ls:列出當前路徑下內容
-a 包含隱藏文件

-l 顯示額外的信息(= ll)

-R 目錄遞歸顯示

-ld 目錄和符號鏈接信息

-1 文件分行顯示

–S 按從大到小排序

–t 按mtime(內容修改時間)排序

–u 配合-t選項,顯示並按atime(文件訪問時間)從新到舊排序

–U 按目錄存放順序顯示

–X 按文件後綴排序

stat:display file or file system status(顯示文件及文件系統狀態)

touch:change file timestamps(修改文件時間戳,創建新文本文件)
-c:如果文件不存在,不創建文件;如果存在則更新時間戳

      -a:change only the access time(只更改訪問時間)

      -m:change only the modification time(只更改內容時間)

      注:無論使用 -a or -m ,Change time都會跟着變化

      -t STAMP:指定atime 和 mtime時間戳
           use [[CC]YY]MMDDhhmm[.ss] instead of current time

cp:copy files and directories(複製文件及目錄)
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
cp SRC DEST

      -a:--archive,same as -dR --preserve=all(做備份時使用)

      -u:--update,只複製發生改變及新增的文件及目錄(包含其下內容),個人理解爲“增量備份”

      -i:交互式複製,覆蓋前提示(默認情況下,cp被系統alias爲cp -i)
      -n:不覆蓋,與-i連用,使用時注意兩者順序(-i -n)

-r = -R:遞歸複製目錄及內部的所有內容

      -d: --no-dereference --preserv=links 不復制原文件,只複製鏈接名
      --preserv[=ATTR_LIST]

mode: 權限
ownership: 屬主屬組
timestamp:
links
xattr
context
all

      -p: 等同--preserv=mode,ownership,timestamp

      -v: --verbose

      -f: --force,強制複製

      -b: 目標存在,覆蓋前先備份
      --backup=numbered 目標存在,覆蓋前先備份加數字後綴

mv:移動( 重命名)文件(目錄)
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...

      基本參數用法,參考cp命令

-i: 交互式
-f: 強制移動
-b: 目標存在,覆蓋前先備份

rm
rm [OPTION]... FILE...

      基本參數用法,參考cp命令

-i 交互式
-f 強制刪除
-r 遞歸;
rm -r 遞歸刪除目錄樹
--no-preserve-root 刪除 / 目錄

tree:顯示目錄樹
-d: 只顯示目錄
-L level:指定顯示的層級數目
-P pattern: 只顯示由指定pattern匹配到的路徑

mkdir:創建目錄
-p: 存在也不報錯,且可自動創建所需的各目錄
-v: 顯示詳細信息
-m MODE: 創建目錄時直接指定權限

rmdir:刪除空目錄
-p: 遞歸刪除父空目錄

-v: 顯示詳細信息

file:determine file type(確定文件類型)

ln:創建鏈接文件
硬鏈接:一個文件分配多個名字
ln source dest

1. 創建硬鏈接會增加額外的記錄項以引用文件
2. 對應於同一文件系統上一個物理文件
3. 每個文件引用相同的inode號
4. 不能跨越驅動器或分區
5. 鏈接數:

創建時鏈接數遞增
刪除文件時:rm命令遞減計數的鏈接
文件要存在,至少有一個鏈接數
當鏈接數爲零時,該文件被刪除

 軟鏈接:相當於Windows下的快捷方式
      ln -s source dest

1. 一個符號鏈接指向另一個文件
2. ls - l 可以顯示鏈接的名稱和引用的文件
3. 一個符號鏈接的內容是它引用文件的名稱
4. 可以對目錄進行軟鏈接
5. 可以跨分區進行軟鏈接
6. 指向的是另一個文件的路徑;
7. 其大小爲指向的路徑字符串的長度;
8. 不增加或減少目標文件inode的引用計數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章