內容: #文件系統及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],如:Gw*p匹配以G后跟零個或多個文字或數字字符,然后是pW 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|more5.命令替換(取指定命令的結果)實例:# 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(刪除光標左的內容)刪除到文件的結尾:按dGdL :刪除直到屏幕上最后一行的內容 dH :刪除直到屏幕上第一行的內容 dG :刪除直到工作緩存區結尾的內容(文尾)d1G :刪除直到工作緩存區開始的內容 (文頭:n,md: 從第n行開始刪除m行~復制和粘貼復制一行內容:按yy粘貼: 按p查找和替換命令 /string:向前查找字符串?string:向后查找字符串n:繼續上一次查找shift+n:以與上一次相反的方向查找:%s/字符串1/字符串2/g:在全文中替換字符串1為字符串2n,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 bind3.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
新聞熱點
疑難解答