原創:snake_liu 文件與目錄操作 現在來看看Linux中的文件與目錄的操作好了! 1)基本概念: 文件與文件名 在多數操作系統中都有文件的概念。文件是Linux用來存儲信息的基本結構,它是被命名(稱為文件名)的存儲在某種介質(如磁盤、光盤和磁帶等)上的一組信息的集合。Linux文件均為無結構的字符流形式。文件名是文件的標識,它由字母、數字、下劃線和圓點組成的字符串來構成。用戶應該選擇有意義的文件名。Linux要求文件名的長度限制在255個字符以內。 為了便於管理和識別,用戶可以把擴展名作為文件名的一部分。圓點用於區分文件名和擴展名。擴展名對於將文件分類是十分有用的。用戶可能對某些大眾已接納的標准擴展名比較熟悉。 文件的類型 Linux系統中有三種基本的文件類型:普通文件、目錄文件和設備文件。 1. 普通文件 普通文件是用戶最經常面對的文件。它又分為文本文件和二進制文件。 1)文本文件:這類文件以文本的ASCII碼形式存儲在計算機中。它是以"行"為基本結構的一種信息組織和存儲方式。 2)二進制文件:這類文件以文本的二進制形式存儲在計算機中,用戶一般不能直接讀懂它們,只有通過相應的軟件才能將其顯示出來。二進制文件一般是可執行程序、圖形、圖像、聲音等等。 2. 目錄文件 設計目錄文件的主要目的是用於管理和組織系統中的大量文件。它存儲一組相關文件的位置、大小等與文件有關的信息。目錄文件往往簡稱為目錄。 3. 設備文件 設備文件是Linux系統很重要的一個特色。Linux系統把每一個I/O設備都看成一個文件,與普通文件一樣處理,這樣可以使文件與設備的操作盡可能統一。從用戶的角度來看,對I/O設備的使用和一般文件的使用一樣,不必了解I/O設備的細節。設備文件可以細分為塊設備文件和字符設備文件。前者的存取是以一個個字符塊為單位的,後者則是以單個字符為單位的。 目錄 樹型目錄結構 在計算機系統中存有大量的文件,如何有效的組織與管理它們,並為用戶提供一個使用方便的接口是文件系統的一大任務。Linux系統以文件目錄的方式來組織和管理系統中的所有文件。所謂文件目錄就是將所有文件的說明信息采用樹型結構組織起來--即我們常說的目錄。也就是說,整個文件系統有一個"根"(root),然後在根上分"杈"(Directory),任何一個分杈上都可以再分杈,杈上也可以長出"葉子"。"根"和"杈"在Linux中被稱為是"目錄"或"文件夾"。而"葉子"則是一個個的文件。實踐證明,此種結構的文件系統效率比較高。 如前所述,目錄也是一種類型的文件。Linux系統通過目錄將系統中所有的文件分級、分層組織在一起,形成了Linux文件系統的樹型層次結構。以根目錄為起點,所有其他的目錄都由根目錄派生而來。 如前所述,目錄是Linux系統組織文件的一種特殊文件。為使用戶更好地使用目錄,我們介紹有關目錄的一些基本概念。 工作目錄與用戶主目錄 從邏輯上講,用戶在登錄到Linux系統中之後,每時每刻都"處在"某個目錄之中,此目錄被稱作工作目錄或當前目錄工作目錄是可以隨時改變的。用戶初始登錄到系統中時,其主目錄就成為其工作目錄。工作目錄用"."表示,其父目錄用".."表示。 2路徑 路徑是指從樹型目錄中的某個目錄層次到某個文件的一條道路。此路徑的主要構成是目錄名稱,中間用"/"分開這和WINDOWS的\是不同的。任一文件在文件系統中的位置都是由相應的路徑決定的。 路徑又分相對路徑和絕對路徑。 絕對路徑是指從"根"開始的路徑,也稱為完全路徑;相對路徑是從用戶工作目錄開始的路徑。 用戶要訪問一個文件時,可以通過路徑名來引用。並且可以根據要訪問的文件與用戶工作目錄的相對位置來引用它,而不需要列出這個文件的完整的路徑名。 為了節省時間下面的和目錄與文件有關的一些命令是我從網上找來的對於原出處嗎就不是很清楚了!!希望願作者不要介意: 顯示文件內容命令 用戶需要查看一個文件的內容時,可以根據顯示要求的不同選用以下的命令。 cat命令 功能1:在標准輸出上顯示文件。 語法:cat [ - 選項 ] 文件 說明:該命令功能之一是用來顯示文件。它依次讀取其後所指文件的內容並將其輸出到標准輸出。 cat命令中各個選項的含義為: - v 用一種特殊形式顯示控制字符,LFD與TAB除外。 加了- v選項後,- T和- E選項將起作用。其中: - T 將TAB顯示為“ù I”。該選項需要與- v選項一起使用。即如果沒有使用- v選項,則這個選項將被忽略。 - E 在每行的末尾顯示一個$符。該選項需要與- v選項一起使用。 - u 輸出不經過緩沖區。 - A 等於- vET。 - t 等於- vT。 - e 等於- vE。 例1:$ cat example.txt 則在屏幕上顯示出example.txt 文件的內容。 本想今天去香山看紅葉,無奈天公不作美沒去成,真遺憾,但願明天艷陽高照,使我們夢想成真。 例2:$ cat - A exam2.txt 則在屏幕上顯示出exam2.txt 文件的內容,而且如果文件中含有特殊字符的話,一並顯示。 I am a boy ! ùI You are a cute boy$ 功能2:連接兩個或多個文件 說明:該命令功能之二是用來將兩個或多個文件連接起來。 例3:$ cat file1 file2 > file3 這樣就把文件filel和文件file2的內容合並起來,放入文件file3中。(此時在屏幕上並不能直接看到該命令執行後的結果。若想看到連接後的文件內容,可以再使用“cat file3”。) 需要說明的是,當文件內容過多時,就帶來一個問題,因為文本在屏幕上迅速地閃過,用戶來不及看清其內容。因此,當文件內容較大時,一般可用more等命令分屏顯示,以免因屏幕滾動太快而無法看清。 more命令 功能:在終端屏幕按屏顯示文本文件。 語法: more [ - 選項 ] 文件 說明: 該命令一次顯示一屏文本,顯示滿之後,停下來,並在終端底部打印出- - More- - ,系統還將同時顯示出已顯示文本占全部文本的百分比,若要繼續顯示,按回車或空格鍵即可。 more命令中各個選項的含義為: - p 顯示下一屏之前先清屏。 - c 作用同- p基本一樣。 - d 在每屏的底部顯示更友好的提示信息: - - More- - (XX%)[Press space to contiune , ‘q’ to quit . ] 而且若用戶輸入了-個錯誤命令則顯示出錯信息,而不是簡單地鳴響終端。 - l 不處理< Ctrl+l >(換頁符)。如果沒有給出這個選項,則more命令在顯示了一個包含有< Ctrl+l >字符的行後將暫停顯示,並等待接收命令。 - s 文件中連續的空白行壓縮成一個空白行顯示。 執行中的命令 在more命令的執行過程中,用戶可以使用more自己的一系列命令動態地根據需要來選擇顯示的部分。more在顯示完一屏內容之後,將停下來等待用戶輸入某個命令。下表列出了more指令在執行中用到的一些常用命令,而有關這些命令的完整內容,可以在more執行時按h查看。這些命令的執行方法是先輸入i(行數)的值,再打所要的命令,不然它會以預設值來執行命令。 i空格 若指定i,顯示下面的i行;否則,顯示下一整屏。 i回車 若指定i,顯示下面的i行;否則,顯示下一行。 iù D 按,若指定i,顯示下面的i行;否則,往下顯示半屏(一般為11行)。 id 同iù D 。 iz 同“i空格”類似,只是i將成為以下每個滿屏的缺省行數。 is 跳過下面的i行再顯示一個整屏。預設值為1。 if 跳過下面的i屏再顯示一個整屏。預設值為1。 iù B 按,往回跳過(即向文件首回跳)i屏,再顯示一個滿屏。預設值為1。 b 與iù B相同。 ’ 回到上次搜索的地方 q或Q 退出more。 = 顯示當前行號。 v 在當前行啟動/usr/bin/vi對之進行編輯修改。 h 顯示各命令的幫助信息。 i/pattern 查找匹配該模式的第i行。預設值為1。 in 查找符合表達式的倒數i行。預設值為1。 ! 或 :! 在子shell中執行命令。 i:n 在命令行中指定了多個文件名的情況下,可用此命令使之顯示第i個文件,若i過大(出界),則顯示文件名列表中的最後一個文件。 i:p 在命令行中指定了多個文件名的情況下,可用此命令使之顯示倒數第i個文件。若i過大(出界),則顯示第一個文件。 i:f 顯示當前文件的文件名和行數。 · 重復上次鍵人的命令。 例1:用分頁的方式顯示一個文件的內容。 $ more example1.c /*-------------------------------------------*/ /* example1.c */ /*-------------------------------------------*/ /* author f [email protected] */ /* target f BBS main/login/top-menu routines */ /* create f 99/10/23 */ /* update f 99/12/15 */ /*-------------------------------------------*/ #define _MAIN_C_ #inc1ude < BBS. h > jmp_buf byebye; int talkrequest=NA; static uschar Enter_uflag i #ifdef SHOW_IDLE_TIME --More- (3%) 例2:顯示一個文件的內容,但顯示之前先清屏,並且在顯示器的最下方顯示完整的百分比。 $ more - dc example1.c 執行該命令後,先清屏,然後顯示文件example.c的內容。 /*-------------------------------------------*/ /* example1.c */ /*-------------------------------------------*/ /* author f [email protected] */ /* target f BBS main/login/top-menu routines */ /* create f 99/10/23 */ /* update f 99/12/15 */ /*-------------------------------------------*/ #define _MAIN_C_ #inc1ude < BBS. h > jmp_buf byebye; int talkrequest=NA; static uschar Enter_uflag i #ifdef SHOW_IDLE_TIME char fromhost( ); --More- (3%)[Press space to continue , ‘q’ to quit .] 例3:顯示一個文件的內容,要求每十行顯示一次,且顯示之前先清屏。 $ more - c - 10 example1.c 執行該命令後,先清屏,然後將以每十行每十行的方式顯示文件example.c的內容。 /*-------------------------------------------*/ /* example1.c */ /*-------------------------------------------*/ /* author f [email protected] */ /* target f BBS main/login/top-menu routines */ /* create f 99/10/23 */ /* update f 99/12/15 */ /*-------------------------------------------*/ #define _MAIN_C_ inc1ude < BBS. h > --More- (3%) less命令 less命令的功能幾乎和more命令一樣,也是用來按頁顯示文件,不同之處在於less命令在顯示文件時允許用戶既可以向前又可以向後翻閱文件。 less命令的使用與more命令類似,在此就不贅述了,用戶如有不清楚的地方可直接查看聯機幫助。 用less命令顯示文件時,若需要在文件中往前移動,按< b >鍵;要移動到用文件的百分比表示的某位置,則指定一個0到100之間的數,並按< p >即可。 例如,需要按頁顯示test文件 $ less test head命令 如果用戶希望查看一個文件究竟保存的是什麼內容,可以只查看文件的頭幾行,而不必浏覽整個文件。用head命令只顯示文件或標准輸入的頭幾行。 語法:head [- n ] 文件 功能:顯示指定文件的前若干行。 說明:該命令顯示每個指定文件的前面n行。如果沒有給出n值,缺省設置為10。如果沒有指定文件,head就從標准輸入讀取。例如顯示文件example.c的前3行。 $ head - 3 example.c /*-------------------------------------------*/ /* example1.c */ /*-------------------------------------------*/ tail命令 同樣,如果用戶想查看文件的尾部,可以使用tail命令。 語法:tail [+ / - num ] [參數] 文件 說明:該命令顯示一個文件的指定內容。它把指定文件的指定顯示范圍內的內容顯示在標准輸出上。如果沒有給定文件名,則使用標准輸入文件。 tail命令中各個選項的含義為: +num 從第num行以後開始顯示。 - num 從距文件尾num行處開始顯示。如果省略num參數,系統默認值為10。 l 以文本行為num的計數單位。與參數選項+num或- num選項同時使用時,num表示要顯示的文本行行數。 c 以字節為num的計數單位。與參數選項+num或- num選項同時使用時,num表示要顯示的字符數。 (l、c選項可以省略,系統默認值為l,即按行計數)。 例如: $ tail -4 example 將顯示文件example的最後4行。 od命令 用戶通常使用od命令查看特殊格式的文件內容。通過指定該命令的不同選項可以以十進制、八進制、十六進制和ASCII碼來顯示文件。 語法:od [選項] 文件… 命令中各選項的含義: - A 指定地址基數,包括: d 十進制 o 八進制(系統默認值) x 十六進制 n 不打印位移值 - t 指定數據的顯示格式,主要的參數有: c ASCII字符或反斜槓序列 d 有符號十進制數 f 浮點數 o 八進制(系統默認值為02) u 無符號十進制數 x 十六進制數 除了選項c以外的其他選項後面都可以跟一個十進制數n,指定每個顯示值所包含的字節數。 說明:od命令系統默認的顯示方式是八進制,這也是該命令的名稱由來(Octal Dump)。但這不是最有用的顯示方式,用ASCII碼和十六進制組合的方式能提供更有價值的信息輸出。 例如: $ od - Ax - tcx1 wh5 000000 F i l e s y s t e m 46 69 6c 65 73 79 73 74 65 6d 20 20 20 20 20 20 000010 1 k - b l o c k s 20 20 20 20 20 31 6b 2d 62 6c 6f 63 6b 73 20 20 000020 U s e d A v a i l a b 20 20 20 20 55 73 65 64 20 41 76 61 69 6c 61 62 000030 l e U s e % M o u n t e d 6c 65 20 55 73 65 25 20 4d 6f 75 6e 74 65 64 20 000040 o n \n / d e v / h d a 8 6f 6e 0a 2f 64 65 76 2f 68 64 61 38 20 20 20 20 000050 3 0 4 4 4 20 20 20 20 20 20 20 20 20 20 20 33 30 34 34 34 000060 0 5 0 6 8 9 2 30 20 20 20 20 20 35 30 36 38 39 20 20 20 20 32 000070 3 8 0 2 8 1 8 % / \n / d e 33 38 30 32 38 20 20 31 38 25 20 2f 0a 2f 64 65 000080 v / h d a 9 76 2f 68 64 61 39 20 20 20 20 20 20 20 20 20 20 000090 5 4 6 3 6 9 20 20 20 20 20 35 34 36 33 36 39 20 20 20 20 20 0000a0 8 7 7 6 5 0 9 3 7 1 20 38 37 37 36 20 20 20 20 35 30 39 33 37 31 20 0000b0 2 % / h o m e \n \n \n 20 20 32 25 20 2f 68 6f 6d 65 0a 0a 0a 0000bd