天天看點

Linux檔案操作

目錄

1.Linux系統中的檔案類型:

2.目錄和檔案的浏覽、管理及維護

Linux檔案系統的層次結構:

3.檔案操作的主要指令:

pwd ~ 顯示目前目錄的絕對路徑

ls ~ 列出目前目錄或指定目錄中的内容

cp ~ 複制檔案和目錄

mv ~ 移動檔案和目錄

mkdir ~ 目錄建立

touch ~ 建立檔案

rm ~ 永久删除檔案或目錄

删除目錄指令rmdir或rm -r

4.檔案的傳輸和浏覽

ftp簡介

管理和維護ftp服務的指令

本地與遠端之間檔案的傳遞

确定檔案類型的指令file

cat ~ 指令将一個或多個檔案的内容顯示在螢幕上

head ~ 預設将顯示一個檔案的前10行

tail ~ 預設顯示一個檔案最後10行的内容

wc ~ 顯示一個檔案的行數、單詞數和字元數

more ~ 指令浏覽檔案

5.Linux檔案系統及一些指令的深入讨論

磁盤分區和檔案系統

i節點

檔案與i節點的關系

普通檔案與i節點

目錄與i節點

對i節點的操作

mv指令對inodes的操作

rm指令對i節點的操作

軟連接配接

硬連接配接

在Linux系統中一共有以下7種類型的檔案:  

-:普通檔案(regular file)、也稱為正則檔案    

d:目錄(directory) 

l:符号(軟)連接配接

h:塊特殊檔案、一般是指塊裝置------如硬碟、字元特殊檔案、一般是指字元裝置-------如鍵盤

p:命名的管道檔案、一般用于程序之間傳輸資料

s:s是socket的第1個字元、中文翻譯成套接字。套接字:在UNXI或Linux系統中的socket與電話十分相似,socket相當于一條通信線路的終點(電話),這些socket之間存在着資料通信網絡。

所有的檔案和目錄被組織成以一個根節點開始的倒置的樹狀結構。目錄中存放的可以是檔案、也可以是其他的子目錄,而檔案中存儲的是真正的資訊。檔案系統的最頂層是由根目錄開始、系統使用/來表示根目錄開始、系統使用/來表示根目錄。在根目錄之下的既可以是目錄、也可以是檔案,如下圖所示。

Linux檔案操作

目錄或檔案的表示:

完整的目錄或檔案路徑是:

由一連串的目錄名所組成的

每個目錄由/來分隔,如cat的完整路徑是/home/cat

點“.”表示目前目錄

兩個點“..”表示父(parent)目錄

以一個點開始的檔案是隐藏檔案

絕對路徑和相對路徑:

一個絕對路徑必須以一個正斜線( / )開始:包括從根節點開始到要查找的對象(目錄或檔案)所必須周遊的每一個目錄的名字,是檔案位置的完整路标。

相對路徑不是以正斜線( / )開始:包含從目前目錄到要查找的對象所必須周遊的每一個目錄的名字,一般比絕對路徑短。

Linux系統中重要的目錄:

bin ~ 存放常用的可執行檔案即指令或程式

sbin ~ 存放系統的可執行檔案

/etc ~ 存放系統的一些主要配置檔案

 /tmp ~ 存放臨時檔案以友善交換資訊

/boot ~ 存放核心和系統啟動時所需的檔案

/dev ~ 存放這台計算機中所有的裝置

/usr ~ 存放應用程式和與指令相關的系統資料

/var ~ 存放系統運作過程中經常變化的檔案

/srv ~ 存放所有與伺服器相關的程式

/proc ~ 一個虛拟檔案系統、常住記憶體

/lib、/usr/lib、/usr/local/lib ~ 存放的是libraries,即系統使用的函數庫

Lost + Found ~ 當系統異常關機、崩潰或出現錯誤時,系統會将一些遺失的片段存放在該目錄中

