第三章文件管理學習筆記

筆記整理起始時間:2018年3月31日16:16:55node

 

本章內容linux

        文件系統結構元素git

        建立和查看文佳shell

        複製、轉移和刪除文件數組

        使用Nautilus來管理文件緩存

        軟和硬連接安全

 

文件系統socket

        文件和目錄被組織成一個單根倒置樹結構ide

        文件系統從根目錄下開始,用"/"表示網站

        根文件系統:rootfs,root  filesystem

        文件名稱,默認ext4,xfs下區分大小寫

        以.開頭的文件爲隱藏文件

        路徑分隔的/

        文件有兩類數據

               元數據:metadata

               數據:data

        文件系統分層結構:LSB,Linux  Standard Base

        FHS:(Filesystem Hierarchy Standard)

 

文件名規則

        文件名最長255個字節

        包括路徑在內文件名最長4095個字節

               藍色-->目錄

               綠色-->可執行文件

               紅色-->壓縮文件

               淺藍色-->連接文件

               灰色-->其餘文件

        除了/和NUL,全部字符都有效,但使用特殊字符的目錄名和文件不推薦使用

        有些字符須要用引號來引用它們。

        標準Linux文件系統ext4,xfs下區分大小寫,如mail,Mail等

 

文件系統結構

        /boot:引導文件存放目錄,內核文件(vmlinuz),引到加載器(bootloader)

        /bin:供全部用戶使用的基本命令;不能關聯至獨立分區,os啓動即會用到程序

        /sbin:管理類的基本命令,不能關聯至獨立分區,os啓動即會用到的程序

        /lib:啓動時程序依賴的基本共享庫文件以及內核模塊文件/lib/modules

        /lib64:專用於x86_64系統上的輔助共享庫文件存放位置

        /etc:配置文件目錄

        /home/houstname:普通用戶家目錄

        /root:管理員的家目錄

        /media:便攜式移動設備掛載點

        /mnt:臨時文件系統掛載點

        /dev:設備文件及特殊文件存儲位置

               b:block device,隨即訪問

               c:character device,線性訪問

        /opt:第三方應用程序的安裝位置

        /srv:系統上運行的服務用到的數據

        /tmp:臨時文件存儲位置

        /usr:universal shared,read-only data

               /usr/bin:保證系統擁有完整功能而提供的應用程序

               /usr/sbin:

               /usr/lib:32位使用

               /usr/lib64:只存在64位系統

               /usr/include:C程序的頭文件(header files)

               /usr/share:結構化獨立的數據,例如doc,man等

               /local:第三方應用程序的安裝位置

                     bin,sbin,lib,lib64,etc,share

        /var:variable data  filesystem

               cache:應用程序緩存數據目錄

               lib:應用程序狀態信息數據

               local:專用於爲/usr/local下的應用程序存儲可變數據

               lock:鎖文件

               log:日誌目錄及文件

               opt:專用於爲/opt下的應用程序存儲可變數據

               run:運行中的進程相關數據,一般用於存儲進程pid文件

               spool:應用程序數據池

               tmp:保存系統兩次重啓只見產生的臨時數據

        /proc:用於輸出內核與進程信息相關的虛擬文件系統

        /sys:用於輸出當前系統上硬件設備相關信息虛擬文件系統

        /selinux:security enhanced Linux,selinux相關的安全策略等信息的

               存儲位置

 

Linux上的應用程序的組成部分

        二進制程序:/bin,/sbin,/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

 

Linux下的文件類型

        -:普通文件

        d:目錄文件

        b:塊設備

        c:字符設備

        l:符號連接文件

        p:管道文件pipe

        s:套接字文件socket

 

CentOS 7目錄變化

        /bin 和/usr/bin

        /sbin 和/usr/sbin

        /lib 和/usr/lib

        /lib64 和/usr/lib64

 

顯示當前工做目錄

        每一個shell和系統進程都有一個當前的工做目錄

        CWD:current work directory

        顯示當前shell CWD的絕對路徑

        pwd:printing working  directory

               -P   顯示真實物理路徑

               -L    顯示連接路徑(默認)

        如:cd /bin,

               pwd,輸出結果爲:/bin,

               pwd -P ,輸出結果爲:/usr/bin

               

