linux目錄結構,文件管理

文件和目錄被組織成一個單根倒置樹結構
文件系統從根目錄下開始,用「/」表示
根文件系統(rootfs):root filesystem
對於特定的文件系統,名稱大小寫敏感
以.開頭的文件爲隱藏文件
路徑分隔符/
文件有兩類數據:元數據(metadata)數據(data)
文件系統分層結構:LSB Linux Standard Base
FHS: (Filesystem Hierarchy Standard)
包括路徑在內文件名稱最長4095個字節,用/分隔的路徑不能超過255個字節。



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

/boot:引導文件存放目錄,內核文件(vmlinuz)、引導加載器(bootloader, grub)都存放於此目錄
/bin:供全部用戶使用的基本命令;不能關聯至獨立分區,系統啓動即會用到的程序
/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: 保證系統擁有完整功能而提供的應用程序
    sbin:
    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相關的安全策略等信息的存儲位置

CentOS-7的新特性
/bin-->/usr/bin
/sbin-->/usr/sbin
/lib-->/usr/lib
/lib64-->/usr/lib64

二進制程序:/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/docnode

wKioL1ecSieROb3WAABccQEDUNY504.png-wh_50文件類型
-:普通文件(二進制文件、文本文件、數據格式文件)
d: 目錄文件
b: 塊設備(隨機訪問的物理設備,有緩存)
c: 字符設備(線性訪問的邏輯設備,無緩存)
l: 符號連接文件(軟鏈接文件)
p: 管道文件pipe
s: 套接字文件socket(IP+PORT)

每一個shell和系統進程都有一個當前的工做目錄
CWD:current work directory
顯示當前shell CWD的絕對路徑
pwd: printing working directory
相關的環境變量:
PWD:保存了當前目錄路徑
OLDPWD:上一次所在目錄路徑linux

wKioL1ecSlvQLCBEAAAdXlsRiVg012.png-wh_50

絕對路徑
以正斜線開始
完整的文件的位置路徑
可用於任何想指定一個文件名的時候
相對路徑
不以斜線開始
指定相對於當前工做目錄或某目錄的位置
能夠做爲一個簡短的形式指定一個文件名

cd 改變目錄
到上一級目錄:
cd ..
回到用戶家目錄:
cd 或cd ~
到某個用戶的家目錄:
cd ~username
到之前的工做目錄:
cd -git

wKioL1ecSqKh0R0hAAA6Zzew9WA197.png-wh_50
ls (list)列出當前目錄的內容或指定目錄
ls [options] [files_or_dirs]
options:
-a顯示全部文件(包括隱藏文件)
-A顯示除.和..以外的全部文件
-l顯示額外的信息(權限、屬主屬組、文件大小、修改時間等)
-R目錄遞歸顯示
-d顯示目錄自身的信息而不是目錄下的文件
-1文件分行顯示,
-i顯示inode號碼
–S按從大到小排序
–u配合-t選項,顯示並按atime重新到舊排序
–U不排序按目錄存放順序顯示
--color=auto
藍色-->目錄
綠色-->可執行文件
紅色-->壓縮文件
紅色閃爍-->連接文件已損壞
淺藍色-->連接文件
灰色-->其餘文件



glob bash通配符
* 匹配零個或多個字符
? 匹配任何單個字符
~ 當前用戶家目錄
~username 用戶家目錄
~+ 當前工做目錄
~- 前一個工做目錄
[0-9]:匹配一個數字範圍
[a-z]:a-z之間的字母
[A-Z]:A-Z之間的字母
[wxc]:匹配列表中的任何的一個字符
[^wxc]:匹配列表中的全部字符之外的字符
字母的排列順序 a A b B c C ……x X y Y z Z
預約義的字符類:#man 7 glob
[:digit:]:任意數字,至關於0-9
[:lower:]:任意小寫字母
[:upper:]: 任意大寫字母
[:alpha:]: 任意大小寫字母
[:alnum:]:任意數字或字母
[:space:]:空格
[:punct:]:標點符號

