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