絕對和相對路徑

        絕對路徑

               以/開始

               完整的文件的位置路徑

               可用於任何想指定一個文件名的時候

               例如:cd /root/Downloads

        相對路徑名

               不以斜線開始

               指定相對於當前工做目錄或某目錄的位置

               能夠做爲一個簡短的形式指定一個文件名

               例如:cd  ../Downloads/

        基名:basename

        目錄名:dirname   

        如:

               basename /root/Music/file1 輸出結果爲:file1

               dirname /root/Music/file1     輸出結果爲:/root/Music

 

cd    更改目錄

        cd            更改目錄,可以使用相對或絕對路徑

        cd     /home/wang

        cd     home/wang

        cd .. 切換至父目錄

        cd           切換至當前用戶家目錄

        cd - 切換至上一個工做目錄

        cd ~wang      切換至wang用戶家目錄

        cd -P /bin      進入絕對路徑

        相關變量

               PWD:當前目錄路徑

               OLDPWD:上一次目錄路徑

 

ls      列出當前目錄的內容或指定目錄

        用法:ls [options] [files or  dirs]

        ls -a 顯示全部文件或目錄,含隱藏

        ls -l 顯示文件詳細信息,==ll

        ls -R 遞歸,顯示目錄裏面的內容

        ls -ld      目錄和符號連接信息

        ll -d 目錄/   對於普通目錄,加和不加/都會顯示目錄信息,可是對於連接

                            目錄,好比/bin,加/會顯示連接目的目錄信息,不加/會顯示連接

                            文件自己的信息。

        ls -1 單列顯示

        ls -S 按大小從大到小排序

        ls -t 按mtime排序

        ls -u 需配合-t使用,顯示並按atime重新到舊排序

        ls -U       按目錄存放順序顯示

        ls -X 按文件後綴排序

        ls -r 倒序排列

        

stat   查看文件狀態

        三個時間戳

               access time,    atime,表示文件的最後讀取時間

                     有些狀況,如網站,atime刷新頻繁會形成系統資源損耗,需禁止

               modify time,        mtime,表示文件的最後修改時間

               change time,       ctime,表示元數據發生改變的時間

 

文件通配符     

               *             匹配零個或多個字符

               ?            匹配任何單個字符

               ~            當前用戶家目錄

               ~mage   用戶mage家目錄

               ~+          當前工做目錄

               ~-          前一個工做目錄

               [0-9]        匹配列表中的任何一個字符

               [a-Z]       匹配任意字母

               [wang]    匹配列表中的任何一個字符

               [^wang]   匹配列表中的全部字符意外的字符

        預約義的字符類:man 7 glob

               [:digit:]    任意數字,至關於0-9

               [:lower:]  任意小寫字母

               [:upper:]  任意大寫字母

               [:alpha:]  任意大小寫字母

               [:lanum:] 任意數字或字母

               [:blank:]  水平空白字符

               [:space:]  水平或垂直空白字符

               [:punct:]  標點符號

               [:print:]    可打印字符

               [:graph:]  圖形字符

               [:cntrl:]    控制(非打印)字符

               [:xdigit:]   十六進制字符

        

小練習:

    一、顯示/var目錄下全部以l開頭,以一個小寫字母結尾,且中間出現至少一位數

字的文件或目錄

        ls -d /var/l*[0-9]*[[:lower:]] 

 二、顯示/etc目錄下以任意一位數字開頭,且以非數字結尾的文件或目錄

        ls -d /etc/[0-9]*[^[:digit:]]

 三、顯示/etc/目錄下以非字母開頭,後面跟了一個字母及其它任意長度任意字符

的文件或目錄

        ls -d /etc/[^[:alpha:]][a-Z]*

 四、顯示/etc/目錄下全部以rc開頭,並後面是0-6之間的數字,其它爲任意字符

