Linux下進(jìn)行操作,與文件打交道是常用的操作,這一節(jié)要學(xué)習(xí)的是Linux下的文件操作
1.mkdir 命令
用于創(chuàng)建一個(gè)目錄。是make directory的縮寫(xiě)。其命令格式:
mkdir [選項(xiàng)] 目錄名
| 選 項(xiàng) | 說(shuō) 明 |
|---|---|
| -m | 對(duì)新建目錄設(shè)置存取權(quán)限 |
| -p | 可以指定一個(gè)路徑名,此時(shí),若路徑中的某些目錄尚不存在,用此選項(xiàng)后,系統(tǒng)會(huì)自動(dòng)創(chuàng)建那些尚不存在的目錄,也就說(shuō),一次可以創(chuàng)建多個(gè)目錄 |
2.more 命令
如果一個(gè)文本文件太長(zhǎng),一屏不能顯示完全,就需要使用more命令。more命令讀取文本文件時(shí),每次顯示一屏,并且在每屏后暫停,同時(shí)在屏幕底部顯示單詞“more”。如果此時(shí)按ENTER鍵,會(huì)接著顯示文本的另一行,如果按空格鍵,就會(huì)顯示文本文件的下一屏信息。格式如下:
more [選項(xiàng)] 文件名
| 選 項(xiàng) | 說(shuō) 明 |
|---|---|
| -d | 在屏幕底部more提示符后顯示友好信息,此信息是顯示有關(guān)哪些鍵繼續(xù),哪些鍵退出,哪些鍵幫助等 |
| -s | 將輸出文件的多個(gè)空行減少為一個(gè)空行輸出。以文件的第一行為準(zhǔn) |
| -p | 清楚屏幕以前的信息,再顯示文本信息 |
| -c | 顯示問(wèn)件時(shí),沒(méi)屏顯示都清楚屏幕先前的信息然后從最頂端顯示出來(lái) |
> more tomcat.log //以分屏展示信息
> more -c -10 tomcat.log //顯示tomcat.log文件內(nèi)容,每10行顯示一屏,同時(shí)清除屏幕。
3.cat 命令
可以用來(lái)將文件的內(nèi)容輸出到標(biāo)準(zhǔn)輸出,同時(shí)cat還可以用于連接合并文件。格式如下:
cat [選項(xiàng)] 文件名
或者
cat file1 file2 >file
| 選 項(xiàng) | 說(shuō) 明 |
|---|---|
| -A | 將文件的制表符顯示問(wèn)“^I”,同時(shí)在每行的末尾顯示“$”符號(hào) |
| -b | 將文件所有非空行按順序編號(hào),編號(hào)從1開(kāi)始 |
4.diff 命令
用來(lái)比較文件的差異。diff以逐行的形式比較文件的異同,如果指定比較的是目錄,則只會(huì)比較目錄下相同文件名的文件,不會(huì)比較其子目錄。格式如下:
diff [選項(xiàng)] file1 file2
| 選 項(xiàng) | 說(shuō) 明 |
|---|---|
| -c | 顯示全部?jī)?nèi)容,并標(biāo)出不同之處 |
| -b | 忽略行尾空格,同時(shí)字符串中的一個(gè)或多個(gè)空格都將視為相同 |
| -r | 當(dāng)file1、file2為目錄時(shí),比較子目錄中的文件 |
| -s | 兩個(gè)文件相同時(shí),顯示文件的相同信息 |
5.grep 命令
文本過(guò)濾工具,根據(jù)指定的字符串,對(duì)文件的每一行進(jìn)行搜索,如果找到了這個(gè)字符串,就輸出該行的內(nèi)容。格式如下:
grep [選項(xiàng)] 需要查找的字符串文件名
| 選 項(xiàng) | 說(shuō) 明 |
|---|---|
| -c | 只顯示符合條件的行數(shù),不顯示每行的具體信息 |
| -i | 搜索時(shí),忽略大小寫(xiě) |
| -n | 搜索結(jié)果中顯示行號(hào) |
| -f file | 事先將要搜索的樣式寫(xiě)進(jìn)一個(gè)文件,每行一個(gè)樣式,然后以這個(gè)文件作為條件進(jìn)行搜索 |
> grep -ni rpm install.log //列出 install.log文件中含有rmp字符串的所有行,忽略大小寫(xiě),并標(biāo)識(shí)具體行號(hào)
6. rm 命令
用來(lái)刪除某個(gè)目錄及其下的所有文件及子目錄。對(duì)于鏈接文件,只是斷開(kāi)了鏈接,原文件保持不變。格式如下:
rm [選項(xiàng)] 文件或目錄
| 選 項(xiàng) | 說(shuō) 明 |
|---|---|
| -r | 告訴rm命令將選項(xiàng)中列出的全部目錄以及子目錄還有文件進(jìn)行遞歸刪除,如果選項(xiàng)中不加入“-r”選項(xiàng),rm命令將不能刪除目錄 |
| -f | 忽略不存在的問(wèn)題,也不給提示 |
| -i | 交互式刪除,在刪除前進(jìn)行確認(rèn) |
注意,rm -rf 組合要慎用,多用 rm -i 進(jìn)行交互式刪除。
7.touch 命令
用來(lái)修改指定文件的訪問(wèn)時(shí)間和修改時(shí)間,若指定文件不存在則創(chuàng)建此文件。如果沒(méi)有指定時(shí)間,則使用當(dāng)前時(shí)間。格式如下:
touch [選項(xiàng)] 設(shè)定的時(shí)間文件
| 選 項(xiàng) | 說(shuō) 明 |
|---|---|
| -a | 改變文件的訪問(wèn)時(shí)間為系統(tǒng)時(shí)間,無(wú)需設(shè)置時(shí)間選項(xiàng) |
| -m | 改變文件的修改時(shí)間為系統(tǒng)時(shí)間,無(wú)需設(shè)置時(shí)間選項(xiàng) |
| -c | 如果文件不存在,不創(chuàng)建也不提示 |
| -d 或 -t | 使用指定的日期或時(shí)間 |
8.ln 命令
用來(lái)在文件或目錄間創(chuàng)建鏈接。
Linux下,鏈接有兩種方式,一種是硬鏈接,另一種是符號(hào)鏈接。默認(rèn)情況下,ln命令產(chǎn)生的是硬鏈接。
- 硬鏈接 :是指通過(guò)文件的inode來(lái)進(jìn)行鏈接。在Linux文件系統(tǒng)中,保存在內(nèi)存中的所有類(lèi)型文件都會(huì)分配一個(gè)編號(hào),這個(gè)編號(hào)被稱為inode號(hào)(Inode Index)。多個(gè)文件指向同一個(gè)Inode在Linux系統(tǒng)中是允許的,這就是所謂的硬鏈接。硬鏈接的作用是允許一個(gè)文件擁有多個(gè)有效的路徑名,這樣用戶就可以對(duì)一些重要文件進(jìn)行硬鏈接,以防止誤刪操作。因?yàn)閷?duì)應(yīng)該文件的inode有一個(gè)以上的鏈接,所以刪除一個(gè)鏈接并不影響inode本身和其他鏈接,只有當(dāng)最后一個(gè)鏈接被刪除后,該文件數(shù)據(jù)塊和目錄的鏈接才會(huì)被釋放,也就是此文件才真正被刪除。
-
符號(hào)鏈接:也叫軟鏈接,類(lèi)似于windows下的快捷方式,因此軟連接是指向真正文件或者目錄位置的符號(hào)鏈接。
格式如下:
ln [選項(xiàng)] 源文件目標(biāo)鏈接名
| 選 項(xiàng) | 說(shuō) 明 |
|---|---|
| -f | 如果在目標(biāo)位置存在與鏈接名相同的文件,這個(gè)文件將被刪除 |
| -s | 進(jìn)行軟鏈接 |
| -d | 允許系統(tǒng)管理員硬鏈接自己的目錄 |
| -b | 對(duì)將在鏈接時(shí)會(huì)被覆蓋或刪除的文件進(jìn)行備份 |

