1. 程式人生 > >linux運維基礎文件管理

linux運維基礎文件管理

切換 time 描述 username 文件系統 圖片 標準輸出 字節 ech

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

  • 1文件名規則
    文件名最長255個字節
    包括路徑在內文件名稱最長4095個字節
    藍色-->目錄?? 綠色-->可執行文件??? 紅色-->壓縮文件?? 淺藍色-->鏈接文件? 灰色-->其他文件

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

  • 2文件系統結構
    /boot:引導文件存放目錄,內核文件(vmlinuz)、引導加載器(bootloader, grub)都存放於此目錄
    /bin:供所有用戶使用的基本命令;不能關聯至獨立分區,OS啟動即會用到的程序
    /sbin:管理類的基本命令;不能關聯至獨立分區,OS啟動即會用到的程序
    /lib:啟動時程序依賴的基本共享庫文件以及內核模塊文件(/lib/modules)
    /lib64:專用於x86_64系統上的輔助共享庫文件存放位置

    /etc:配置文件目錄
    /home/USERNAME:普通用戶家目錄
    /root:管理員的家目錄
    /media:便攜式移動設備掛載點
    /mnt:臨時文件系統掛載點
    /dev:設備文件及特殊文件存儲位置
    /opt:第三方應用程序的安裝位置
    /srv:系統上運行的服務用到的數據
    /tmp:臨時文件存儲位置
    /usr: universal shared, read-only data
    /var: variable data files
    /proc: 用於輸出內核與進程信息相關的虛擬文件系統
    /sys:用於輸出當前系統上硬件設備相關信息虛擬文件系統
    /selinux: security enhanced Linux,selinux相關的安全策略等信息的存儲位置
    技術分享圖片技術分享圖片
    技術分享圖片

  • 3Linux上的應用程序的組成部分
    二進制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
    庫文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
    配置文件:/etc, /etc/DIRECTORY, /usr/local/etc
    幫助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc
  • 1.4 Linux下的文件類型
    -:普通文件
    d: 目錄文件
    b: 塊設備
    c: 字符設備
    l: 符號鏈接文件
    p: 管道文件pipe
    s: 套接字文件socket

    1.5 絕對和相對路徑
    絕對路徑
    以正斜杠開始
    完整的文件的位置路徑
    可用於任何想指定一個文件名的時候
    相對路徑名
    不以斜線開始
    指定相對於當前工作目錄或某目錄的位置
    可以作為一個簡短的形式指定一個文件名
    基名:basename
    目錄名:dirname

    1.6更改目錄
    cd 改變目錄
    使用絕對或相對路徑:
    cd?/home/wang/
    cd?home/wang
    切換至父目錄: cd?..
    切換至當前用戶主目錄: cd
    切換至以前的工作目錄: cd?-
    選項:-P
    相關的環境變量:
    PWD:當前目錄路徑
    OLDPWD:上一次目錄路徑
    技術分享圖片

    1.7列出目錄內容
    列出當前目錄的內容或指定目錄
    用法:ls [options] [files_or_dirs]
    示例:
    ls -a?包含隱藏文件
    ls -l 顯示額外的信息
    ls -R? 目錄遞歸通過
    ls -ld? 目錄和符號鏈接信息
    ls -1 文件分行顯示
    ls –S 按從大到小排序
    ls –t 按mtime排序
    ls –u 配合-t選項,顯示並按atime從新到舊排序
    ls –U 按目錄存放順序顯示
    ls –X 按文件後綴排序

    1.8查看文件狀態
    stat
    文件:metadata, data
    三個時間戳:
    access time:訪問時間,atime,讀取文件內容
    modify time: 修改時間, mtime,改變文件內容(數據)
    change time: 改變時間, ctime,元數據發生改變
    技術分享圖片

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

    1.10復制文件和目錄cp
    cp [OPTION]... [-T] SOURCE DEST
    cp [OPTION]... SOURCE... DIRECTORY
    cp [OPTION]... -t DIRECTORY SOURCE...
    cp SRC DEST
    SRC是文件:
    如果目標不存在:新建DEST,並將SRC中內容填充至DEST中
    如果目標存在:
    如果DEST是文件:將SRC中的內容覆蓋至DEST中
    基於安全,建議為cp命令使用-i選項
    如果DEST是目錄:在DEST下新建與原文件同名的文件,並將SRC中內容填充至新文件中

    技術分享圖片技術分享圖片

    1.11移動和重命名文件
    mv [OPTION]... [-T] SOURCE DEST
    mv [OPTION]... SOURCE... DIRECTORY
    mv [OPTION]... -t DIRECTORY SOURCE...
    常用選項:
    -i: 交互式
    -f: 強制

    1.12刪除
    rm [OPTION]... FILE...
    常用選項:
    -i: 交互式
    -f: 強制刪除
    -r: 遞歸
    --no-preserve-root

    1.13目錄操作
    tree 顯示目錄樹
    -d: 只顯示目錄
    -L level:指定顯示的層級數目
    -P pattern: 只顯示由指定pattern匹配到的路徑
    mkdir?創建目錄
    -p: 存在於不報錯,且可自動創建所需的各目錄
    -v: 顯示詳細信息
    -m MODE: 創建目錄時直接指定權限
    rmdir?刪除空目錄
    -p: 遞歸刪除父空目錄
    -v: 顯示詳細信息
    rm -r?遞歸刪除目錄樹
    技術分享圖片

    1.14?inode
    ?inode(index node)表中包含文件系統所有文件列表

    2.1標準輸入和輸出
    程序:指令+數據
    讀入數據:Input
    輸出數據:Output
    打開的文件都有一個fd: file descriptor (文件描述符)
    Linux給程序提供三種I/O設備
    標準輸入(STDIN)-0 默認接受來自鍵盤的輸入
    標準輸出(STDOUT)-1 默認輸出到終端窗口
    標準錯誤(STDERR)-2 默認輸出到終端窗口
    I/O重定向:改變默認位置

    3管道
    管道(使用符號“|”表示)用來連接命令
    命令1 | 命令2 | 命令3 | …
    將命令1的STDOUT發送給命令2的STDIN,命令2的STDOUT發送到命令3的STDIN
    STDERR默認不能通過管道轉發,可利用2>&1 或 |& 實現
    最後一個命令會在當前shell進程的子shell進程中執行用來
    組合多種工具的功能
    ls | tr ‘a-z‘ ‘A-Z‘
    less :一頁一頁地查看輸入
    ls?-l?/etc?|?less
    mail: 通過電子郵件發送輸入
    echo?"test?email"?|?mail? -s "test"[email protected]
    lpr:把輸入發送給打印機
    echo?"test?print"?|?lpr?-P?printer_name

    linux運維基礎文件管理