的文件或目錄

        ls -d /etc/rc[0-6]*

 五、顯示/etc目錄下,全部以.d結尾的文件或目錄

        ls -d /etc/*.d

 六、顯示/etc目錄下,全部.conf結尾,且以m,n,r,p開頭的文件或目錄

        ls -d /etc/[mnrp]*.conf

 七、只顯示/root下的隱藏文件和目錄

        ls -d /root/.*

 八、只顯示/etc下的非隱藏目錄

        ####      ls -d /etc/[^.]*/

        

touch命令     建立空文件和刷新時間戳

        touch [OPTION]...FILE...

               -a    僅改變atime和ctime

               -m 僅改變mtime和ctime

               -t [[CC]YY]MMDDhhmm[.ss]       指定atime和mtime的時間戳

               -c    若是文件不存在,則不予建立

        用法:文件存在,刷新時間戳,文件不存在,則建立文件

               touch file{1..5}        建立file1..file5

 

cp複製文件和目錄

        用法使用規則

               cp SRC DEST

               複製單個文件到單個文件

                     如文件名不存在,則建立

                            cp Music/file3  f3

                     如文件名已存在,則覆蓋,root帳號默認使用別名-i,會詢問是否覆蓋

                            cp Music/file3 f3  此時f3已存在

               複製單個文件到目錄

                     在目標DEST下新建與源SRC同名的文件,並將SRC內容填充到新文件

               複製多個文件到單個文件

                     無論文件名是否存在,均會報錯

                            cp: target ‘f3’ is  not a directory

               複製多個文件到目錄

                     在目標DEST下新建與源SRC同名的文件,並將SRC內容填充到新文件

                            cp Music/file1  Music/file2 Videos/

                      如目標文件名已存在,則覆蓋,默認root帳號會詢問

               複製目錄到單個文件

                     如DEST已存在,直接報錯

                     cp: cannot overwrite  non-directory ‘f3’ with directory ‘Music/’

                     如DEST不存在

                            建立指定的DEST同名目錄,複製SRC目錄中全部內容至新目錄

               複製目錄到目錄

                     在DEST中新建與SRC同名目錄,且複製SRC中內容到新目錄

                     如目錄已存在,默認root帳號會提示覆蓋

               PS:如複製目錄,必須加-r選項

        

        cp -i       覆蓋前提示

        cp -n      不覆蓋,必須在-i後面纔有效

        cp -a      歸檔,至關於-dR --preserv=all

        cp -d      --no-dereference  --preserv=links 不復制源文件,只複製連接

        --preserv[=ATTR_LIST]

               mode:權限

               ownership:屬主屬組

               timestamp:

               links

               xattr

               context

               all

        cp -p     等同於--preserv=mode,ownership,timestamp

        cp -v       --verbose過程可視

        cp -f      --force   強制

        cp -u      --update 只複製源比目標更新文件或目標不存在的文件

        cp -=backup=numberd       如目標存在,覆蓋前先備份加且加數字後綴

 

mv 移動和重命名文件

        mv,用法規則和cp相似

        mv -i 覆蓋前提示

        mv -f 強制

        

rm 刪除

        rm file1   刪除file1

        rm -i file1       刪除前詢問

        rm -f 強制刪除,再也不詢問

        rm --no-preserve-root 刪除/

        如:

               rm -rf / --no-preserve-root

               自殺,刪除根目錄下-全部文件,史上最危險命令

        添加別名:

        alias rm=`mv -t /data`

        

tree 顯示目錄樹

        tree /etc          顯示指定目錄樹

        tree -d          只顯示目錄

        tree -L level,       指定顯示的層級數

        tree -P pattern       只顯示由指定pattern匹配到的路徑

        tree -p                   顯示tree的時候顯示文件類型(-,d,b..)

        

mkdir 建立目錄

        mkdir /root/f1       在root下創空目錄f1

        mkdir -p /root/go1/go2/go3/go 遞歸建立,即父目錄不存在則自動建立

        mkdir -v        是過程可視

        mkdir -m MODE    建立目錄時直接指定權限

 

