歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> linux學習筆記之linux文件管理

linux學習筆記之linux文件管理

日期:2017/3/1 18:07:37   编辑:Linux技術
內容:
  #文件系統及Shell的基本概念
  #文件及目錄操作命令
  #VI的使用
  #軟件包的管理

一、文件系統及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/
# ls grub.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 將ls的顯示結果輸入到less中
# less /var/named/localhost.zore
說明: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
#locate chdrv
#locate -n 100 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的行。 .*一起用代表任意字符
[]      匹配一個指定范圍內的字符,如'[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等。
?      匹配零個或多個先前的字符。如:'gr?p'匹配gr後跟一個或沒有字符,然後是p的行。
a|b|c    匹配a或b或c。如:grep|sed匹配grep或sed
()      分組符號,如:love(able|rs)ov+匹配loveable或lovers,匹配一個或多個ov。
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的行。
# 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 -uvf all.tar logo.gif
# tar -rf all.tar *.gif
# tar -cvfz 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
注:
1.命令自動補齊
按TAB鍵進行自動擴充
2.命令歷史記錄
Linux系統采用.history文件存放命令歷史記錄,以下是與歷史記錄相關的操作:
! n:調用正序第n個命令
 !! :調用上一條命令
 history:查看命令歷史記錄
history -c:清除歷史記錄
history -w 文件名:保存歷史記錄到指定的文件中
3.命令重定向
“>”:將命令輸出結果保存到指定文件中,如果文件不存在先建立,存在就覆蓋
“>>”:將命令輸出結果保存到指定文件中,如果文件不在存先建立,存在就覆蓋
“<”:把文件內容輸入指定命令
“<<”:將一對分隔之間的正文輸入給指定命令
  實例:
?#ls>abc.txt
#ls /etc >>abc.txt
#wc</etc/passwd
#wc<<!
4.命令管道(前一個命令的輸出作為後一個命令的輸入)
  實例:ls|more
5.命令替換(取指定命令的結果)
  實例:# cat `ls abc`
6.多個命令執行順序
“;”:順序執行多個命令
“||”:前後命令的執行存在“邏輯或”關系,只有||前面的命令執行失敗後,它後面的命令才被執行
“&&”:前後命令的執行存在“邏輯與”關系,只有&&前面的命令執行成功後,它後面的命令才被執
  實例:
?# ls /etc;cd /etc
# ls /d1/f1||touch f1
7.命令別名
  實例:#alias [別名=’命令’]
三、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:隱藏行號
  :set showmode:顯示當前操作模式
  :set noshowmode:隱藏當前操作模式
  :set ai:自動對齊
  :set dir=目錄:設置緩沖區的位置
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
#make install
(2)卸載TAR包
  直接刪除安裝
  實例:
#rm -rf /usr/named
Copyright © Linux教程網 All Rights Reserved