一、顯示/var目錄下全部以l開頭,以一個小寫字母結尾,且中間出現至少一位數字的文件或目錄
ls -d /var/l *[0-9]*[[:lower:]]
二、顯示/etc目錄下以任意一位數字開頭,且以非數字結尾的文件或目錄
ls -d /etc/[0-9]*[^0-9]
三、顯示/etc/目錄下以非字母開頭,後面跟了一個字母及其它任意長度任意字符的文件或目錄
ls -d /etc/[^[:alpha:]][[:alpha:]]*
四、顯示/etc目錄下全部以m開頭以非數字結尾的文件或目錄
ls /etc/m*[^0-9]
五、顯示/etc目錄下,全部以.d結尾的文件或目錄
ls -d /etc/*.d
六、顯示/etc目錄下,全部.conf結尾,且以m,n,r,p開頭的文件或目錄
ls -d /etc/[mnrp]*.conf

touch命令:
touch [OPTION]... FILE...
-a: 僅改變atime
-m: 僅改變mtime
-t:指定時間修改時間戳 [[CC]YY]MMDDhhmm[.ss]
-c: 若是文件不存在,則不予建立
-d:以描述時間修改時間戳 touch -d '-3 day' FILE

stat 查看文件的元數據
三個時間戳:
access time:訪問時間,讀取文件內容
modify time: 修改時間, 修改文件內容
change time: 改變時間, 元數據發生改變
(訪問一個距atime的記錄時間超過24小時,或atime早於mtime的文件時atime纔會刷新)shell

wKiom1ecStXxapavAAA35pR4B_s307.png-wh_50cp[OPTION]... [-T] SOURCE DEST
cp[OPTION]... SOURCE... DIRECTORY
cp[OPTION]... -t DIRECTORY SOURCE...
cpSRC DEST
SRC是文件:
若是目標不存在:新建DEST,並將SRC中內容填充至DEST中
若是目標存在:
若是DEST是文件:將SRC中的內容覆蓋至DEST中
基於安全,建議爲cp命令使用-i選項;
若是DEST是目錄:在DEST下新建與原文件同名的文件,並將SRC中內容填充至新文件中
cpSRC... DEST。
SRC...:多個文件
DEST必須存在,且爲目錄,其它情形均會出錯;
SRC是目錄:此時使用選項:-r
若是DEST不存在:則建立指定目錄,複製SRC目錄中全部文件至DEST中;
若是DEST存在:
若是DEST是文件:報錯;
若是DEST是目錄:將SRC及其內部文件複製至DEST中。
-i:交互式
-r, -R: 遞歸複製目錄及內部的全部內容;
-a: 歸檔,至關於-dR--preserv=all
-d:僅複製軟鏈接文件,不復制軟鏈接所指向的文件
   mode: 權限
   ownership: 屬主屬組
   timestamp:時間戳
   links:鏈接
   xattr:隱藏屬性
   context:安全上下文
   all
-p: 保持原有文件的屬性信息
-v: --verbose
-f: --force當文件存在且沒有權限編輯是,將其刪除再從新複製
練習
一、使用別名命令,將/etc/目錄下全部文件,備份到/testdir/下獨立的新目錄下,並要求新目錄格式爲backupYYYY-mm-dd,備份過程可見
cp -Rv /etc/ /testdir/backup`date +%F`緩存

wKiom1ecTEuxl31IAAAUUY9xuAo563.png-wh_50

二、先建立/testdir/rootdir目錄,再複製/root全部下文件到該目錄內,並要求保留原有權限
cp -Rp /root/ /testdir/rootdir
wKioL1ecTLKCyOZaAAAP6TUeFqo817.png-wh_50
安全

顯示當前shell進程全部可用的命令別名
alias
定義別名NAME,其至關於執行命令VALUE;
alias NAME='VALUE'
當別名中沒有空格時,能夠不用加引號。單雙引號都可,默認使用單引號。
在命令行中定義的別名,僅對當前shell進程有效
若是想永久有效,要定義在配置文件中
僅對當前用戶:~/.bashrc
對全部用戶有效:/etc/bashrc
編輯配置給出的新配置不會當即生效;
bash進程從新讀取配置文件:
source /path/to/config_file或. /path/to/config_file
撤消別名:unalias
unalias [name ...]
-a 撤銷全部別名
若是別名同原命令同名,若是要執行原命令,可以使用
「\COMMAND」
’COMMAND’
/PATH/COMMAND:外部命令
wKioL1ecSzHyMcTtAAA-wutiwm4786.png-wh_50mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
經常使用選項:
-i: 交互式
-f: 強制

rm [OPTION]... FILE...
經常使用選項:
-i: 交互式
-f: 強制刪除
-r: 遞歸
--no-preserve-root
例:#rm- rf /

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

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

rmdir刪除空目錄
-p: 遞歸刪除父空目錄
-v: 顯示詳細信息
-r: 遞歸刪除目錄樹

(1) 如何建立/testdir/dir1/x, /testdir/dir1/y, /testdir/dir1/x/a, /testdir/dir1/x/b, /testdir/dir1/y/a, /testdir/dir1/y/b
mkdir -p /testdir/dir1/{x,y}/{a,b}bash

wKiom1ecTV6DgWz7AAAWvjJoVRc464.png-wh_50

(2) 如何建立/testdir/dir2/x,/testdir/dir2/y,/testdir/dir2/x/a,/testdir/dir2/x/b
mkdir -p /testdir/dir2/{x/{a,b},y}socket

wKiom1ecTbvQBIewAAAS0yNy5ZI223.png-wh_50

(3) 如何建立/testdir/dir3, /testdir/dir4, /testdir/dir5, /testdir/dir5/dir3, /testdir/dir5/dir4
mkdir -p /testdir/dir{3,4,5/dir{3,4}}
wKioL1ecTg-Tqu_CAAATgunNaXA295.png-wh_50ide

只顯示指定目錄下的隱藏文件spa

ls -d /path/.* 或 ls -d /path/.[^.]*

只顯示指定目錄下的目錄(不看其子目錄下的文件)

ls -d /path/*/  (當指定目錄下沒有目錄時會出現提示信息)

相關文章
相關標籤/搜索