上面的命令首先切換到 /home目錄下,新建了一個(gè)目錄test,然后進(jìn)行l(wèi)n操作,將/home/personal/目錄下的test.txt文件,硬鏈接到剛才創(chuàng)建的/home/test目錄下,此時(shí),該目錄下也產(chǎn)生了一個(gè)test.txt文件,并且文件內(nèi)容一樣。如果你修改任意一個(gè)文件,另外一個(gè)文件也會(huì)變。
9.file 命令
用來(lái)顯示文件的類(lèi)型。對(duì)于長(zhǎng)度為0的文件,將被識(shí)別為空文件;對(duì)于符號(hào)鏈接文件,默認(rèn)情況下將顯示符號(hào)鏈接引用的真是文件路徑。格式如下:
file [選項(xiàng)] 文件名
| 選 項(xiàng) | 說(shuō) 明 |
|---|---|
| -b | 顯示文件類(lèi)型結(jié)果,不顯示對(duì)應(yīng)文件名稱 |
| -L | 直接顯示符號(hào)鏈接所指向文件的類(lèi)型 |
| -z | 顯示壓縮文件的信息 |
| -i | 如果文件不是常規(guī)文件,則不進(jìn)一步對(duì)文件類(lèi)型進(jìn)行分類(lèi) |