cd ~ 切換目前目錄

     在cd指令中可以使用如下路徑表示法:

     使用絕對路徑:cd/home/dog

     使用 .. 進入上一級目錄,cd..

     使用相對路徑: cd dog

     使用..或空白切換到使用者的家目錄:cd ~ 

     使用~~切換到使用者之前的工作目錄: cd - 

     ls [option] [directories|files]

 options:以-開始的選項、可以同時使用多個選項

 directories|files:目錄或檔案、可以同時使用多個目錄或多個檔案

     ls指令中幾個常用選項:

         -l 選項 ~ 以長清單方式顯示ls指令的執行結果

         -d選項 ~ 隻顯示目錄本身的屬性

         -h選項 ~ 以人們容易閱讀的方式顯示

         -a選項 ~ 顯示包括隐藏目錄和檔案的所有

         -all選項 ~ 與-a選項的功能相同

         -F選項 ~ 列出每個顯示的檔案類型

             檔案類型符号所代表的檔案類型如下:

                 / ~ 表示目錄

                * ~ 表示可執行檔案

                什麼也沒有 ~ 表示純文字檔案即ASCII碼檔案

                @ ~ 表示符号連結

可以一次複制多個檔案,而選項可以改變該指令的功能,該指令是一個具有破壞性的指令,如果使用不當,可能會導緻災難性的後果。

執行方式:

如果指定的目标并不存在,系統将建立一個同名檔案并将源檔案中的内容複制進來

如果指定目标檔案已經存在并且是檔案,系統将用指定檔案覆寫原來的目标檔案

如果指定目标已經存在并且是目錄,系統将把指定檔案放在該目錄中并且檔案名與源檔案同名

cp [ -option(s)] source(s) target

source(源)可以是一個或多個檔案、也可以是一個或多個目錄名

target(目的):可以是一個檔案或一個目錄

cp指令的選項

-l:在覆寫之前給出提示資訊

-r:遞歸地複制目錄

-p:保留一些特定的屬性

-f:若目标檔案已經存在,直接覆寫原檔案

mv指令既可以在不同目錄之間移動檔案和目錄、也可以重新命名檔案和目錄。mv指令并不影響被移動或改名檔案或目錄中的内容。mv指令也是一個具有破壞性的指令,如果使用不當,也可能會導緻災難性的後果。mv指令的文法格式與cp指令相同。

mv指令的執行方式

如果指定目标并不存在,系統将把源檔案和目錄更名為目标檔案或目錄。

如果指定目标存在,并且是檔案,系統将把指定的檔案更名為目标檔案的名稱并覆寫源目标檔案中的内容。

如果指定目标存在,并且是目錄,系統将把指定檔案移動到該目錄中并且檔案名與源檔案同名。

mkdir ~ 建立一個新目錄

mkdir ~ 目錄名

在mkdir指令中使用-p選項,會建立在指定路徑中所有不存在的目錄

在mkdir指令中使用-p選項、也可以是絕對路徑名

touch ~ 建立一個或多個空檔案

touch 檔案名

檔案名既可以是絕對路徑名、也可以是相對路徑名

可以是多個檔案,檔案名之間用空格隔開

如果檔案名或目錄名存在,touch指令将把該檔案或目錄的時間戳改為當時通路時間的時間和日期

rm指令是一個具有破壞性的指令,因為rm指令永久地删除檔案或目錄,如果沒有備份,将無法恢複

rm [-option(s)] files|dictories    

file為一個或多個檔案

dictionary為一個或多個目錄

-option為rm指令的選項

rm指令中的常用選項為:

        -i:在删除之前給出提示資訊

        -r:遞歸地删除目錄

        -f:直接删除原有的檔案

rmdir ~ 删除空目錄

rmdir 目錄名

rm -r ~ 删除包含檔案和子目錄的目錄

Linux删除目錄下的檔案的10種方法小結

删除目前目錄下的檔案

<code>1.rm -f *</code>

#最經典的方法,删除目前目錄下的所有類型的檔案

<code>2.find . -type f -delete或find . -type f -exec rm -f {} \;</code>

#用find指令查找普通檔案并删除or用find指令的處理動作将其删除

<code>3.find . -type f | xargs rm -f</code>

#用于參數清單過長;要删除的檔案太多

<code>4.rm-f `find . -type f`</code>

#删除全部普通檔案

<code>5.for delete in `ls -l`;do rm -f * ;done</code>

#用for循環語句删除目前目錄下的所有類型的檔案

删除指定目錄下的檔案

<code>1.rm -f 指定目錄*</code>

