筆記整理起始時間: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