1.基本文件管理:
普通文件:
增:touch????
使用格式:#touch???文件名1??文件名2??...?
創(chuàng)建單個文件:?
#touch???file1
創(chuàng)建多個文件: ?
#touch??file2??file3??file4同時創(chuàng)建三個文件??
注意:文件名是可以帶空格的,但是盡量避免這樣的操作???
刪:rm???
使用格式:#rm??文件名1???文件名2??...
刪除單個文件:
#rm??file1??
remove?regular?empty?file?`file1'???Y代表刪除??N不刪除
刪除多個文件:
#rm??file2??file3??file4??
注意:?本身rm并不能交換詢問,是它的一個選項-i導(dǎo)致會詢問
-i:?prompt?before?every?removal
擴展:命令的別名,如果一個命令有別名,會先去引用別名?
查看別名:#alias???
alias?rm='rm?-i'再去使用rm的時候,相當(dāng)于使用了rm?-i???
設(shè)定別名:#alias???別名="命令+[選項]+[參數(shù)]"
???#alias???tom="rm??-i"??
#tom????file1也會將tom當(dāng)作rm?-i去使用?
取消別名:#unalias???別名??
???#unalias???tom????
#alias發(fā)現(xiàn)tom的別名就沒有了?
強制刪除:可以不再交互式詢問
-f:?force強制刪除???
#rm???-f????file1?????
改:
編輯:#vim???文件名????
vim的使用模式:
命令模式:直接使用命令打開的模式
常見的命令:
yy:復(fù)制,?4yy方式,復(fù)制4行????
dd:剪切,?4dd方式,剪切4行
p:粘貼,會將內(nèi)容粘貼到光標(biāo)所在行的下一行?
u:撤銷上一步操作
插入模式:?在命令模式下,按i??a??o??I??A??O中任意一個字符所進入的模式,就是編輯模式,可以任意書寫內(nèi)容
注意:在插入模式下,不能直接進入到末行模式,必須先回到命令模式,按Esc回到命令模式??
末行模式:在命令模式下,按冒號鍵進入的模式
注意:在末行模式,也不能直接進入到插入模式,也需回到命令模式,也是按Esc鍵??
末行功能:??
q:退出??
w:保持??
wq:保持并退出??
q!:強制退出,不保存??
w!:強制保存????
wq!:強制保存,并退出
例:#vim?????file1.txt????
注意:如果文件存在,則直接進行編輯;如果不存在,則先創(chuàng)建,再編輯
復(fù)制:#cp??原文件???目標(biāo)文件???
例:?
#cp???file1.txt???file2.txt???
#cat??file2.txt發(fā)現(xiàn)內(nèi)容和file1.txt一樣???
#ls??-i???
270953?file1.txt??261191?file2.txt兩個文件的inode不一樣
移動、剪切:#mv???原文件???目標(biāo)文件???
#mv???file1.txt???file3.txt???
#cat??file3.txt???
#ls??-i???
270953?file3.txt???file3的inode號,跟原文件file1一樣
在某種層次上,可以把移除,理解成是給文件改名?
查:cat???tac??head????tail???more???less???
正向查看:?會將文件內(nèi)容一次性讀進內(nèi)存進行查看?
#cat文件名???
#cat???/etc/passwd??
-n:顯示行數(shù)??
#cat?-n???/etc/passwd???
反向查看:
#tac文件名???
#tac???/etc/passwd??
查看頭部:
#head文件名??
#head???/etc/passwd默認(rèn)顯示文件的前十行??
#head???-3????/etc/passwd顯示文件的前三行??
查看尾部:?
#tail文件名??
#tail???/etc/passwd顯示尾十行???
#tail??-3??/etc/passwd顯示尾三行??
翻頁查看:向下翻頁
#more文件名?
#more???/etc/passwd?
按回車鍵,向下翻一行;按空格,向下翻一頁;按q退出查看
翻頁查看:上下左右翻頁
#less文件名??
#less???/etc/passwd???
按回車鍵,向下翻一行;按空格,向下翻一頁;按q退出查看;還可以使用上下左右箭頭查看,可以回看?
目錄:
增:mkdir???
創(chuàng)建一個目錄:#mkdir???目錄名???
#mkdir??aa???
創(chuàng)建多個目錄:#mkdir??目錄名1???目錄名2??...
#mkdir??bb???cc???dd??
同時創(chuàng)建多級子目錄:?
#mkdir??-p????ff/fff/ffff/fffff???
刪:rmdir??
刪除一個目錄:#rmdir????目錄名???
#rmdir???aa????
刪除多個目錄:?
#rmdir??bb???cc???dd???
#rmdir???ff???
failed?to?remove?`ff':?Directory?not?empty
默認(rèn)rmdir只能刪除空的目錄?
遞歸刪除:#rm??-r????目錄名????
#rm??-r???ff發(fā)現(xiàn)可以刪除???
改:cp??mv???
復(fù)制:#cp??-r???原目錄???目標(biāo)目錄
#mkdir???-p??a/b/c/d??
#cp???a????h???
#ls???
#ls???-h????
剪切:#mv???原目錄??目標(biāo)目錄?
#mv???a???l????
#ls發(fā)現(xiàn)沒有了a目錄,生成了l目錄??
#ls???-R???l???
查:ls?????
2.擴展查看:file????stat????type?????
file:查看文件內(nèi)容的類型
#file?????/etc/passwd??
ASCII?text純文本的文件,可以直接使用cat等命令查看??
#file????/bin/ls????
64-bit?LSB?executable使用lsb協(xié)議加密的文件,不能使用cat等查看?
#file???/var/lib/mysql/ibdata1????
/var/lib/mysql/ibdata1:?data數(shù)據(jù)庫類型文件,也不能使用cat等查看
stat:查看文件的基本屬性詳細信息
#stat????/etc/passwd???
Access:訪問時間,查看了文件的內(nèi)容,該時間會變
Modify:修改時間,修改了文件的內(nèi)容,該時間會變
Change:改變時間,修改文件的基本屬性,該時間會變
type:查看命令的類型
#type???cd??
cd?is?a?shell?builtin系統(tǒng)內(nèi)建命令,伴隨內(nèi)核而來
#type???chmod???
chmod?is?/bin/chmod外部命令?????
#type???ls????
ls?is?aliased?to?`ls?--color=auto'如過有別名,先顯示別名
which:查看命令的絕對路徑
命令:就是一個文件,文件存放是功能代碼
#which????chmod????
/bin/chmod?????
3.文件的搜索:
locate:是本地數(shù)據(jù)庫中搜索,速度比較快,但不是實時的?
使用格式:#locate?????字符串(string)
注意:locate是對文件名做模糊匹配,只要將來文件中含有該字符串,就會被顯示
例1:?
#locate???ifcfg??
例2:?
#touch????/home/loring/zhangsanfeng.txt?
#locate??zhangsanfeng????
發(fā)現(xiàn)新創(chuàng)建的文件,沒有搜索到???
這是因為,數(shù)據(jù)庫默認(rèn)是每天更新一次,新建立的文件還沒有更新到數(shù)據(jù)
#updatedb手動更新數(shù)據(jù)庫的命令?
#locate?????zhangsanfeng?????
/home/loring/zhangsanfeng.txt
例3:??
#touch????/tmp/zhangwuji.txt
#updatedb?????
#locate????zhangwuji?????
發(fā)現(xiàn)更新了數(shù)據(jù)庫,依然搜索不到??
#vim???/etc/updatedb.conf????
PRUNEPATHS?=?"/afs?/media?/net?/sfs??/tmp"
path:路徑??
在這后面有/tmp的出現(xiàn),那么將來在/tmp中的文件,就不會更新到數(shù)據(jù)庫
如果想讓/tmp目錄中的文件,更新到數(shù)據(jù),將其從paths后刪除即可
#updatedb???
#locate???zhangwuji????
/tmp/zhangwuji.txt
find:是遍歷整個文件系統(tǒng)(目錄),速度較慢,但它是實時的?
使用格式:#find???目錄???選項??選項的參數(shù)
find是按照文件的基本屬性進行搜索的
準(zhǔn)備過程:?
#useradd????loring
#cd???/home/loring???
#touch???a.txt???b.txt???c.txt??????
#mkdir??abc????
#chown???loring????a.txt???
#chown???.loring????b.txt?
#chmod???631??c.txt??
#cp???/var/log/messages???/home/loring?????
按照文件的類型搜索:-type??
#find???/home/loring???-type???f???
代表從/home/loring目錄中進程搜索???
-type:代表按照文件的類型進程搜索??
常見的類型:f普通文件???d目錄??l鏈接文件??b塊設(shè)備??c字符設(shè)備
按照文件的權(quán)限搜索:-perm???????permission??權(quán)限???
#find??/home/loring???-perm???631???
搜索權(quán)限為631的文件??
/home/loring/c.txt
按照文件的所有者搜索:-user???
#find??/home/loring???-user???loring????
搜索所有者為loring的文件???
/home/loring/a.txt
按照文件的所屬組搜索:-group???
#find???/home/loring??-group???loring???
搜索組為loring的文件??
/home/loring/b.txt
按照文件大小搜索:-size????
#find???/home/loring???-size???4k搜索大小等于4k的文件
顯示內(nèi)容:/home/loring/abc
#find???/home/loring???-size???+4k搜索大于4k的文件
顯示內(nèi)容:/home/loring/messages
#find???/home/loring???-size???-4k搜索小于4k的文件??
顯示內(nèi)容:/home/loring/c.txt
??/home/loring/b.txt
??/home/loring/a.txt
#find????/home/loring???-size???+10k????-size??-50k???
搜索大于10k,但是小于50k的文件?
#find???/home/loring??-size????-1k????
#find???/home/loring??-size????-1M????
#find???/home/loring??-size????-1G???
注意:單位前別直接寫-1,-1等于0了??
按照文件名搜索:-name???
#find???/home/loring????-name???c.txt??
顯示/home/loring/c.txt????
#find???/home/loring????-name????c.tx發(fā)現(xiàn)沒有,精確搜索?
文件名通配:?
通配:用一些符號,來代表一類字符
通配符:?
*代表任意多個字符??
?代表任意單個字符??
[]代表要從括號中給定的值,任選一個
按照時間進行搜索:-mtime????-ctime???-atime???-mmin??-cmin???-amin???
-mtime:按照Modify時間進行搜索,單位是天?
-atime:按照access時間進行搜索,單位是天?
-ctime:按照change時間進行搜索,單位是天??
-mmin:按照modify時間進行搜索,單位是分鐘
#find????/home/loring????-mtime?????3??
代表搜索修改時間是在3天前--4天前,一天時間間隔內(nèi)
#find???/home/loring?????-mtime?????+3??
代表修改時間是在4天以前的文件
#find???/home/loring?????-mtime?????-3??
代表修改時間是在3天以內(nèi)的文件?
注意:find搜索文件,多個條件可以同時指定,按要求去做就行
#find???/home/loring??-user??loring??-size??+100k??-mtime??-10?????
4.文件的壓縮和解壓縮、打包:
壓縮和解壓縮:
壓縮:按照一定算法,將文件的內(nèi)容重新排列;也可以理解成是一種加密
解壓:按照壓縮的相同算法,還原以前的排列
壓縮目的:1.節(jié)約磁盤空間???2.節(jié)約網(wǎng)絡(luò)帶寬(文件在互聯(lián)網(wǎng)傳輸,要壓縮)??3.可以保證數(shù)據(jù)的安全??
準(zhǔn)備工作:?
#mkdir???/loring??
#cp???/var/log/messages???/loring/messages??
多復(fù)制幾個文件?
或者:?
#while?true;do?cat?/etc/passwd??>>?/loring/passwd;done???
執(zhí)行一會后,要按ctrl+c結(jié)束?
4.1?zip:
使用格式:#zip???壓縮文件名????文件名1??文件名2?...
注意:zip不僅有壓縮功能,也有打包功能
壓縮:?
例:?
#zip???loring.zip???passwd??passwd1???
注意:1.?loring.zip的壓縮文件名,是自己定義的,必須以.zip結(jié)尾,前面的名稱自定義即可
2.壓縮后,原文件不會丟失
解壓:??
#unzip壓縮文件名???
#unzip????loring.zip????
注意:?解壓后,壓縮文件也不會丟失
在解壓時,指定解壓路徑:
#unzip壓縮文件????-d???解壓路徑
#unzip????loring.zip??-d????/tmp?????
#ls??-lh???/tmp????
會發(fā)現(xiàn)兩個文件:passwd??passwd1?????
壓縮比:??
#zip??tom.zip???passwd2???
adding:?passwd2?(deflated?99%)???
壓縮比=(原文件大小-壓縮后文件大小)/原文件大小?
注意:?壓縮比越大,壓縮后文件就越小,壓縮的時間就越長
???壓縮比越小,壓縮后文件就越大,壓縮的時間越短??
???壓縮比的大小,不是固定的,要看文件的類型和里面的內(nèi)容
壓縮級別:?壓縮級別是固定的,可以影響壓縮比
壓縮級別:1-9一共九個級別,數(shù)字越大,壓縮級別越高??
注意:?壓縮級別越大,壓縮比就越大
???????壓縮級別越小,壓縮比就越小
4.2?gzip??
壓縮:
#gzip原文件名1???原文件名2????
注意:文件是分開壓縮,單獨存放;壓縮文件名是自動生成的
#gzip????/loring/passwd3??
#ls????/loring???
passwd3.gz???
注意:壓縮后,原文件會丟失;壓縮文件名的后綴為.gz????
#file??/loring/passwd3.gz????
解壓縮:?
第一種:?
#gunzip壓縮文件名????
#gunzip???passwd3.gz???
注意:解壓后,壓縮文件也會丟失
第二種:
#gzip???-d壓縮文件名???
#gzip???-d???passwd3.gz???????
-d:????Decompress?,解壓??
不解壓查看:
#zcat壓縮文件名????
#zcat?????passwd3.gz?????
指定壓縮級別:默認(rèn)在6的壓縮級別
#gzip?????-1???passwd4指定壓縮級別為1??
#gzip?????-9???passwd5指定壓縮級別為9???
4.3?bzip2??
壓縮:
#bzip2原文件名????
#bzip2????passwd4?????
#ls???-lh??/loring???
passwd4.bz2
注意:壓縮后,原文會丟失;壓縮文件名的后綴為.bz2???
解壓:
第一種:?
#bunzip2?????passwd4.bz2??
注意:解壓后,壓縮文件會丟失???
第二種:
#bzip2????-d????passwd4.bz2????
不解壓查看:
#bzcat壓縮文件名??
#bzcat??????passwd4.bz2?????
指定壓縮級別:
#bzip2????-1???passwd4???
#bzip2????-8???passwd5????
保留原文件:
在壓縮時,保留原文件:
#bzip2???-k???passwd5??????
在解壓時,保留壓縮文件:?
#bunzip2??-k??passwd5.bz2???
4.4?xz???
壓縮:
#xz原文件???
#xz????passwd5???
注意:壓縮后,原文件會丟失
解壓:
第一種:
#unxz壓縮文件?
#unxz???????passwd5.xz??
注意:解壓后,壓縮文件也會丟失???
第二種:
#xz????-d???passwd5.xz??
不解壓查看:
#xzcat壓縮文件?
#xzcat?????passwd5.xz???????
指定壓縮級別:
#xz????-3????passwd5??
#xz????-7????passwd5?????
保留原文件:?
壓縮時保留原文件:
#xz?????-k原文件???
#xz?????-k???passwd5
解壓時,保留解壓文件:?
#unxz???-k壓縮文件??
#unxz???-k??passwd5.xz???
4.5打包:??tar?????必須會用????
打包:歸檔?
#tar????-cvf歸檔文件名??????原文件1???原文件2??...
-c:??create創(chuàng)建歸檔文件??
-v:?verbose顯示創(chuàng)建的過程??
-f:?file操作的文件???
注意:只要使用了tar的命令,就必須有-f選項,而且該選項要放在所有選項的最后
例:?
#tar???-cvf???loring.tar?????passwd1???passwd2??
注意:默認(rèn)tar打包的同時,沒有壓縮功能;如果要想壓縮,要借調(diào)用壓縮工具
展開歸檔:
#tar????-xvf歸檔文件名????
-x:展開歸檔??
#tar????-xvf?????loring.tar???
注意:不管是歸檔,還是展開歸檔,原文件都不會丟失?
不展開歸檔查看:
#tar?????-tf歸檔文件???
-t:不展開歸檔查看里面的文件名?
#tar?????-tf?????loring.tar???
向歸檔文件中,追加文件:????
#tar????-rf歸檔文件名?????添加的文件名???
-r:追加???
#tar????-rf??????loring.tar?????passwd3???
#tar????-tf??????loring.tar驗證
注意:歸檔文件必須在沒有被壓縮的時候,才能向里追加文件??
歸檔時,調(diào)用壓縮工具進行壓縮:?
創(chuàng)建歸檔時,調(diào)用壓縮工具:?
#tar????-zcvf歸檔文件名?????原文件1??原文件2??
-z:?借調(diào)用gzip壓縮工具
#tar????-jcvf歸檔文件名?????原文件1??原文件2
-j:借調(diào)用bzip2壓縮工具?
#tar????-Jcvf歸檔文件名?????原文件1??原文件2
-J:?借調(diào)用xz壓縮工具??
例:?
#tar????-zcvf?????loring.tar.gz????passwd1??passwd2???
#tar????-jcvf?????loring.tar.bz2???passwd1??passwd2???
#tar????-Jcvf?????loring.tar.xz????passwd1??passwd2???
展開歸檔,并解壓壓縮:
#tar????-zxvf?????loring.tar.gz????
#tar????-jxvf?????loring.tar.bz2????
#tar????-Jxvf?????loring.tar.xz????
注意:歸檔時調(diào)用哪個壓縮工具進行壓縮的,那么展開歸檔時,就應(yīng)該還去調(diào)用同樣的壓縮工具,進行解壓
例如:#tar????-zxvf????loring.tar.bz2?????就是錯誤的使用
5.文件處理:排序、去重、切割、統(tǒng)計、過濾
注意:?以上5個命令都是針對文件中的內(nèi)容,都不會對原文件做任何修改,只會影響輸出
5.1排序:?sort???
5.1.1正向排序:
#sort文件名?????
#sort????/etc/passwd????
注意:默認(rèn)sort會按照行首字母,根據(jù)ascii碼的順序,進行排序;a-z的順序
5.1.2逆向排序:??-r??
#sort???-r文件名??
#sort???-r???/etc/passwd???
5.1.3按照數(shù)值大小排序:?-n???
#cat????a.txt??
10
10001
111
1010
10202
#sort????a.txt???
10
10001
1010
10202
111
#sort???-n???a.txt???
即按照大小排序,又是倒序:?
#sort???-n???-r????a.txt???
5.1.4按照文件的字段進行排序:??字段-->列???
準(zhǔn)備:??
#head??/etc/passwd???>??pass.txt?????
將passwd文件的前十行,放在pass.txt文件中,如果pass.txt不存在,會自動創(chuàng)建
#sort???-t??"分隔符"???-k????第幾列?????文件名???
#sort???-t??":"????-k???3?????pass.txt??
以冒號分隔,按照第三列進行排序
#sort???-t??":"??-k??3???-n????pass.txt???
按照第3列的數(shù)值大小進行排序?
5.1.5排序同時并去重:
#sort???-u文件名????
#sort????-u????/etc/passwd???
5.2去重:??uniq?????-->??unique??唯一??
準(zhǔn)備:?
#cat??b.txt??
?abc?
?123
?123
?abc
?abc
?123
去重:?
#uniq文件名???
#uniq???b.txt???
abc
123
abc
123
注意:默認(rèn)uniq只能去掉相鄰的重復(fù)行
統(tǒng)計重復(fù)行出現(xiàn)的次數(shù):
#uniq???-c文件名???
#uniq???-c????b.txt????
??1?abc
??????2?123
??????2?abc
??????1?123
去掉所有的重復(fù)行:
先排序,再去重
#sort???b.txt????|????uniq???
注釋:|?代表了無名管道,作用是將第一命令執(zhí)行的結(jié)果,傳遞給第二個命令去執(zhí)行
作業(yè):?將/etc/passwd文件中,第5行-第10行內(nèi)容顯示出來
#sort???-u文件名????
#sort???-u????b.txt???
#sort???b.txt???|??uniq???-c?????
去掉所有的重復(fù)行,并且統(tǒng)計重復(fù)行的數(shù)量
例如:可以統(tǒng)計一個IP地址,一共訪問了多少次?
5.3切割:?cut?????*****
#cut????-d??"分隔符"????-f???第幾列?????文件名???
單列輸出:??
#cut????-d???":"????-f??3???/etc/passwd輸出第3列??
多列輸出:
離散:
#cut???-d??":"???-f??1,3,5?????/etc/passwd輸出第1列、第3列和第5列?????
連續(xù):
#cut???-d??":"???-f???1-3?????/etc/passwd輸出第1列到第3列?
注意:?默認(rèn)輸出的分隔符,和輸入的分隔符保持一致;-d所指定的就是輸入分隔符??
指定輸出分隔符:?
#cut???-d??":"??-f??1,3???--output-delimiter="--->"???/etc/passwd??
--output-delimiter=指定輸出分隔符??
5.4統(tǒng)計:??wc?????-->??word??count??
統(tǒng)計所有信息:
#wc文件名???
#wc????/etc/passwd?
35???54?1663?/etc/passwd
行數(shù)???單詞數(shù)量???字符的數(shù)量??文件名???
統(tǒng)計行:?
#wc????-l文件名?
#wc????-l???/etc/passwd???
統(tǒng)計單詞:
#wc????-w文件名??
#wc????-w????/etc/passwd??
統(tǒng)計字符:?
#wc????-c文件名???
#wc????-c????/etc/passwd???
實驗:?
統(tǒng)計/tmp目錄下,一共有多少個文件??
#ls??-l??/tmp???|??wc??-l?????
注意:將得到數(shù)減1??
5.5過濾:?grep???*****
grep:行級過濾器,會將匹配到的行,整行顯示出來
準(zhǔn)備工作:?
#alias???grep='grep??--color=auto'
#useradd???loringroot??
#useradd???rootloring??
按照字符串進行過濾:?
#grep???"字符串"???文件名????
#grep???"root"????/etc/passwd????
要將文件中,含有root字符串的行,過濾出來
行首定位:^
#grep????"^root"???/etc/passwd????
代表了整行必須以root開頭,^代表以誰開頭
實驗:?
將/etc/fstab文件中,以#開頭的行過濾出來???
#grep????"^#"????/etc/fstab??
行尾定位:$
#grep????"bash$"?????/etc/passwd???
代表一整行,必須以bash結(jié)尾,$代表了以誰結(jié)尾
例:
#cat????c.txt??
rootrootroot??
root??loring?root??
root
rootloringroot??
#grep??"^root$"???c.txt??
整行中,只含有一個root字符串的行
過濾文件中的空行:
#grep????"^$"?????/etc/passwd???
詞首的錨定:\<
#grep???"root"????/etc/passwd
#grep???"\
在一行中,必須至少有一個單詞,要以root開頭?
詞尾的錨定:\>
#grep???"root"???/etc/passwd??
#grep???"root\>"????/etc/passwd??
在一行中,必須至少有一個單詞,要以root結(jié)尾
#grep?????"\"????/etc/passwd??
在一行中,必須至少含有一個root的完整單詞
常見的選項:?
-i??-v???-A??-B??-C???-rl???-R???
#grep???-i???"root"???/etc/passwd??
-i:忽略字符串的大小寫?
#grep???-v????"^#"???/etc/fstab????
-v:取反,匹配到反而不顯示,顯示匹配不成功的??
#grep???-v??"^$"???/etc/fstab????
#grep??-A??3???"root"????/etc/passwd??
-A:在匹配到行后,會再多向下顯示幾行
#grep???-B??2???"root"???/etc/passwd???
-B:在匹配到行之前,會再多顯示幾行
#grep???-C??3????"root"???/etc/passwd???
-C:在匹配到行的上下,會各多顯示幾行
準(zhǔn)備:?
#mkdir???/loring/a/b/c/d/e/f
#echo??hello??zhangsanfeng???>??/loring/a/b/c/d/e/f/haha.txt
#grep???-rl??"zhangsanfeng"????/loring?????????????******
#grep???-R???"zhangsanfeng"????/loring???
根據(jù)文件中的內(nèi)容,搜索文件的位置;只要文件中含有了zhangsanfeng字符串,就會被搜索出來