#最經典的方法,删除指定目錄下的所有類型的檔案

<code>2.find 指定目錄 -type f -delete或find 指定目錄 -type f -exec rm -f {} \;</code>

#用find指令查找指定目錄下的所有普通檔案并删除or用find指令的處理動作将其删除

<code>3.find 指定目錄 -type f | xargs rm -f</code>

<code>4.rm-f `find 指定目錄 -type f`</code>

#删除指定目錄下的全部普通檔案

<code>5.for delete in `ls –l 指定目錄路徑`;do rm -f * ;done</code>

#用for循環語句删除指定目錄下的所有類型的檔案

FTP的全稱是:File Transfer Protocol------檔案傳輸協定。ftp指令使用标準的FTP協定在不同的系統之間傳輸檔案。這些系統既可以是相似的也可以是不相似的操作。使用方法:ftp 主機名或IP位址。

要以root使用者登入Linux系統

檢視ftp服務的狀态:service vsftpd status

啟動ftp服務:service vsftpd start

停止ftp服務:service vsftpd stop

ftp服務中可以使用的指令    

在ftp中,可以使用一些Linux指令,如ls和cd,ftp還有自己的一些指令,如lcd、put、get等,退出ftp使用bye或quit指令

ftp有兩種傳輸檔案的模式:

一種是傳輸純文字檔案的ASCII模式,ascii指令切換到ASCII模式

另一種是傳輸二進制檔案的bin模式,bin指令切換到二進制模式

prompt指令在互動提示資訊的開啟和關閉之間進行切換

put将一個檔案由本地系統發送到遠端系統

mput将多個檔案由本地系統發送到遠端

get将遠端系統上的一個檔案傳輸到本地

mget将遠端系統上多個檔案傳輸到本地

與微軟系統不同的是,在Linux或UNIX系統中檔案的擴充名(即字尾)并不代表檔案的類型,擴充名與檔案的類型沒有關系。在操作一個檔案之前必須先确定其檔案類型。file指令确定一個檔案的類型,在Linux系統中,檔案的類型可以是正文、目錄、可執行檔案和符号連結等。

cat [options] [files]

option為選項

files為一個或多個檔案

cat &gt; 檔案名:建立一個新檔案

鍵盤上的輸入即為檔案的内容

按Ctrl + D鍵儲存檔案并退出cat程式

不要使用cat指令浏覽二進制檔案,否則可能會造成終端視窗突然停止工作。如果發生了這種情況,可以關閉該終端視窗,之後再開啟一個新的終端視窗

cat指令中常用選項如下:

-A選項 ~ 顯示特殊字元,如^M$

-s選項 ~ 将兩個或更多個相鄰的空格合并成一個空行

-b選項 ~ 在顯示的每一行的最前面放上行号

-n選項:改變顯示的行數

其顯示的行數從檔案開始處算起

在計算行數時以換行字元為标準

--line選項的功能與-n相同

可以省略-n或--line選項而直接在"-"之後使用數字

-n選項:顯示從檔案末尾算起的n行

+n選項:顯示從檔案的第n行算起到檔案結尾的内容

-f選項:顯示正文檔案所發生的變化

--follow選項的功能與-f相同。

tail -f /var/log/messages

    wc -options 檔案名

    -options為選項,可以使用的選項為:

-l:僅僅顯示行數

-w:僅顯示單詞數

-c:僅顯示字元數

帶有-l選項的wc指令可擷取系統上的使用者總數。

more ~ 分屏顯示檔案的内容,當進入more指令之後,每次在螢幕上顯示一屏的檔案内容,并且在螢幕上的底部将會出現“--More--(n%)”的資訊。其中,n%是已經顯示檔案内容的百分比,此時可以使用鍵盤上的鍵進行操作。在Linux上有一個與more類似的指令less,less更友善、靈活,但不少Linux上沒有。

more中經常使用的鍵如下:

        空格鍵:向前(向下)移動一個螢幕

        Enter鍵:一次移動一行

        b:顯示一個幫助菜單

        /字元串:向前搜尋這個字元串

        n:發現這個字元串的下一個出現

        q:退出more指令并傳回作業系統提示符下。

        v:在目前行啟動/usr/bin/vi

 在一個硬碟可以使用之前,要進行如下準備:

将該硬碟劃分為一個或數個分區

每一個分區格式化為檔案系統

将一個分區格式化為檔案系統就是:将該分區分成許多大小相等的小單元,并将這些小單元順序地編号。這些小單元就被稱為塊(block),Linux預設的block大小為4KB。block是存儲資料的最小機關,每個block最多隻能存儲一個檔案,一個檔案超過4KB就會占用多個block。

i節點是一個資料結構,它存放了有關一個普通檔案、目錄或其他檔案系統對象的基本資訊

當一個磁盤被格式化成檔案系統時,系統将自動生成一個i節點表,在該清單中包含了所有檔案的中繼資料的一個清單

i節點的數量決定了在這個分區中最多可以存儲多少個檔案,因為每一個檔案和目錄都會對應于一個唯一的i節點,而這個i節點是使用一個i節點号來識别的

在多數類型的檔案系統中,i節點的數目是固定的,并且在建立檔案系統時生成

在一個典型的UNIX或LInux檔案系統中,i節點所占用的空間大約是整個檔案系統大小的1%

每個i節點由兩部分組成,第1部分是有關檔案的基本資訊,第2部分是隻向存儲檔案資訊的資料塊的指針

每個檔案必須具有一個名字(檔案)并且與一個i節點相關

通常系統通過檔案名可以确定I節點,之後通過i節點中的指針就可以确定i節點,之後通過i節點中的指針就可以定位存儲資料的資料塊

普通檔案可以存儲ACII碼資料、中文字元、二進制資料,資料庫資料(如Oracle)、與應用程式先關的資料等。

Linux檔案操作

引入目錄的目的主要是友善檔案的管理和維護,同時也可以加快檔案或目錄的查詢速度

目錄中并沒有存放其他檔案,其中隻存放了邏輯上能夠在目錄中找到那些檔案的記錄

Linux檔案操作

cp指令如何操作inodes:

複制檔案指令發出時系統要進行如下操作:

找到一個空閑i節點記錄、把新增檔案中繼資料寫入該空閑i節點并将這個新記錄放入inode表中  

還要産生一個目錄記錄、并将新增檔案名對應到這個空的inode号碼  

當做完以上操作之後,系統将檔案的内容複制到新增的檔案中

移動檔案指令發出時系統要進行如下操作:

如果源檔案與移動後的目的位置在同一個檔案系統上:

系統首先産生一個新的目錄、并把新的檔案名對應到源檔案的i節點

删除帶有舊檔案名的原有的目錄記錄

系統除了更新時間戳之外,并沒有真正地移動資料

如果要移動的檔案的源位置與目的是在不同的檔案系統上,mv的行為是複制和删除兩個動作

删除檔案指令發出時系統進行如下操作:

系統首先會将該檔案的連接配接數減1,之後該檔案的連接配接數如果小于1,系統會釋放其1節點以便重用

釋放存儲該檔案内容的資料塊、即将這些資料塊标記為可以使用

删除記錄這個檔案名和i節點号的目錄記錄

系統并未真正地删除這一檔案中的資料,隻有當需要使用這些已經釋放的資料塊時,這些資料塊中原有的資料才會被覆寫掉

符号連接配接是指向兩一個檔案的檔案

它隻能包含一種類型的資料-------包含了它所指向的檔案的路徑

符号連接配接可以指向其他檔案系統上的檔案

使用帶有-l選項的ls指令列出符号連接配接

軟連接配接的工作原理為:

使用帶有-i選項的ls指令列出目前目錄中所有檔案和目錄、其中包含每個檔案和目錄的i節點号

ls -il

符号連接配接占用一個i節點、即軟連接配接也是檔案

Linux檔案操作

建立軟連接配接的指令為:

ln -s 檔案名 [連接配接名]

在in指令中最好使用檔案的絕對路徑

一個硬連接配接是一個檔案名與一個i節點之間的對應關系

每個檔案都至少使用一個硬連接配接、在一個目錄中的每一個記錄都構成了一個硬連接配接

硬連接配接把多個不同的檔案名對應到一個i節點上。

建立硬連接配接的指令:ln 檔案名 [檔案名]。

繼續閱讀