rmdir 刪除空目錄

        rmdir /root/f1 刪除root下空目錄f1

        rmdir -p /root/go1/go1/go2/go3/go   

               遞歸刪除,如刪除目標以後父目錄空,則一塊兒刪除

        rmdir -v                顯示詳細信息,是過程可見

 

        

索引節點:

        一個文件系統維護了一個索引節點的數組,每一個文件或目錄都與索引節點數組

        中的惟一一個元素對應,系統給每一個索引節點分配了一個號碼,也就是該節點

        在數組中的索引號,索引節點號。

        

        Linux爲每一個文件分配一個inode(索引節點編號),能夠將inode簡單理解成

        一個指針,它永遠指向本文件的具體存儲位置,系統是經過inode來定位每一

        個文件。

        inode(index node)表中包含文件系統全部文件列表

        一個節點(索引節點)是在一個表項,包含有關文件的信息(元數據),包括

               文件類型,權限,uid,gid

               連接數(指向這個文件名路徑名稱個數)

               該文件的大小和不一樣的時間戳

               指向磁盤上文件的數據塊指針

               有關文件的其餘數據

        文件名能夠隨時更改,可是索引節點對文件是惟一的,而且隨文件的存在而存在

 

目錄:

        文件系統引用一個文件是用inode號

        人是經過文件名來引用一個文件

        一個目錄的數據部分記錄的信息爲:

               目錄下文件名和文件inode號之間的映射

 

cp和inode:

        在cp的命令執行時:

               分配一個空閒的inode號,在inode表中生成新條目(inode編號)

               在目錄中建立一個目錄項(新映射),將名稱與inode編號關聯

               拷貝數據生成新的文件

 

rm和inode

        rm命令執行過程:

               連接數遞減,從而釋放的inode號能夠被重用

               把數據塊放到空閒列表中

               刪除目錄項

               數據實際上不會立刻被刪除,但當另外一個文件使用數據塊時將被覆蓋

        

mv和inode

        若是mv命令的目標和源在相同的文件系統,做爲mv命令

               用新的文件名建立對應新的目錄項(映射)

               刪除舊目錄條目對應的舊的文件名

               不影響inode表(除時間戳)或磁盤上的數據位置:沒有數據被移動。

        若是目標和源在一個不一樣的文件系統,mv至關於cp和rm

 

硬連接:

        建立硬連接會增長額外的記錄項以引用文件

        對應於同一文件系統上一個物理文件

        每一個目錄引用相同的inode號

        建立時連接數遞增

               目錄文件生成以後連接數爲2  由於.佔一個

               當目錄中有子目錄時,連接數再+1

        刪除文件時:

               rm命令遞減計數的連接數

               文件要存在,至少有一個連接數

               當連接數爲零時,該文件被刪除

        不能跨越驅動器或分區

        語法:

               ln filename [linkname]

               如 ln /root/f3  /root/Music/fgo1

 

 

符號(軟)連接

        一個符號連接指向另外一個文件

        ls -l 顯示連接的名稱和引用的文件

        一個符號連接的內容是它引用文件的名稱

        能夠對目錄進行

        能夠跨分區

        指向的是另外一個文件的路徑;其大小爲指向的路徑字符串的長度;不增長或減小

        目標文件inode的引用計數

        添加軟連接時如用相對路徑需相對於軟連接的路徑

        語法:

               ln -s filename [linkname]

               ln -s /data/f5 /root/f5_link    

PS:如使用刪除命令rm刪除軟連接

               rm -rf /root/f5_link

               此命令如最後不加/,會刪除軟連接自己,

               如使用tab鍵補全命令,後面默認會帶/,此時刪除的將會是目f5下全部文件

        

        readlink /root/f5_link           顯示軟連接指向的源文件

 

確認文件內容

        file f1                     顯示f1的文件類型

        file -b f1               累出文件辨識結果時,不顯示文件名稱

        file -f filelist     列出文件filelist中全部文件名的文件類型

        file -F , 34              使用指定分隔符號(,)替換輸出結果文件名後默認

                                           的:分隔符

        flie -L             查看對應軟連接對應文件的文件類型

 

        

        

筆記整理完成時間:2018年4月1日15:24:49      

相關文章
相關標籤/搜索