10. cp 命令
將給出的文件或 目錄復(fù)制到另一個(gè)文件或是目錄中。格式如下;
cp [選項(xiàng)] 源文件或目錄 目標(biāo)文件或目錄
| 選 項(xiàng) | 說(shuō) 明 |
|---|---|
| -a | 在復(fù)制目錄時(shí)使用。它保留所有的信息,包括文件鏈接、文件屬性,并遞歸的復(fù)制目錄 |
| -r | 若給出的源文件是一目錄文件,此時(shí)cp將遞歸復(fù)制該目錄下所有的子目錄和文件,此時(shí)目標(biāo)文件必須是一個(gè)目錄名 |
| -d | 復(fù)制時(shí)保留鏈接,這樣不會(huì)失去鏈接文件 |
| -p | 保留文件的修改時(shí)間和存儲(chǔ)權(quán)限 |
| -i | 如果已經(jīng)有相同的文件名或目標(biāo)文件,則提示用戶是否覆蓋 |
> cp -r ./* /tmp //將當(dāng)前目錄下的所有文件復(fù)制到tmp目錄下,“./*”表示當(dāng)前目錄下的所有文件及目錄
> cp -r /home/oracle /home/ixdba //將 /home/oracle 目錄下及其子目錄下的所有內(nèi)容復(fù)制到 /home/ixdba 下
11.find 命令
用來(lái)在指定路徑下查找指定文件。格式如下:
find path-name[-options] [-print -exec -ok命令 {} \;]
- path-name:find命令查找的目錄路徑,例如,可以用“.”表示當(dāng)前目錄,“/”表示系統(tǒng)根目錄
- -options:用來(lái)控制搜索的方式。
“-options”常見(jiàn)的幾個(gè)格式:
| 選 項(xiàng) | 說(shuō) 明 |
|---|---|
| -name '字符串' | 查找文件匹配所給字符串的所有文件,字符串可以使用通配符 ?、 []、 * |
| -lname '字符串' | 查找文件匹配所給字符串的所有符號(hào)鏈接文件,字符串可以使用通配符 ?、 []、 * |
| -path '字符串' | 查找路徑名匹配所給字符串的所有文件,字符串可以使用通配符 ?、 []、 * |
| -user '字符串' | 查找用戶名為所給字符串的所有文件 |
| -group '字符串' | 查找用戶組名為所給字符串的所有文件 |
- -print:將搜索結(jié)果輸出到標(biāo)準(zhǔn)輸出
-
-exex:將所搜符合條件的文件執(zhí)行所給出的Linux命令,而不許問(wèn)用戶是否執(zhí)行該命令。{}表示shell命令的選項(xiàng)即為所查找的文件,命令的末尾必須以“;”結(jié)束。
注意:格式要正確,“-exec 命令 {} ;”,“}”與“\”之間一定要有空格。 - -ok:對(duì)搜符合條件的文件執(zhí)行所給出的Linux命令,與“-exex”不同的是,它會(huì)詢問(wèn)用戶是否執(zhí)行該命令。
12.split 命令
用來(lái)分割文檔,將一個(gè)文件分割成數(shù)個(gè)。格式如下:
split [選項(xiàng)] [input_file] [output_file]
| 選 項(xiàng) | 說(shuō) 明 |
|---|---|
| -b size | 制定分割出來(lái)的文件大小,size可以加入單位,b代表512字節(jié),k代表1KB,m代表1MB |
| -n | 分割的每個(gè)文件的長(zhǎng)度,默認(rèn)為1000行 |
| -d | 生成的文件序列以數(shù)字形式命名 |
| -a | 生成的文件序列的長(zhǎng)度,默認(rèn)長(zhǎng)度為2 |
- input_file:要分割的文件
- output_file:分割出來(lái)的文件序列,生產(chǎn)的文件序列名依次是“output_fileaa”、“output_fileab”、“output_fileac”等,如果沒(méi)有制定output_file,系統(tǒng)默認(rèn)以“x”作為輸出文件名。
> split -b 10m access_log access_log_bak //設(shè)定每個(gè)分割文件的大小為10M,執(zhí)行完畢后,生成的文件一次是access_log_bakaa,access_log_bakab等,每個(gè)文件大小是10M
>split -b 2M -d -a 3 /opt/etc.zip /opt/etc_zip_bak //執(zhí)行完畢后,在/opt目錄下生產(chǎn)etc_zip_bak001、etc_zip_bak002、etc_zip_bak3等文件
13.mv 命令
將文件或是目錄改名,或是講文件從一個(gè)目錄移到另一個(gè)目錄下。源文件和目標(biāo)文件,都是文件或是目錄,表示改名。源文件是文件,目標(biāo)文件是目錄,很顯然時(shí)移動(dòng)文件。格式如下:
mv [選項(xiàng)] 源文件或目錄 目標(biāo)文件或目錄
| 選 項(xiàng) | 說(shuō) 明 |
|---|---|
| -i | 交互式操作,在對(duì)已存在的文件或目錄覆蓋時(shí),系統(tǒng)會(huì)詢問(wèn)是否覆蓋,y/n |
| -f | 禁止交互操作,mv指令將要覆蓋文件或目錄時(shí),不給任何提示,默認(rèn)覆蓋 |