Linux文件管理
一、文件系統及Shell的基本概念
1.文件系統的含義
文件系統是用來管理和組織保存在磁盤驅動器上數據的系統軟件
?
2.Linux的文件系統
Linux系統采用虛擬文件系統技術(VFS)、結構采用倒立樹型、VFS使Linux支持以下文件系統:
EXT2:? ?????????????????????二次擴展
EXT3:? ?????????????????????三次擴展
SWAP:? ?????????????????????交換文件系統
FAT、FAT32
NTFS????????????????? (默認不支持,需要特定的模塊)
VFAT:????????????????????????虛擬FAT
SYSV:????????????????????????Unix的文件系統
HPFS:????????????????????????OS/2的文件系統
ISO9660:??????????????????????光盤文件系統
NFS:??????????????????????????網絡文件系統
?
3.Linux中的文件分類
?????(1)普通文件
???????????文本文件:采用ASCII編碼方式,可編輯,可修改
???????????二進制:不可查看,不可修改
?????(2)目錄文件
???? ???????? ??存放的內容是目錄中的文件名和子目錄名
?????(3)設備文件(/dev)
?????????? ? ??用于用戶訪問物理設備所用,分為塊設備和字符設備文件
?????(4)鏈接文件
?? ? ????? ?????軟鏈接文件:目標文件和鏈接文件可以跨越索引點,相當于文件的快捷方式
?????????????????????? ??刪除原文件,則符號鏈接文件失去意義
?????????????????????????刪除符號鏈接文件,不影響原文件
?? ? ????????? ?硬鏈接文件:鏈接同一索引點中的文件,相當文件的副本
?????????????????????? ??兩個文件指向同一存儲區,內容、長度相同
?????????????????????????刪除一個文件不影響,其它文件
??????(5)管道文件
?????????? ??FIFO緩存隊列
?
4.Shell的主要功能
命令行解釋
交互模式
后臺運行
命令的多種執行順序
命令替換?(``)
I/O重定向(>,>>,<,<<)
管道(|)
通配符(*,?,[],[!])
系統環境維護?
Shell編程
歷史記錄(history)
自動補齊(TAB)
?
5.Shell的命令解釋過程
?
二.文件操作命令
1.pwd
功能:顯示當前目錄
實例:
#pwd
?
2.cd
功能:改變當前目錄
實例:
# cd? /usr/sbin?(進入/usr/sbin)
# cd ??../u1?(進入父目錄下面的u1目錄)
# cd ??..(返回父目錄)
#cd?? ?(進入用戶主目錄)
#cd? ~?(進入用戶主目錄)
3.mkdir
功能:建立目錄
格式:mkdir? [參數]?<目錄名>
參數:-m?屬性值:指定目錄的屬性?(r、w、x或4、2、1)
-p?:循環建立目錄
實例:
#mkdir?? d1?????????????????(在當前目錄下建立d1子目錄)
#mkdir?? /d1/d2? /d1/d3?/d1/d4(同時在/d1目錄中建立d2,d3,d4子目錄)
# mkdir ?–p ?/d1/d2???????????(在/d1目錄中建立d2子目錄,先建d1)
?
4.rmdir
功能:刪除空目錄
格式:rmdir? [參數]? <目錄名>
參數:-p:循環刪除
實例:
#rmdir? a1????????(刪除當前目錄下的a1子目錄)
#rmdir? /etc/a2?????(刪除/etc下a2子目錄)
#rmdir? -p?/a1/a2
?
5.ls
功能:顯示目錄中的文件及子目錄的名稱
格式:ls ????[參數]? [文件名]
參數:-a:顯示所有文件(包括隱含文件,以“.”開頭的文件為隱含文件)
????? -l:?以長格式顯示文件名及目錄名(顯示文件的詳細信息)
-F:顯示文件名,同時顯示類型
????? -R:顯示目錄中所有文件及子目錄中的文件結構
????? -t:?按照修改時間排序顯示
????? -s:顯示文件的大小,以block為單位
????? -S:按照文件大小排序顯示?
????? -m:分列顯示文件名
實例:
# ls????????????? ???
# ls/bin/????????????
# lsgrub.conf? ???????查找當目錄下是否存在grub.conf
# ls?? -l????????????
# ls? --help?????????顯示ls的詳細的幫助信息
# ls? -a
?
6.cp
功能:復制文件
格式:cp??[參數]? ?<源路徑> ?<目標路徑>?
參數:-f:文件在目標路徑中存在時,則直接覆蓋
????? ?-i:文件在目標路徑中存在時,?提示是否覆蓋
???????? -r:復制指定中所有內容和結構
???????? -b:生成覆蓋文件的備份
???? ????-a:保持文件原有屬性
實例:
# cp? /etc/*??/a1/??????把/etc下的所有文件復制到a1目錄中
#cp? /bin/ls??/dir1????? /bin/ls文件到/目錄取名為dir1
#cp? -f?/sbin/*? /exe/???直接將/sbin下的所有文件到/exe目錄中
#cp? -r ?/soft?/abc/
?
7.rm
功能:刪除文件
格式:rm ?[參數]? ?<文件名>
參數:-f:???不提示確認刪除
????? -i:????提示確認刪除
????? -r:????遞歸刪除
??實例:
# rm? /m1/f1?????????刪除/m1目錄下的f1
# rm ?–f??/m1/*???????刪除m1目錄下的所有文件
#rm? -rf? /m1???????強制刪除一個目錄(不確定、慎用)
?
8.mv
功能:移動文件、重命名文件
格式:mv [參數]?<源路徑>? <目標路徑>
參數:-i:?????如果存在文件重名則提示是否覆蓋
-b:?????建立覆蓋文件的備份
????? -f:?????如果存在文件重名則直接覆蓋
???
實例:
# mv?? /m1/f1????/m2/???移動/m1目錄下f1文件到/m2目錄下
#mv? ??f1?? f2??????????將當前目錄下的f1文件改名f2
# mv?? -f ?/d1/*?/d2/ ???移動/d1中的所有文件到/d2目錄中
?
9.file
功能:檢測文件類型
格式:file? [參數]? <文件名>
參數:?-z:檢測壓縮包文件
????? ????-L:跟隨符號鏈接
實例:
#file??? /etc/lilo.conf
#file??? -z?1.gz
?
10.顯示文本文件內容
(1) cat
格式:cat ?[參數] <文件名>
參數:-n???顯示行號
????? -b??顯示行號,但空白行不顯示行號
實例:
#cat?? /etc/inittab
#cat? -n? /d1/f1? /d1/f2 >txt1
?
(2)more
格式:more ??[參數]<文件名>
實例:
# ls|more?????????? ??????將ls的顯示結果輸入到more中
#more? ?/etc/rc.d/rc???顯示/etc/rc.d/rc文件的內容
說明:可以用回車鍵向下換行,空格鍵向下換頁,按Q鍵退出more
?
(3)less
實例:
#ls|less???????????????????
#less? /var/named/localhost.zone
說明:Page up /Page Down鍵上下滾動、Q鍵退出
?
(4)head、tail
實例:
#head? -20 ????/a1? ??顯示a1中前20行
# tail ??-20????/a1 ?顯示中a1后20行
?
(5)cut
功能:顯示文件中指定數目的字符、字節或字段
格式:#cut??參數??數字??文件
參數:-c???以字符為單位
????? -b?以字節為單位
????? -f??以字段為單位
????? -d?指定分隔符
實例:#cut? -c 3?/etc/passwd
????? #cut?-f? 1-6? -d?:/etc/passwd
????? #cut?-b? -8? /etc/passwd
?
11.搜索文件
(1)?find
格式:find? ?查找路徑???查找條件
條件:-name?“文件名”:查找指定名稱文件
?????? -lname?“文件名”:查找指定文件所有的接文件
?????? -user?用戶名:查找指定用戶擁有的文件
?????? -group?組名:查找指定組擁有的文件
?????? -links?n:查找擁有n個鏈接的文件
?????? -mtime n:查找在N天前被修改過的文件
???????? ?-atime?n:查找在N天前被訪問過的文件
????????? -type?d/f/b/l/p:查找指定類型的文件
????????? -s n[bcwkMG]:查找指定大小的文件
????????? -empty:查找為空的文件
????????? -perm?mode:查找指定屬性的文件
????????? -exec ?command {}\;?查找指定的文件并執行指定的命令
????????? -newer?文件名??查找比指定文件新的文件
實例:
#find?? /??-name?? “named*”
#find?? /??-user?? root
#find? ?./ ?-type ?d?-exec ?chmod 755 {} \;
#find . ?–empty
#find . ?–perm ?644
#find . ?–newer ?oldfile ?! ?-newer?newfile
?
(2)?whereis
功能:查找二進制可執行、手冊及源文件
實例:# whereis?? umount
?
(3)?locate
功能:在資料庫中查找指定的文件
格式:#locate [參數] 文件名
參數:
-u/-U??建立資料庫,-u?會由根目錄開始,-U?則可以指定開始位置
-e ?<目錄1…>??排除指定目錄在尋找范圍之外
-l ?<0/1> ???設置安全級別,1啟用安全模式,0關閉安全模式
-f ?<文件類型> 在資料庫中排除特定類型文件排除在外
-n?至多顯示n個輸出
-r?使用正規運算式做尋找的條件
-o?指定資料庫存的名稱。
-d?指定資料庫的路徑
實例:
#locate-u
#locatechdrv
#locate -n100 a.out
?
(4)?which
功能:查找指定命令文件
格式:#which??文件名
實例:#which? mount
?
12.grep
功能:在文本文件中查找匹配的字符串
格式:#grep? [參數]“字符串”?文件
???????????參數:?-? ??同時顯示匹配行上下的?行
-b???在匹配行前面打印該行所在的塊號
-c???只打印匹配的行數,不顯示匹配的內容
-f File?從文件中提取模板,空文件中包含0個模板,所以什么都不匹配
-h???當搜索多個文件時,不顯示匹配文件名前綴
-I???忽略大小寫差別
-q ??取消顯示,只返回退出狀態。0則表示找到了匹配的行
-l???打印匹配模板的文件清單
-L???打印不匹配模板的文件清單
-n???在匹配的行前面打印行號
-s???不顯示關于不存在或者無法讀取文件的錯誤信息
-v???反檢索,只顯示不匹配的行
-w???如果被\<和\>引用,就把表達式做為一個單詞搜索
正則表達式元字符:
^?錨定行的開始?如:'^grep'匹配所有以grep開頭的行
$?錨定行的結束?如:'grep$'匹配所有以grep結尾的行
.?匹配一個非換行符的字符?如:'gr.p'匹配gr后接一個任意字符,然后是p
*?匹配零個或多個先前字符?如:'*grep'匹配所有一個或多個空格后緊跟grep的行。docker配置文件。.*一起用代表任意字符
[]?匹配一個指定范圍內的字符,如'[Gg]rep'匹配Grep和grep
[^]?匹配一個不在指定范圍內的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一個字母開頭,緊跟rep的行
\(..\)?標記匹配字符,如'\(love\)',love被標記為1
\<?錨定單詞的開始,如:'\<grep'匹配包含以grep開頭的單詞的行
\>?錨定單詞的結束,如:'grep\>'匹配包含以grep結尾的單詞的行
x\{m\}?重復字符x,m次,如:'0\{5\}'匹配包含5個o的行
x\{m,\}?重復字符x,至少m次,如:'o\{5,\}'匹配至少有5個o的行
x\{m,n\}?重復字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10個o的行
\w?匹配文字和數字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零個或多個文字或數字字符,然后是p
\W
\w的反置形式,匹配一個或多個非單詞字符,如點號句號等
\b?單詞鎖定符,如: '\bgrepb\'只匹配grep
+?匹配一個或多個先前的字符。如:'[a-z]+able',匹配一個或多個小寫字母后跟able的串,如loveable,enable,disable等。
??匹配零個或多個先前的字符。centos7用戶管理、如:'gr?p'匹配gr后跟一個或沒有字符,然后是p的行。
a|b|c?匹配a或b或c。如:grep|sed匹配grep或sed
()?分組符號,如:love(able|rs)ov+匹配loveable或lovers,匹配一個或多個ov。LINUX教程?
x{m},x{m,},x{m,n}作用同x\{m\},x\{m,\},x\{m,n\}
?
實例:
# ls -l |grep '^a'
通過管道過濾ls -l輸出的內容,只顯示以a開頭的行。
# grep'test' d*
顯示所有以d開頭的文件中包含test的行。
# grep'test' aa bb cc
顯示在aa,bb,cc文件中匹配test的行。vim配置文件,
# grep'[a-z]\{5\}' aa
顯示所有包含每個字符串有5個連續小寫字符的字符串的行。
# grep'w\(es\)t.*\1' aa
如果west被匹配,則es就被存儲到內存中,并標記為1,然后搜索任意個字符(.*),這些字符后面緊跟著另外一個es(\1),找到就顯示該行。如果用egrep或grep-E,就不用"\"號進行轉義,直接寫成'w(es)t.*\1'就可以了。
?
13.文件壓縮操作
(1)gzip(*.gz)
功能:對單個文件壓縮
格式:gzip? [參數]?壓縮(解壓縮)文件名
參數:?-d:用于解壓縮
????? ??-t:檢驗壓縮文件是否損壞
????? ??-l:顯示壓縮文件壓縮比例
-r?:遞歸式地查找指定目錄并壓縮其中的所有文件或者是解壓縮
-num:?用指定的數字?num?調整壓縮的速度,-1?或?--fast?表示最快壓縮方法(低壓縮比)
實例:
#gzip??? /a1
#gzip??? -d? /a1.gz
#gzip??? -dv?? /*.gz
#gzip???? -r?/www
?
(2)zip
功能:壓縮文件
格式:#zip? [參數]??文件或目錄名
?-d???從壓縮文件內刪除指定的文件。
?-F???嘗試修復已損壞的壓縮文件。
?-t<mmddyy>???把壓縮文件的日期設成指定的日期。
?-u???更換較新的文件到壓縮文件內。
?-v???顯示指令執行過程或顯示版本信息。
?-z???替壓縮文件加上注釋。
?-<壓縮效率>???壓縮效率是一個介于1-9的數值。
?-P?口令????利用指定口令加密壓縮包
?-m??????添加文件到ZIP壓縮包中
實例:#zip? abc.zip?f1?? f2 ??f3
????? #zip ?-r –P 123?soft.zip? /soft/
????? #zip?-d? soft.zip? soft/wb
????? #zip?–u? soft.zip?? abc.log
????? #zip?-m? soft.zip?? install.log
?
(3)unzip
功能:?解壓縮zip文件
格式:?#unzip?[.zip文件]
? -l ?顯示壓縮文件內所包含的文件。
?? -P?? <密碼>???
???-d ??<目錄>指定文件解壓縮后所要存儲的目錄。
實例:
#unzip? ?f1.zip??-d ??/f1
#unzip ??–l ??f1.zip
?
(4)tar(*.tar)
功能:為文件或目錄創建備份
格式:tar? [參數]???文件/目錄名
參數:-t:列出壓縮包中的文件(*.tar)
-x:解壓縮(*.tar)
-z:使用gzip的壓縮文件
-c:創建壓縮包
-f:指定文件名
-j:使用bzip的壓縮文件
-v:顯示操作信息
-C:指定解壓路徑(默認路徑為當前路徑)
-r:?向壓縮包添加文件
-u:更新壓縮包中的文件
-k:還原文件過程中,遇到相同文件不覆蓋
-m:還原文件過程中,修改文件的時間為當前時間
????????????????實例:
# tar -cvf?all.tar *.jpg
# tar -uvfall.tar logo.gif
# tar -rfall.tar *.gif
#tar? -czvf?? etc.tar.gz??/etc
#tar? -xvf?all.tar?
#tar? -xzvf??? etc.tar.gz?-C /soft
注:除以上的壓縮工具外,還有compress(uncompress)、bzip2(unbzip2)
?
14.ln
功能:建立鏈接文件
格式:ln?[參數] ?<源文件>? <鏈接文件>
參數:-s:建立軟鏈接文件
????? -i:提示是否覆蓋目標文件
????? -f:直接覆蓋已存在的目標文件
???????????????實例:
# ln? /etc/abc?/abc
# ln? -s?/a1???? /etc/a1
?
15. touch
功能:創建空文件或修改文件的時間
格式:#touch ?[參數]??文件名
參數:-r?修改文件的時間為指定文件的日期時間
????? -d <yymmdd> ?指定文件日期時間為yymmdd
????? -t <yymmddhhmm>?指定文件日期時間為yymmddhhmm
????? -c?不創建指定的文件
實例:#touch?? /f1?/f2
????? #touch?-r? /f1? /f2
?? ???#touch -d "6:03pm 05/06/2000"file
?
16. sort
功能:對文本文件進行排序
格式:sort? [參數]? [文件]
參數:-o?文件名?將排序結果保存到指定文件中
??? ??-u???去除重復行
實例:
#sort? /etc/passwd
#sort ?–o?/etc/oldpass? /etc/passwd
?
17. paste
功能:合并文本文件
實例:#paste? f1? f2>f3
?
18. cmp
功能:比較兩個文件是否有差異
格式:#cmp ?[參數]??文件1文件2
參數:-l???顯示不同的字節位置
????? -s??不顯示不同之處,只顯示返回狀態
實例:#cmp? f1? f2
???? ?#cmp?-l? f1? f2
?
18. diff
功能:顯示文件的不同之處
格式:#diff? [參數] 文件1 文件2
參數:-c???顯示全文,并標出不同之處
???? ?-u???合并顯示,并標出不同之處
實例:#diff? f1?? f2
??? ??#diff?-c? f1? f2
?
19. wc
功能:統計文件中的行數、單詞數、字符數
格式:#wc? [參數] 文件名
參數:-c?統計字符數
????? -w?統計單詞數
????? -l?統計行數
實例:#wc? /etc/passwd
????? #wc?-c? /etc/passwd
?
三.vi編輯器的使用
1.vi?定義
?? Vi?是Unix/Linux系統中的一種文本編輯軟件
2.vi三種模式
命令模式:刪除字符、排版
插入模式:插入字符、刪除、修改字符
最后行模式:通過命令操作vi軟件
?
?
3.vi的使用
(1)啟動VI
# vi [參數]? ?[文件名]
(2)VI常用命令
移動光標
左移一個字符:按h
右移一個字符:按l
下移一行:???按j
上移一行:???按k
移至行首:???按^
移至行尾:???按$
移至文件頂部:按H
移至文件尾部:按L
移至文件中部:按M
前翻一屏:???按ctrl+f
后翻一屏:???按ctrl+b
前翻半屏:???按ctrl+d
后翻半屏:???按ctrl+u
移動光標到指定行:輸入:數字
插入文本
在光標右邊插入文本:??????????按a
在一行的結尾處添加文本:??????按A
光標左邊插入文本:????????????按i
在行首插入文本:??????????????按I
在光標所在行的下一行插入新行:按o
在光標所在行的上一行插入新行:按O
撤消和重復操作
撤消上一個操作:按u
撤消光標所在行的更改:按U
重復操作:輸入”.”
刪除文本
刪除當前字符:???按x
刪除一詞:????????按dw
刪除一行:????????按dd(剪切)
刪除行的部分內容:按D(刪除光標右的內容)或按d0(刪除光標左的內容)
刪除到文件的結尾:按dG
dL?:刪除直到屏幕上最后一行的內容
dH?:刪除直到屏幕上第一行的內容
dG?:刪除直到工作緩存區結尾的內容(文尾)
d1G?:刪除直到工作緩存區開始的內容(文頭
:n,md:??從第n行開始刪除m行
復制和粘貼
復制一行內容:按yy
粘貼:??按p
查找和替換命令
/string:向前查找字符串
?string:向后查找字符串
n:繼續上一次查找
shift+n:以與上一次相反的方向查找
:%s/字符串1/字符串2/g:在全文中替換字符串1為字符串2
n,ms/字符串1/字符串2/g:替換n到m行中的字符串1為字符串2
保存和退出命令
:w:寫緩沖區
:w?文件名:把緩沖區寫入指定文件
:wq:保存退出
:q!:不保存退出
:wq!:保存退出,對擁有者忽略只讀權限
E!:取消自上次保存以來所做的修改
ZZ:保存退出
修改文本命令
cl?:更改當前字符
cw?:修改到某個單詞的結尾位置
c3w?:修改到第三個單詞的結尾位置
cb?:修改到某個單詞的開始位置
c0?:修改到某行的結尾位置
c):修改到某個語句的結尾位置
c4):修改到第四個語句的結尾位置
c}?:修改到某個段落的結尾位置
c2{?:修改到當前段落起始位置之前的第2個段落位置
ctc?:修改當前行直到下一個字符c所出現位置之間的內容
C?:修改到某一行的結尾
cc?:修改當前行
會話定制命令
:set:?顯示vi變量
:set all:顯示所有可能的vi變量和它們當前的值
:set nu:顯示行號
:set nonu:隱藏行號
:setshowmode:顯示當前操作模式
:setnoshowmode:隱藏當前操作模式
:set ai:自動對齊
:set dir=目錄:設置緩沖區的位置
注:-可以vi設置信息保存在用戶主目錄的.exrc文件中
?
4.VI的高級應用
(1)編輯多個文件
#vi??[-o]文件1??文件2 ………
-o:同一窗口打開多個文件
:next:編輯下一個文件
:prev:編輯上一個文件
:args:顯示所有打開的文件名稱
Ctrl+ww?:切換窗口
:e??文件名:讀入另一文件
?
(2)高級復制
:start,end? cp?dest:將start到end行的內容復制到dest行以下
:start,end? m? dest:將start到end行的內容移動到dest行以下
nY:將從光標所在行開始的n行內容暫存
:[m],[n]w<文件名>:把m到n內容另存到指定文件中
?
(3)其它高級應用
:X?輸入口令:以口令加密保存
:ctrl+s:鎖定VI(ctrl+q解鎖)
:r !<命令>:執行指定命令,并將命令結果插入到當前文件中
:J:合并上下兩行
?
四.軟件包的管理
1.Linux軟件包主要類型
(1)RPM包
由于RedHat公司開發的一種軟件封包方式,可以用于多種Linux系統
RPM包名稱格式為:軟件名-版本號.運行平臺.rpm(foo-1.2.0-3.i386.rpm)
Linux系統會使用專用的數據庫記錄RPM包的安裝情況
(2)TAR包
TAR包封裝的通常是軟件源代碼,并且利用了gzip或其它方式進行二次壓縮
?
2.RPM包的管理
(1)安裝RPM包
#rpm? -ivh? [詳細選項]? RPM包名稱
詳細選項:
--nodeps?????忽略依賴關系
--rplacepkgs???強制覆蓋已存在的RPM包
實例:
#rpm –ivh? grub-0.93-7.i386.rpm??????
?
(2)升級RPM包
#rpm? -Uvh?[--nodeps/--replacepkgs]??軟件包名稱
實例:
#rpm –Uvh? bind-9.2.20-8.i385.rpm
?
(3)查詢RPM包
#rpm? -q[a/f?文件名/l/]?? [軟件名稱]
實例:#rpm –q? bind(查詢軟件名為bind的軟件包)
????? #rpm –qa(查詢系統中所有已安裝的RPM包)
????? #rpm –qf??/boot/grub/grub.conf?(查詢grub.conf文件所屬的RPM包)
????? #rpm?-ql? bind?(查詢軟件名為bind軟件包并顯示軟件包的內容)
?
(4)卸載RPM包
#rpm? -e??軟件名稱
實例:#rpm? -e ?bind
?
(5)檢驗RPM包
#rpm –V 軟件名稱
實例:#rpm? -V??bind
?
3.TAR軟件包的管理
(1)安裝TAR包
解壓縮
配置安裝參數
編譯和安裝
實例:
#tar –xzvf?? bind-9.2.0.tar.gz
#cd bind-9.2.0
#./configure? --prefix=/usr/named
#make
#makeinstall
?
(2)卸載TAR包
直接刪除安裝
實例:
#rm? -rf?/usr/named
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态