在Linux操作系統(tǒng)中,文件的概念包括文件的組織和管理、操作系統(tǒng)中文件的表示,以及文件存儲(chǔ)的過程等。
一、文件系統(tǒng)結(jié)構(gòu)
Linux文件系統(tǒng)的結(jié)構(gòu)層次鮮明,就像一棵倒立的樹。文件系統(tǒng)結(jié)構(gòu)從一個(gè)主目錄開始,稱為根目錄。根目錄下可以有任意多個(gè)文件和子目錄,并且可以按任意的方式組織在一起。

-
根目錄 /
根目錄位于分層文件系統(tǒng)的最頂層,用斜線 / 表示。它包含一些標(biāo)準(zhǔn)文件和目錄,因此可以說它包含了所有的目錄和文件。
cd / -
bin
也被稱為二進(jìn)制目錄,包含了系統(tǒng)管理員和普通用戶使用的重要的Linux命令的二進(jìn)制(可執(zhí)行)程序。
cd /bin -
lib
存放重要的庫文件,其他的庫文件則大部分存儲(chǔ)在/usr/lib下。
cd /lib -
home
存放所有普通系統(tǒng)用戶的默認(rèn)工作目錄(用戶主目錄)。
cd /home -
root
大多數(shù)Linux系統(tǒng)中,/root目錄是系統(tǒng)管理員的目錄,普通用戶沒有權(quán)限訪問/root目錄。 -
tmp
存放臨時(shí)性的文件
cd /tmp -
usr
它是Linux文件系統(tǒng)中最大的目錄之一,存放了可以在不同主機(jī)間共享的只讀數(shù)據(jù)。
cd /usr
二、基本操作
熟悉了文件的系統(tǒng)結(jié)構(gòu),下面將詳細(xì)介紹一下在Linux系統(tǒng)中文件目錄的表示方法以及一些基本的操作命令。
1、文件或目錄的表示方法
Linux下的文件或者目錄通過路徑來表示,路徑有兩種表示方式:
- 絕對路徑:從根目錄開始。
- 相對路徑:從當(dāng)前工作目錄開始。
當(dāng)用戶登錄Linux或者在Ubuntu上打開一個(gè)終端后,首先進(jìn)入一個(gè)特殊目錄,稱為“用戶主目錄”。Linux規(guī)定可以用符號(hào)“~”表示當(dāng)前登錄用戶的“用戶主目錄”。當(dāng)前工作目錄可以用“.”表示,當(dāng)前工作目錄的父目錄可以用“..”表示。
2、命令
下面介紹Linux下目錄操作和文件操作命令的使用,包括目錄創(chuàng)建、刪除和查看,以及文件的查看、復(fù)制、刪除和比較等。這些操作都是文件的基本操作,掌握它們有助于快速管理文件系統(tǒng)。
2.1 查看當(dāng)前所在目錄的絕對路徑 pwd
使用pwd命令可以確定當(dāng)前所在目錄的絕對路徑。
xuqing@master: ~ $ pwd
執(zhí)行此命令的輸出結(jié)果為"/home/xuqing",這也是當(dāng)前用戶的主目錄。
2.2 創(chuàng)建新目錄 mkdir
用mkdir命令創(chuàng)建一個(gè)新目錄,注意是新建目錄而不是文檔,其語法格式如下:
mkdir [選項(xiàng)] <目錄名>
- -m,對新建的目錄設(shè)置權(quán)限
-
-p,創(chuàng)建存在中間路徑的目錄
例如:創(chuàng)建一個(gè)目錄名為information的目錄
mkdir information
例如:若需要在information目錄下創(chuàng)建A,在A目錄下創(chuàng)建B,可執(zhí)行下列命令。
mkdir information/A/B -p
2.2.1 創(chuàng)建文件
- touch file創(chuàng)建文件或者是可以改變文件的修改時(shí)間
2.3 改變目錄 cd
cd命令用于改變目錄,其語法格式如下:
cd [目錄名]
- cd,進(jìn)入用戶主目錄;
- cd ~,進(jìn)入用戶主目錄;
- cd -,返回進(jìn)入此目錄之前所在的目錄;
- cd ..,返回上級(jí)目錄;
- cd ../,返回上級(jí)目錄;
2.4 列目錄內(nèi)容 ls
ls命令的語法格式如下:
ls [選項(xiàng)] [目錄或文件]
- -a,顯示指定目錄下的所有子目錄與文件,包括隱藏文件;
- -l,采用長格式來顯示文件的詳細(xì)信息;
- -r,將目錄的內(nèi)容清單以字母順序的逆序顯示;
- -R,將目標(biāo)目錄以及子目錄都顯示出來;
-
-t,按時(shí)間信息排序;
ls -l /usr
顯示結(jié)果如下:
drwxr-xr-x 2 xuqing xuqing 4096 Dec 8 23:18 Documents
drwxr-xr-x:文件屬性,第一位是文件類型,d表示目錄文件,-表示普通文件,剩下9位為文件權(quán)限;
2:連接數(shù);
xuqing:所有者;
xuqing:所有者所在的組;
4096:文件字節(jié)大小;
Dec 8 23:18:最近一次修改時(shí)間;
Documents:文件名;
2.5 列目錄內(nèi)容 ll
ll命令能以長格式的方式顯示所有文件。
2.5.1 查看文件完整內(nèi)容 cat
cat命令用于查看完整的文件內(nèi)容,注意cat命令是針對的文檔,這個(gè)要跟目錄區(qū)分開來,其語法格式如下:
cat [option] <file>
- -E,在每一行的末尾顯示符號(hào)$;
- -n,顯示每一行的行號(hào),包括空行;
-
-b,顯示每一行的行號(hào),不包括空行;
cat -n /etc/passwd
2.5.2 查看多于一頁的文件內(nèi)容 more 或 less
命令more或less來分頁顯示文件,其中more的語法格式如下:
more [option] <file>
- +number,從第number行開始顯示內(nèi)容;
- -number,指定每屏幕要顯示number行;
- -s,把重復(fù)的空行壓縮成一個(gè)空行;
-
-p,不以卷動(dòng)的方式顯示每一頁,而是先清除整個(gè)屏幕再顯示文本;
按空格鍵顯示文件下一頁,按Enter鍵顯示文件下一行,按q鍵可以退出命令回到Shell。
命令less具有more沒有的功能,因此效率會(huì)更高,其語法格式如下:
less [option] <file> - -N,顯示行號(hào);
-
-pwant,在文件中查找匹配want的第一處位置,此命令也可以直接用"/want"來替代;
例如:分頁顯示/etc/passwd文件內(nèi)容,并查找字符串“xuqing”的第一處位置。
less -pxuqing /etc/passwd
2.5.3 head命令
head命令用于查看文件頭部內(nèi)容,其語法格式如下:
head [option] <file>
-
-number,顯示開始的number行,若不使用該選項(xiàng),默認(rèn)是10行。
例如:查看/etc/passwd文件中的前5行內(nèi)容。
head -5 /etc/passwd
2.5.4 tail命令
tail命令用于查看文件尾部的內(nèi)容,用法跟head類似,其語法格式如下:
tail [option] <file>
- -n,表示顯示文件的最后n行;
-
-c n,表示輸出最后n個(gè)字節(jié);
例如:輸出/etc/passwd文件的最后40個(gè)字節(jié)。
tail -c 40 /etc/passwd
2.6 查看文件大小 du
du命令可以查看文件或者目錄的大小,其語法格式如下:
du [option] <file>
- -a,對涉及到的所有文件進(jìn)行統(tǒng)計(jì),而不只是包含子目錄;
- -h,自動(dòng)以合適的單位輸出文件的大小;
- -b,輸出以字節(jié)為單位的文件的大??;
- -k,輸出以1024字節(jié)為計(jì)數(shù)單位的文件的大??;
- -m,輸出以兆字節(jié)的塊為計(jì)數(shù)單位的文件的大??;
-
-c,給出總計(jì);
例如:以1024字節(jié)為計(jì)數(shù)單位查看文件/usr的大小。
du -k /usr
2.6.1 查看磁盤大小 df
- -k,以kbytes為單位顯示;
- -l,只顯示本地磁盤;
2.7 文件復(fù)制 cp
cp命令是復(fù)制命令,其語法格式如下:
cp [option] <file1> <file2>
- -i,如果目的文件存在,會(huì)在覆蓋前提示;
- -p,保留文件的權(quán)限屬性和修改時(shí)間;
-
-r,遞歸復(fù)制目錄(包括目標(biāo)文件的子目錄);
file1,是被復(fù)制的文件;
file2,是要復(fù)制到的文件或目錄;
例如:如下的兩個(gè)命令。
cp -i /usr/bin/ldd ~
cp -r /usr/bin information
2.8 文件移動(dòng)或重命名 mv
mv命令可以實(shí)現(xiàn)轉(zhuǎn)移文件和重命名文件,其語法格式如下:
mv [option] <file1> <file2>
- -f,在覆蓋目的文件前永不提示用戶;
-
-i,在覆蓋目的文件前提示用戶;
file1,要轉(zhuǎn)移的文件;
file2,要轉(zhuǎn)移到的位置;
例如:在當(dāng)前用戶主目錄下的ldd文件轉(zhuǎn)移到information目錄下,并且修改名為ldd.exe。
mv ldd information/ldd.exe
2.9 文件刪除 rm
刪除文件的命令是rm,其語法格式如下:
rm [option] <file>
- -r,遞歸地刪除目錄中的內(nèi)容及目錄本身;
-
-i,在刪除文件列表中的文件前給出提示;
文件列表,可以是多個(gè)文件,不同文件之間由空格分開;
rm -r information
2.10 比較文件 diff
Linux中,diff命令用來比較兩個(gè)文件的內(nèi)容,通過把其中一個(gè)文件轉(zhuǎn)換成另一個(gè)文件的命令形式來顯示這兩個(gè)文件之間的區(qū)別,其語法格式如下:
diff [option] [file1] [file2]
- -b,忽視行尾的空,把空白字符串當(dāng)做相同的字符串來處理;
-
-h,快速比較;
使用這個(gè)指令可以將file1轉(zhuǎn)換成file2,所以diff的操作對象是file1,實(shí)質(zhì)上,diff命令在執(zhí)行時(shí),一行一行地比較兩個(gè)文件的內(nèi)容,并以命令的形式顯示它們之間的區(qū)別。如果兩個(gè)文件相同,diff命令不會(huì)產(chǎn)生任何輸出,否則它會(huì)產(chǎn)生一系列指令,這些指令是a(增加)、c(替換)、d(刪除)。這些指令以及意義如下: - 1a2,3,將file2的第2行到第3行添加到file1的第一行后面;
- 1c1,將file1的第一行用file2的第二行替代;
- 16,17d15,將file1的第16、17行刪除;
2.11 刪除重復(fù)行 uniq
用命令uniq刪除文件中所有連續(xù)的重復(fù)行(連續(xù)出現(xiàn)才被稱為重復(fù)行,不連續(xù)行出現(xiàn)不被認(rèn)為是重復(fù)行),只留下一行。該命令不改變文件的內(nèi)容,只是把結(jié)果輸出到屏幕或者文件中,其語法格式如下:
uniq [option] [input-file] [output-file]
- -c,在每行之前顯示它們出現(xiàn)的次數(shù);
- -d,只顯示重復(fù)行;
-
-u,只顯示未重復(fù)行;
例如:顯示abc文件中的重復(fù)信息,將結(jié)果輸出到屏幕上;將結(jié)果輸出到ABC文件中。
uniq -d abc ABC
3、訪問權(quán)限
所謂文件安全,也就是常說的文件保護(hù)。文件保護(hù)分為基于密碼的文件保護(hù)、基于文本加密的文件保護(hù)和基于訪問權(quán)限的文件保護(hù)。我們主要討論基于訪問權(quán)限的文件保護(hù)。
3.1 訪問權(quán)限的分類和用戶類別
在Linux中每一個(gè)文件或目錄都包含有訪問權(quán)限。
訪問權(quán)限的分類:可讀(r)、可寫(w)、可執(zhí)行(x)三種。
-
訪問權(quán)限的用戶類別:文件所有者、同組用戶、其他用戶。
xuqing@master:~ $ ls -l /usr drwxr-xr-x 2 xuqing xuqing 4096 Dec 8 23:18 Documentsdrwxr-xr-x:訪問權(quán)限一共10個(gè)字符,其中d表示文件類型,rwx表示用戶所有者的權(quán)限,r-x表示同組用戶,r-x表示其他用戶。
3.2 訪問權(quán)限設(shè)置
在Linux中,可以使用命令chmod來改變文件或目錄的訪問權(quán)限,其語法格式如下:
chmod [option] [mode] <file>
- -v,顯示權(quán)限變更的詳細(xì)資料;
- -R,對目前目錄下的所有檔案與子目錄進(jìn)行相同的權(quán)限變更(即以遞歸的方式逐個(gè)變更);
mode,是權(quán)限標(biāo)記,可以有符號(hào)標(biāo)記和八進(jìn)制數(shù)兩種格式。由[who][operator][permission]三部分組成。
(1) 符號(hào)標(biāo)記法修改權(quán)限
[who]
- u,表示“用戶(user)”,即文件或目錄的所有者;
- g,表示“同組用戶(group)”,即與文件所有者同組的所有者;
- o,表示“其他用戶(other)”;
-
a,表示“所有用戶(all)”,它是系統(tǒng)默認(rèn)值;
[operator] - +,添加某個(gè)權(quán)限;
- -,取消某個(gè)權(quán)限;
-
=,賦予給定權(quán)限并取消其他權(quán)限,即設(shè)定唯一的權(quán)限;
[permission] - r,可讀;
- w,可寫;
-
x,可執(zhí)行;
例如:要修改當(dāng)前目錄下的abn文件的權(quán)限,使其他用戶沒有讀、寫、執(zhí)行權(quán)限;修改當(dāng)前目錄下的abn文件的權(quán)限,使得同組用戶只有只讀權(quán)限;將當(dāng)前test目錄下的所有文件及子目錄全部去掉寫權(quán)限。
chmod o-rwx abn
chmod g=r abn
chmod -R a-w test
(2) 八進(jìn)制數(shù)法修改權(quán)限
使用八進(jìn)制數(shù)法修改權(quán)限
chmod命令中的mode用三個(gè)八進(jìn)制abc表示,其中:
- a,表示用戶(user)權(quán)限;
- b,表示同組(group)用戶權(quán)限;
-
c,表示其他(other)用戶的權(quán)限;
而八進(jìn)制數(shù)是4(可讀)、2(可寫)、1(可執(zhí)行)的組合,因此, - rwx,則4+2+1=7;
- rw-,則4+2=6;
-
r-x,則4+1=5;
例如:要修改當(dāng)前目錄下的abn文件的權(quán)限,用戶具有讀、寫、執(zhí)行權(quán)限,同組用戶和其他用戶具有讀和執(zhí)行權(quán)限。
chmod 755 abn
4、高級(jí)處理
下面將介紹一些高級(jí)的文件處理操作,包括正則表達(dá)式、文件查找、文件壓縮與解壓、文件備份與還原等。
4.1 正則表達(dá)式
正則表達(dá)式,又稱規(guī)則表達(dá)式(Regular Expression)。在代碼中常簡寫為regex、regexp或RE),計(jì)算機(jī)科學(xué)的一個(gè)概念。正則表達(dá)式描述了一種字符串匹配的模式,可以用來檢查一個(gè)串是否含有某種子串、將匹配的子串做替換或者從某個(gè)串中取出符合某個(gè)條件的子串等。正則表達(dá)式的部分操作符及其含義。
- ^,匹配輸入字符串開始的位置?!癪st”匹配以st開始的行
- ****,匹配輸入字符串結(jié)尾的位置。“st”匹配以st結(jié)尾的行
- ※, 匹配零次或多次前面的字符或表達(dá)式?!皕o*”匹配“z”和“zo”
- +,一次或多次匹配前面的字符或表達(dá)式。“zo+”匹配“zo”和“zoo”
- =,前一項(xiàng)可有可無
- \ |,多選一
- ?,零次或一次匹配前面的字符或表達(dá)式?!癲o?”匹配“do”或者“does”中的“do”
- {n},n是非負(fù)整數(shù),正好匹配n次?!皁{2}”與“Bob”中的“o”不匹配,但與“food”中的“oo”匹配
- {n,m},m n是非負(fù)整數(shù),n=<m,匹配至少n次,至多m次。“o{1,3}”匹配“foooood”中的前三個(gè)“o”
- x|y,匹配x或y。“z|food”匹配“z”或“food”,“(z|f)ood”匹配“zood”或“food”
- [a-z],字符范圍,匹配指定范圍內(nèi)的任何字符。“[a-z]”匹配“a”到“z”范圍內(nèi)任何小寫字母
- [^a-z],反向字母范圍,匹配不在指定范圍內(nèi)的任何字符。
- \b,匹配一個(gè)字邊界?!癳r\b”匹配“never”中的“er”,但不匹配“verb”中的“er”
- \B,非字邊界匹配?!癳r\B”匹配“verb”中的“er”,但不匹配“never”中的“er”
- \f,換頁符匹配。
- \d,數(shù)字字符匹配,等效于[0-9]。
- \D,非數(shù)字字符匹配,等效于[^0-9]。
- \n,換行匹配。
- \r,匹配一個(gè)回車符。
- \s,匹配任何空白字符,包括空格、制表符、換頁符等。
- \t,制表符匹配。
- \w,匹配任何字類字符。
- \W,匹配任何非字類字符。
4.2 文件內(nèi)容的查找
搜索文件內(nèi)容的命令有g(shù)rep、egrep和fgrep。三個(gè)命令中,fgrep命令是執(zhí)行速度最快的,不過有較多的限制;egrep是最慢的,但卻是最靈活的,完全支持正則表達(dá)式;grep具有合理的速度和部分正則表達(dá)式支持。
4.2.1 grep、egrep、fgrep命令
三種命令的語法格式如下:
grep [option] [mode] [file]
egrep [option] [mode] [file] 等價(jià)于grep -E
fgrep [option] [mode] [file]等價(jià)于grep -F
- -c,顯示匹配的行數(shù);
- -w,把表達(dá)式作為詞來尋找;
- -l,只列出行所在文件名;
- -n,顯示匹配內(nèi)容所在文檔的行號(hào);
- -i,匹配時(shí)忽略大小寫;
- -v,輸出不匹配內(nèi)容;
-
-x,只選擇能匹配完整一行的匹配;
[mode]是要搜索文件的類型,指字符串或是表達(dá)式。常用的正則表達(dá)式操作符有: - ^,$,匹配字符串在行首,行尾;
- <,匹配表達(dá)式的開始;<man匹配manic、man
- >,匹配表達(dá)式的結(jié)尾;>man匹配batman、man
- ※,匹配零個(gè)或多個(gè)字符;man*匹配manic、Batman、man
- [ ],單個(gè)字符;
- [-],范圍;
4.2.2 關(guān)于引號(hào)的使用
-
當(dāng)抓取的是一個(gè)不包含空格的簡單字符時(shí),既可以使用單引號(hào)也可以使用雙引號(hào),或者甚至不使用引號(hào)。
grep hello abn grep 'hello' abn grep "hello" abn
三者是等價(jià)的。
-
當(dāng)抓取的字符串包含空格時(shí),需要使用單引號(hào)或者雙引號(hào)。
grep 'hello ok' abn grep "hello ok" abn
兩者是等價(jià)的。
-
當(dāng)抓取含有正則表達(dá)式的操作符時(shí),具體情況具體分析。
grep '$hello' abn grep "$hello" abn grep $hello abn
第一條:查找abn文件中含有$hello字符串的行;
第二和第三條:查找abn文件中包含變量hello所代表的內(nèi)容行;
4.2.3 應(yīng)用實(shí)例
使用grep命令將stdio.h文件中包含字符串“include”的行都顯示出來;
使用grep命令查找以字符串“#ifndef”開頭的行;
使用grep命令搜索/usr/include目錄下以.h為擴(kuò)展名的文件且包含stdio.h的行;
grep -n 'include' stdio.h
grep '^#ifndef' /usr/include/stdio.h
grep 'stdio.h' /usr/include/*.h
5、文件查找
在Linux中,用find命令查找文件,其語法格式:
find [file] [option] [pathname]
- -name,按照文件名查找文件;
- -perm,按照文件權(quán)限查找文件;
- -user,按照文件所有者查找文件;
- -group,按照文件所屬的組查找文件;
- -mtime -n +n,按照文件的更改時(shí)間查找文件,-n表示文件更改時(shí)間距現(xiàn)在n天以內(nèi),+n表示文件更改時(shí)間距現(xiàn)在n天以前;
- -amin n,查找系統(tǒng)中最后n分鐘訪問的文件;
- -cmin n,查找系統(tǒng)中最后n分鐘改變文件狀態(tài)的文件;
find -name stdio.h /usr/include
6、文件排序
排序是指按照一定的標(biāo)準(zhǔn)對集合里的元素指定順序。Linux中的文件內(nèi)容排序使用sort命令,其語法格式如下:
sort [option] [file]
-b,忽略每行前面開始處的空白字符;
-c,檢查文件是否已經(jīng)按照順序排序;
-d,排序時(shí),除了英文字母、數(shù)字及空格字符外,忽略其他字符;
-f,排序時(shí),忽略大小寫;
-n,依照數(shù)值的大小排序;
-r,以反向的順序來排序;
-
-u,排序輸出時(shí),去掉重復(fù)行;
sort number.txt
7、文件壓縮與解壓縮
在Linux中,利用gzip命令的來壓縮和解壓文件,其語法格式如下:
gzip [option] [file]
-c,將輸出寫到標(biāo)準(zhǔn)輸出上,并保留原有文檔;
-d,將壓縮文件解壓;
-r,遞歸式地查找指定目錄并壓縮或解壓其中所有文件;
-t,測試、檢查壓縮文檔是否完整;
-
-v,對每一個(gè)壓縮和解壓縮的文件顯示文件名和壓縮比;
gzip -r ztest gzip -rd ztest
8、文件備份和還原
在Linux操作系統(tǒng)中,利用tar命令可以將一個(gè)目錄壓縮成一個(gè)普通的文件(稱為檔案文件),需要還原時(shí),可以再次使用tar命令從檔案中釋放文件。
tar命令的語法格式如下:
tar [option] [file]
-c,創(chuàng)建新的檔案文件。如果用戶想備份一個(gè)目錄或文件就要使用這個(gè)選項(xiàng);
-r,把要存檔的文件追加到檔案的末尾。例如用戶已經(jīng)做好備份文件,又發(fā)現(xiàn)還有一個(gè)目錄或一個(gè)文件忘記備份了,此時(shí)可以選擇這個(gè)選項(xiàng),將忘記的目錄或者文件追加到檔案文件中;
-t,列出檔案文件的內(nèi)容,查看已經(jīng)備份了哪些文件;
-u,更新文件。即用新增的文件取代原來備份的文件,如果在檔案文件中找不到要更新的文件,則把它追加到檔案文件的最后;
-x,從檔案文件中釋放文件;
-f,指定要使用的文件夾名,這個(gè)選項(xiàng)通常是必選項(xiàng),選項(xiàng)后面要有文件名;
-v,詳細(xì)報(bào)告tar命令處理的文件信息;
-
-z,用gzip來解壓/壓縮文件,此選項(xiàng)可以實(shí)現(xiàn)同樣的操作,但注意如果壓縮時(shí)使用該選項(xiàng),則解壓時(shí)也同樣使用該選項(xiàng);
例如:將ztest目錄做成檔案文件,備份文件、文件還原、壓縮備份文件、還原解壓文件;tar -cvf ztest.tar ztest tar -xvf ztest.tar tar -cvzf ztest.tar.gz ztest tar -xvzf ztest.tar.gz
注意:-f后面必須要緊跟要使用的文件夾名;-xz表示還原解壓。
9、文件補(bǔ)丁的制作
在開發(fā)過程中,當(dāng)程序發(fā)布以后,難免要對源代碼進(jìn)行修改升級(jí)。在Linux上可以很方便地制作源碼補(bǔ)丁,然后將補(bǔ)丁發(fā)給用戶,由用戶進(jìn)行打補(bǔ)丁和重新編譯程序,從而實(shí)現(xiàn)程序的升級(jí)。
制作補(bǔ)丁文件可以使用diff命令;打補(bǔ)丁可以使用另一個(gè)命令patch。
9.1 補(bǔ)丁制作
diff命令可以完成比較功能,生成補(bǔ)丁文件。其語法格式如下:
diff [option] <oldfile> <newfile> > <patchfile>
-r,對目錄進(jìn)行遞歸比較;
-u,輸出統(tǒng)一格式;
-N,比較目錄時(shí),若一個(gè)目錄或文件缺失,則視之為空文件;
-
-a,將所有文件視為文本文件,逐行比較;
>,重定向操作符,將diff的輸出結(jié)果輸出到patchfile;diff -u t.old t.new > t.patch
9.2 打補(bǔ)丁
打補(bǔ)丁時(shí)使用patch命令,該命令就是利用diff制作的補(bǔ)丁文件實(shí)現(xiàn)源文件和目標(biāo)文件的轉(zhuǎn)換。patch命令的語法格式如下:
patch [option] [源文件 [補(bǔ)丁文件]]
使用-u選項(xiàng)制作補(bǔ)丁后,補(bǔ)丁文件中含有舊文件和新文件的信息,因此可以使用如下格式:
patch [option] < [補(bǔ)丁文件]
此格式要求運(yùn)行patch所在的目錄跟diff生成補(bǔ)丁時(shí)的目錄一致。
-p0,從當(dāng)前目錄查找源文件;
-p1,忽略第一層目錄,從當(dāng)前目錄開始查找源文件;
-
-E,如果發(fā)現(xiàn)空文件,則刪除它;
patch -p0 < t.patch
附:
- Ctrl+c可以強(qiáng)制結(jié)束Linux命令
- ln創(chuàng)建文件鏈接,格式:ln [-s] /tmp/test/readme.txt /tmp/readme.lnk。創(chuàng)建文件/tmp/test/readme.txt的鏈接/tmp/readme.lnk
- file file,查詢文件類型
1、which command
在環(huán)境變量PATH的范圍內(nèi)查找命令command,顯示命令的路徑或alias。
2、whereis command
在標(biāo)準(zhǔn)路徑中查找一個(gè)命令的二進(jìn)制碼、源碼及聯(lián)機(jī)手冊所在的位置。
-
awk:如果要格式化報(bào)文或者從一個(gè)大的文本文件中抽取數(shù)據(jù)包,相比于屏幕處理的優(yōu)點(diǎn)在處理龐大文件時(shí)不會(huì)出現(xiàn)內(nèi)存溢出揮著處理緩慢的問題。依次對每一行進(jìn)行處理,然后輸出。
命令的形式:awk [-F|-f|-v] ‘ ’ file
1、[-F|-f|-v] 大參數(shù),-F指定分隔符,-f調(diào)用腳本,-v定義變量 var=value
2、''引用代碼塊
例:
awk '{print}' /etc/passwd == awk '{print 0}' /etc/passwd //表示整行
awk -F: '{print $6}' OFS="\t" /etc/passwd //輸出字段6,以制表符作為分隔符
-
sed:用來自動(dòng)編輯一個(gè)或多個(gè)文件;簡化對文件的反復(fù)操作,編寫轉(zhuǎn)換程序等。
命令的形式:sed [-option] '' file:file 必須是文本文件
例:
sed -e 4a\newline file:在file的第四行后加入newline,-e表示按照表達(dá)式4a\newline操作。
cat -n /etc/passwd | sed -n '5,7p':利用管道操作,只打印5-7行的內(nèi)容,-n表示只對操作行進(jìn)行操作
cat -n /etc/passwd | sed -n '2i xuqing': 在第二行前加入xuqing
cat -n /etc/passwd | sed -n '2a xuqing': 在第二行后加入xuqing
需要特別注意:以上的這些操作都是默認(rèn)的標(biāo)準(zhǔn)輸出即顯示器,并沒有改變文件的內(nèi)容,但是實(shí)際的操作中我們有時(shí)需要對大量的文件做修改,這時(shí)需要我們修改文件的內(nèi)容,那我們又該怎么做呢?下面的兩個(gè)例子將解決這個(gè)問題。
例:
sed -i ‘$a #This is a test’ file:在文件的最后一句話上面添加#This is a test
sed -i 's/./!/g' file:將所有以.結(jié)尾換成!