第三章文件管理學習筆記

文件系統結構元素

創建和查看文佳

復制、轉移和刪除文件

使用Nautilus來管理文件

軟和硬鏈接

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

 

本章內容

文件系統結構元素

創建和查看文佳

復制、轉移和刪除文件

使用Nautilus來管理文件

軟和硬鏈接

 

文件系統

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

文件系統從根木蘭路下開始,用”/”表示

根文件系統: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,表示文件的最后讀取時間

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:]??? 控制(非打?。┳址?/p>

[:xdigit:]?? 十六進制字符

 

小練習:

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

字的文件或目錄

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

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

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

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

的文件或目錄

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

? 4、顯示/etc/目錄下所有以rc開頭,并后面是0-6之間的數字,其它為任意字符

的文件或目錄

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

? 5、顯示/etc目錄下,所有以.d結尾的文件或目錄

ls -d /etc/*.d

? 6、顯示/etc目錄下,所有.conf結尾,且以m,n,r,p開頭的文件或目錄

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

? 7、只顯示/root下的隱藏文件和目錄

ls -d /root/.*

? 8、只顯示/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

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

 

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號

創建時鏈接數遞增

刪除文件時:

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/94224

(0)
青樓丨青樓丨
上一篇 2018-04-01
下一篇 2018-04-01

相關推薦

  • 簡述at和crontab命令

    制定 每周三凌晨三、五點10分執行某個腳本,輸出當前時間,時間格式為 2017-12-28 10:00:00

    Linux筆記 2018-06-07
  • K8S的安裝

    使用kubeadm安裝部署kubernetes集群: 前提:1、各節點時間同步;2、各節點主機名稱解析:dns OR hosts;3、各節點iptables及firewalld服務被disable; 一、設置主節點安裝程序包 1、生成yum倉庫配置: 主管理節點上的yum倉庫的配置: 先配置安裝docker倉庫: [docker]name=dockerbas…

    2018-08-08
  • N31Linux第三周

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]#who |cut -d ‘ ‘ -f1 |sort -u 2、列出最后登錄到當前用戶系統的用戶相關信息。 [root@localhost ~]#w |cut -d ‘ ‘ -f1 |…

    2018-07-16
  • linux文件管理常用命令

    日常管理linux文件

    Linux筆記 2018-03-31
  • 粗談用戶和用戶組相關配置文件

    創建一個用戶時,用戶會根據系統配置文件來創建用戶。配置文件在/etc/login.defs文件里 login.defs //創建賬戶自動分配參數 PASS_MAX_DAYS //可以使用密碼的最大天數。 PASS_MIN_DAYS //密碼更改之間允許的最短天數 PASS_MIN_LEN //最小可接受的密碼長度 PASS_WARN_AGE //密碼過期前發…

    Linux筆記 2018-04-08
  • win10家庭版連接samba服務器無響應并且windows資源管理器被自動刷新問題解決

    wind10家庭版連接linux的samba,訪問有權限的samba文件夾直接被關閉文件夾資源,任務欄也刷新一次,訪問文件夾失敗。

    Linux筆記 2018-07-28
欧美性久久久久