Linux filesystem hierarchy and file manager
命令總結(jié):
本章節(jié)包含如下命令:
touch, mkdir, cp, install, mv, rm, mktemp譬正,more, less, head, tail, man, stat帚湘,setfacl, getfacl, set, wc, cut, sort, uniq, diff, path
一孩哑、File system hierarchy standard
**Linux設(shè)計哲學(xué)一切皆文件媒峡,包括所有的設(shè)備、總線都定義為文件钧敞,F(xiàn)HS協(xié)會將linux文件定義為各個不同的層級蜡豹,每個從根到根下的二級目錄,表示的意義都不一樣犁享。Linux操作系統(tǒng)包含了kernel和application余素。Linux系統(tǒng)又將各類庫劃分為兩大類,其中包含了靜態(tài)庫和動態(tài)庫炊昆。靜態(tài)庫是直接編譯進同內(nèi)核桨吊,即initrd中,隨系統(tǒng)啟動時啟動凤巨。動態(tài)庫是將所包含的功能編譯為單個庫文件视乐,放至系統(tǒng)指定的目錄中,再程序應(yīng)用啟動時敢茁,按需調(diào)用佑淀。Linux將系統(tǒng)所需要用到的庫文件都包含進了glibc庫中,故glibc是linux系統(tǒng)必不可少的庫文件彰檬。FHS定義的linux文件系統(tǒng)也被稱作為Filesystem Hierarchy Standard,其也被眾多的linux分行版本所引用伸刃,只是其極少的部分未統(tǒng)一。
Filesystem Hierarchy standard:
-
/bin
Essential user command binaries,所有用戶的基本命令文件存放路徑 -
/sbin
System binaries,系統(tǒng)管理二進制程序存放路徑 -
/boot
Static file of the boot loader,系統(tǒng)引導(dǎo)加載器必須用到的各靜態(tài)文件逢倍,如:kerenl,initrd,initramfs -
/dev
device file ,特殊文件及設(shè)備文件 -
/etc
Host-specific system configuration,系統(tǒng)及程序的配置文件捧颅,只能為靜態(tài)文件,不能為二進制文件 -
/home
User-home directory(optional),普通用戶的家目錄 -
/lib
Essential shares binaries and kernel moudles,為系統(tǒng)及程序提供共享庫(/bin,/sbin等)较雕,以及為kernel提供內(nèi)核模塊- lib.so.* :啟動鏈接的C庫
- ld* : 運行時鏈接器/加載器
- modules : 用于存儲內(nèi)核模塊的目錄
-
/lib64
64位操作系統(tǒng)特有存儲64位庫的路徑 -
/media
Mount point for removable media -
/mnt
Mount point for temp -
/opt
And-on application software packages,第三方軟件安裝位置 -
/root
root home directory (optional) -
/srv
Date for service provided by system,為當前主機服務(wù)提供的數(shù)據(jù) -
/tmp
Temporary files.為所有用戶提供臨時存放文件的路徑碉哑,所有用戶有寫權(quán)限,這處有特殊權(quán)限 -
/usr
User Hierarhcy,全局共享只讀數(shù)據(jù)路徑
bin/
sbin/
lib/
lib64/
include/
share/
local/
src/
-
/usr/local
local hierarchy.讓管理員安裝本地程序亮蒋,能通常安裝三方程序 -
/var
variables,var hierarchy,存儲學(xué)發(fā)生變化的數(shù)據(jù)目錄-
cache/
application cache date -
lib/
variables state information -
local/
variables date for /usr/local -
lock/
lock file -
log/
log file and directory -
opt/
variable date for opt -
run/
date relevnat to runing processes -
spool/
application spool date -
tmp/
temporary files
-
-
/proc
Kernel and processes information virtual filesystem,基于內(nèi)存的虛擬文件系統(tǒng)扣典,存儲內(nèi)核和進程的相關(guān)信息,多為內(nèi)核參數(shù) -
/sys
sysfs虛擬文件系統(tǒng)慎玖,提供了比proc更為理想的訪問內(nèi)核數(shù)據(jù)的途徑贮尖,主要用來管理硬件-
/sys/devices
這是內(nèi)核對系統(tǒng)中所有設(shè)備的分層次表達模型 -
/sys/dev
維護了一個按字符設(shè)備和塊設(shè)備的主次設(shè)備號連接到真實設(shè)備,在2.6.26引用 -
/sys/bus
按總線類型分層旋轉(zhuǎn)的目錄結(jié)構(gòu)趁怔,devices中的所有設(shè)備都工作在某種總線下 -
/sys/class
按設(shè)備功能分類的設(shè)備模型湿硝,如所有輸入設(shè)備/sys/class/input之下 -
/sys/block
系統(tǒng)中所有的塊設(shè)備 -
/sys/firmware
系統(tǒng)加載固件機制對用戶空間的接口 -
/sys/fs
描述系統(tǒng)中所有文件系統(tǒng) -
/sys/kernel
內(nèi)核所有可調(diào)整能數(shù)的位置 -
/sys/module
系統(tǒng)中所有的模塊信息闰蛔,不論是靜態(tài)編譯或動態(tài)編譯的模塊KO文件,都可能會出現(xiàn)在這里
-
Linux system file type
-
-
: 普通文件 -
d
: 目錄文件图柏,directory -
b
: block device,塊設(shè)備文件,以block為單位進行隨機訪問 -
c
: character device任连,字符設(shè)備蚤吹,支持以charactor為單位,進行線性訪問随抠,有時序 -
l
: symbolic link,符號連接文件 -
p
: pipe,命名管道 -
s
: socket裁着,套接字文件,IP:PORT = Socket
二拱她、文件的復(fù)制二驰、移動及刪除
創(chuàng)建文件
touch
`touch` - touch - change file timestamps
synopsis:touch [OPTION]... FILE...
options:
`-c` : 只是修改時間,不創(chuàng)建文件
`-a` : 修改文件的access時間秉沼,即訪問時間
`-m` : 修改文件的mtime時間桶雀,卻數(shù)據(jù)的修改時間,元數(shù)據(jù)的修改時間是changetime,Ctime時間
`-t` : STAMP,改到的指定時間
例:touch -m -t 200212012001.08 # 修改mtime 并指定詳細時間
文件分兩類:
文件元數(shù)據(jù)(meta date)
文件數(shù)據(jù)
時間戳:
Access time : 最近訪問時間
Modify time : 數(shù)據(jù)改變的時間
Change time : 元數(shù)據(jù)改變的時間
注:只要數(shù)據(jù)改變了唬复, 元數(shù)據(jù)也會變的
故:使用touch修改timestamps矗积,是修改文件的元數(shù)據(jù)部分
創(chuàng)建目錄
`mkdir` - mkdir - make directories
synopsis: mkdir [OPTION]... DIRECTORY...
options:
`-p` : --perents,按照創(chuàng)建父目錄
`-v` :--verbose,查看創(chuàng)建進度信息
`-m` : --mode=MODE,設(shè)置權(quán)限
mkdir -m u=x,go=w DIR
mkdir -m 600 DIR
例:如何創(chuàng)建/tmp/x/y1,/tmpx/y2 ,/tmp/x/y1/a,/tmp/x/y1/b?
mkdir -p ‘/tmp/x/{y1/{a,b},y2}
例:如何創(chuàng)建a_c,a_d b_c,b_d
mkdir {a,b}_{c,d}
============
復(fù)制文件
文件及目錄的復(fù)制 ,linux是將底層的數(shù)據(jù)流從一個位置導(dǎo)到另一個位置敞咧,再進行重命名操作
CP命令:
`cp` - copy file and directory
synopsis: cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
options:
`-i` : --interactive,交互模式棘捣,即覆蓋之前提示用戶
`-f` : force,強制模式
`-r` `-R` : 遞歸復(fù)制文件,用于復(fù)制目錄
`-d` : 復(fù)制連接休建,如果復(fù)制的是一個連接文件乍恐,加`-d`只會復(fù)制連接文件,不會復(fù)制連接文件所指向的文件及內(nèi)容
`--preserve` : 復(fù)制其擴展屬性测砂,=mode,=ownership,=timestamps(文件屬性時間),=xattr(擴展屬性),=context(安全標簽),=links,=all(表示以上都包含)
`-a` : -dR --preserve=all,用于實現(xiàn)歸檔(archive)
注意:如果在不加`-d`參數(shù)時復(fù)制links茵烈,將把連接指向的文件內(nèi)容復(fù)制一份到指定位置并以連接文件名命名
單源復(fù)制注意內(nèi)容:
如果DEST不存在:則事先創(chuàng)建此文件,并復(fù)制源文件的數(shù)據(jù)流至DEST中
如果DEST存在:
如果DEST是非目錄文件:則覆蓋目標文件
如果DEST是目錄文件:則先在DEST目錄下創(chuàng)建一個與源文件同名的文件并復(fù)制數(shù)據(jù)流至目標文件**
多源復(fù)制注意內(nèi)容:
如果DEST不存在:錯誤
如果DEST存在:
如果DEST是非目錄文件邑彪,錯誤
如果DEST是目錄文件:分別復(fù)制每個文件至DEST目錄中瞧毙, 并保持原名
install命令:
`install` - copy files and set attributes
synopsis: install [OPTION]... [-T] SOURCE DEST
install [OPTION]... SOURCE... DIRECTORY
install [OPTION]... -t DIRECTORY SOURCE...
install [OPTION]... -d DIRECTORY...
options:
`-m` : --mode=MODE,設(shè)定目標文件權(quán)限
install -m o=x,ug=rw /etc/issue .
nstall -m 755 /etc/issue ./issue
`-o` : --owner=OWNER,設(shè)定屬主
`-g` : --group=GROUP,設(shè)定屬組
`-d` : 創(chuàng)建目錄
移動文件
mv
`mv` - move (rename) files
sinopsis: mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
options:
`-f` : 強制
`-i` : 交互
刪除文件
rm
`rm` - remove files or directories
sinopsis: rm [OPTION]... FILE...
options:
`-f` : 強制
`-i` : 交互
`-r`,`-R` : 遞歸操作
注:所有文件不建議直接刪除,建議使用MV將文件移動到一個固定位置寄症,后期確定不使用的時候再清理
創(chuàng)建臨時文件和目錄
mktemp
`mktemp` - mktemp - create a temporary file or directory
synopsis: mktemp [OPTION]... [TEMPLATE]
options:
`-d` : 創(chuàng)建臨時目錄
·-u` : 測試創(chuàng)建
mktemp /tmp/mytmp.XXXX
mktemp -d /tmp/mytmp.XXXX
================
三宙彪、文件查看類工具
分屏工具
more
`more` - more - file perusal filter for crt viewing
synopssis: more [-dlfpcsu] [-num] [+/pattern] [+linenum] [file ...
less
`less` - less - opposite of more
synopsis: less File
options:
`space` - 向下翻頁
`b` - 向上翻頁
`u` - 向上翻半頁
`d` - 向下翻半頁
`j` - 向下翻一行
`k` - 向上翻一行
`q` - 退出
head
`head` - head - output the first part of files
synopsis: head [OPTION]... [FILE]...
options:
`-n` : 顯示要查看的前幾行
注:一般可以使用`-6` 代替 `-n 6`
tail
`tail` - tail - output the last part of files
synopsis: tail - output the last part of files
options:
`-n` : 顯示要查看的后幾行
注:一般可以使用`-6` 代替 `-n 6`
`-f` : --follow,監(jiān)控最后行的變化,并顯示出來
man
`man` - man - format and display the on-line manual pages
synopsis: format and display the on-line manual pages
options:
注:同less工具有巧, man工具就是調(diào)用了Less的查看功能
stat
`stat` - stat - display file or file system status
synopsis: stat [OPTION]... FILE...
查看文件的元數(shù)據(jù)信息
wc
`wc` - wc - print newline, word, and byte counts for each file
synopsis : wc [OPTION]... [FILE]...
options:
-l : 統(tǒng)計行數(shù)
-c : byte conuts
-w : 統(tǒng)計單詞總數(shù)
-m : 字符
使用`wc file`: 格式為:行數(shù) 單詞 字符
cut
`cut` - remove sections from each line of file
synopsis: cut OPTION... [FILE]...
options:
-d CHAR: 指定分隔符释漆,默認為空格
-f #|#,#|#,#-#: fields,保留那些字段
- 例:
- cut -d: -f7 /etc/passwd
- cut -d: -f1,3,5-7 /etc/passwd
sort
`sort` - sort - sort lines of text files
synopsis: sort [OPTION]... [FILE]...
options:
-t CHAR : 指定分隔符
-n : 基于數(shù)據(jù)大小排序
-k # : 以#字段列進行排序
-r :逆序進行排序(reverse)
-f : 忽略字符大小寫
-u : 重復(fù)的行只保留一份(重復(fù)相同且連續(xù)的行)
- 例:
- sort -r -n -t: -k3 /etc/passwd
- cut -d: -f7 /etc/passwd | sort -u(統(tǒng)計系統(tǒng)用戶用了哪幾種shell)
uniq
`uniq` - report or omit repeated lines
synopsis: uniq [OPTION]... [INPUT [OUTPUT]]
options:
-c : 每行重復(fù)出現(xiàn)的次數(shù)
-u : 只顯示沒有重復(fù)的行
-d : 只顯示重復(fù)的行,至少2次或2次以上
- 例:
- cut -d: -f7 /etc/passwd | sort | uniq -c (統(tǒng)計系統(tǒng)同一shell使用的次數(shù))
diff
`diff` - diff - compare files line by line
synosis: diff [OPTION]... FILES
options:
-u : 不同風(fēng)格顯示文件差別篮迎,使用unified機制男图,顯示要修改行的上下文示姿,默認為3行
- 例:diff fstab fstab.bak > fstab.path (應(yīng)用兩個文件成生fstab.path補丁文件)
path
synopsis: path [option] -i /path/to/patch_file /path/to oldfile (打補丁)
path /path/to/oldfile < /path/to/patch_file (同上)
- 例
- path -i fstab.path fstab : 打補丁
- path -R -i fstab.patch fstab
- diff用于生成補要逊笆,path用于打補丁
==============
IO重定向及管道
什么是管道及其作用:
將一個命令的執(zhí)行結(jié)果作為另一個命令的輸入栈戳,即是管道
計算機對文件的識別方式:
- 標準輸入,0表示
- 標準輸出难裆,1表示
- 錯誤輸出子檀,2表示
程序的數(shù)據(jù)流有三種:
輸入的數(shù)據(jù)流 <---- 標準輸入(stdin),即鍵盤
輸出的數(shù)據(jù)流 ----> 標準輸出(stdout),即顯示器
錯誤的輸出流 ----> 錯誤輸出(stderr),顯示器
IO重定向
- > : 覆蓋輸出重定向
- >> : 追加輸出重定向
- < : 輸入重定向
- 2> : 錯誤覆蓋輸出重定向
- 2>> : 錯誤追加輸出重定向
- &> : 合并覆蓋重定向(即把標準輸出和錯誤輸出合在一起)
- &>> : 合并追加重定向(即把標準輸出和錯誤輸出合在一起)
- >| : 強行覆蓋(即使用命令set -c 關(guān)閉覆蓋重定向時,可以使用這個強行覆蓋)
setw命令:
options:
-C : 開啟禁用覆蓋重定向
+C : 關(guān)閉禁用覆蓋重定向