4.1 文檔管理

一、文件管理

Linux 系統(tǒng)中有 一切皆文件 的說法。
文件是文件
硬件設(shè)備也是文件
就是在 Linux 中管理計算機的任何資源都是使用文件的斧蜕。
這些資源可以是:
具體的文件和目錄
鍵盤号显、鼠標跨细、網(wǎng)卡、主板河质、CPU冀惭、硬盤等。

1. 關(guān)于對文件的操作命令

touch 創(chuàng)建一個空的普通文件

touch   file    # 創(chuàng)建一個名為  file 的空文件

cp 復(fù)制文件或目錄

cp [選項] 文件1 文件2 ... 目標路徑
若源文件有兩個以上掀鹅,則最后一個目標文件一定是目錄散休。

選項
-a   :  相當于-pdr的意思±肿穑可將文件的所有屬性一起復(fù)制戚丸,可對目錄遞歸操作。

-p   : 與文件的屬性一起復(fù)制扔嵌,而非使用默認屬性限府。
-d   : 若源文件為鏈接文件,則復(fù)制連接文件而非文件本身痢缎。
-r   :  遞歸復(fù)制胁勺,用于目錄的復(fù)制操作。

示例

  1. 復(fù)制 a.txt 文件独旷, 到 /tmp 目錄中
cp      a.txt     /tmp/
  1. 復(fù)制 b.txt 文件署穗, 到 /tmp 目錄下寥裂,并起名為 b.txt.bak
cp      b.txt    /tmp/b.txt.bak
  1. 復(fù)制 /opt 目錄到 /tmp 目錄下
cp    -a  /opt    /tmp/

建議

當目標是一個目錄時,建議目錄名后面加上路徑分隔符 /案疲, 這樣比較易讀封恰,可以明確的看出來復(fù)制后的文件名。
假如復(fù)制的是一個目錄褐啡,建議都加上 -a 選項

rm 刪除文件或目錄

選項

-f  :  就是force 的意思诺舔,強制刪除。
-i  :  交互式刪除春贸。
-r  :  對目錄進行遞歸刪除混萝。

mv 移動文件與目錄,或重命名

選項
-f  : 強制移動而不詢問 
-i   :交互式   
-u  :若目標文件已經(jīng)存在萍恕,且源文件比較新逸嘀,才會更新  

擴展

其實Linux中還有一個專門進行大量文件重命名的命令 rename,可以man rename查看一下允粤。

獲取一個路徑的崭倘,文件名部分與目錄部分

basename 獲取文件名部分
dirname 獲取目錄部分

例如:

[root@linux~]#basename   /etc/sysconfig/network
network          文件名
[root@linux~]#dirname    /etc/sysconfig/network
/etc/sysconfig   目錄名

查看文件內(nèi)容

head 查看文件的前幾行

默認顯示前 10 行

選項:
-n :后面接數(shù)字,表示顯示前幾行的意思

tail 顯示文件的后幾行

選項:
-n  :  后面接數(shù)字
默認后10行

cat (concatenate)連續(xù)的簡寫类垫,查看文件的全部內(nèi)容

主要功能是將一個文件的內(nèi)容連續(xù)的顯示 在屏幕上司光。
當文件內(nèi)容行數(shù)超過40行以上時,不適合用此命令悉患。

注意

由于 cat 命令會把文件的所有內(nèi)容都顯示到屏幕上残家,換句話說,就是會把文件的內(nèi)容一次性的讀到內(nèi)存中售躁。
這樣的話坞淮,大的文件會把內(nèi)存占滿,從而導(dǎo)致整個系統(tǒng)崩潰陪捷。

選項
-n  :顯示行號

-A  :相當于-vET的整合參數(shù)回窘,可列出一些特殊字符
-E  :將結(jié)尾的換行符$顯示出來
-T  :  將[Tab]按鍵以^I顯示出來
-v  : 列出一些看不出來的特殊字符

tac 倒序的顯示文件的內(nèi)容, 和 cat 相反

cat     /etc/issue

less 一頁一頁翻動市袖,可以上下翻動

[PageUP]向上啡直,[PageDown]向下
Less運行過程中
 空格鍵:     向下翻動一頁
 [PageUP]: 向下翻動一頁
 [pageDn]:向上翻動一頁

 /字符串:  向下搜索字符串的功能
 ?字符串:想上搜索字符串的功能
 n:  重復(fù)前一個搜索(與/或苍碟?有關(guān))
 N: 反向重復(fù)前一個搜索(與/或酒觅?有關(guān))
 q:   離開less

more 一頁一頁翻動

  空格鍵:表示向下翻一頁
  Enter:  表示向下翻一行
  /字符串:表示在這個顯示的內(nèi)容中微峰,向下搜索字符串阐滩,之后按n,可重復(fù)向下搜索。
  :f :    立刻顯示文件名以及當前 顯示的行數(shù)
  q  :    表示立刻離開more

touch [-acdmt] 文件

選項:
-a :僅修改access time
-c :僅修改時間县忌,而不建立文件
-d :后面可以接日期掂榔,也可以使用 date=日期或時間
-m:僅修改mtime
-t :后面可以接時間继效,格式為 [YYMMDDhhmm]
例如:將范例的bashrc日期改為2010/5/11   19:53
[root@www tmp]# touch -t 1005111953 bashrc
Touch  命令最常用的情況是:
 建立一個空文件
 將某個文件日期修改問當前日期(mtime與atime)

關(guān)于 Linu 系統(tǒng)中的 3 個時間

atime 就是 access time 最近訪問內(nèi)容的時間
mtime 就是 modify time 最近修改內(nèi)容的時間
ctime 就是 change time 最近更改文件的時間,包括文件名装获、大小瑞信、內(nèi)容、權(quán)限穴豫、屬主凡简、屬組等。
stat 命令可以查看一個文檔的這三個時間戳:

stat anaconda-ks.cfg

搜索文件

which 尋找可執(zhí)行文件

參數(shù):
-a     :將所有可找到的同名命令都列出來精肃。默認是只列出第一個找到的命令名稱

一文件查找

grep: 文件內(nèi)容過濾

find: 文件查找秤涩,針對文件名

1.1 命令文件

which ls
//從PATH環(huán)境變量 (echo $PATH)

二 find詳解

find [options][path...] [expression][action】

2.1按文件名:

find /etc -name "ifcfg-eth0"  
-name   文件名, 后面-print 動作時默認的,已省略

find /etc -iname "ifcfg-eth0"           
-i忽略大小寫

find /etc -iname "ifcfg-eth*"

2.2按文件大兴颈А:

find /etc -size +5M           //大于5M
find /etc -size 5M
find /etc -size -5M
find /etc -size +5M -ls      //-ls找到的處理動作, 不是平時用的ls
ll - h   查看大小

2.3指定查找的目錄深度:

-maxdepth levels
-mindepth levels
find / -maxdepth 3 -a  -name "ifcfg-eth0"           maxdepth 3   最大3層    
a要滿足2個條件 
并且按時間找(atime,mtime,ctime):
[root@tianyun ~]# find /etc -mtime +5       //修改時間超過5天
[root@tianyun ~]# find /etc -mtime 5        //修改時間等于5天
[root@tianyun ~]# find /etc -mtime -5       //修改時間5天以內(nèi)

2.4按文件類型:

find /dev -type f                          //f普通
find /dev -type d                          //d目錄
find /dev -type l                          //l鏈接
find /dev -type b                          //b塊設(shè)備
find /dev -type c                          //c字符設(shè)備
find /dev -type s                          //s套接字
find /dev -type p                          //p管道文件  

2.5按文件權(quán)限:

find . -perm 644 -ls            

. 是當前目錄    精確查找  644    一般都是進行精確查找

find . -perm -644 -ls    
-是包含的意思 
帶不帶- 自己對比一下查看筐眷。       
帶-表示只要6就可以
find . -perm -600 -ls
find . -perm -222 -ls              //全局可寫
find /usr/bin /usr/sbin -perm -4000 -ls       //包含set uid
find /usr/bin /usr/sbin -perm -2000 -ls       //包含set gid
find /usr/bin /usr/sbin -perm -1000 -ls       //包含sticky    

找到后處理的動作 ACTIONS:

-print  默認
-ls    列出結(jié)果文件的屬性,就像 ls  -l 的效果

-exec  繼續(xù)執(zhí)行其他命令
|xargs  支持更多參數(shù)

find /etc -name "ifcfg*" -exec cp -rvf {} /tmp \; 

exec為執(zhí)行一條shell命令 {}為前面的東西; 格式

exec 命令用于調(diào)用并執(zhí)行指令的命令 查找?guī)?root 帶文件 復(fù)制到 tmp

find /etc -name “root*”  -exec cp -rf {} /tmp \;  

find /etc -name "ifcfg*" -exec rm -rf {} \;  

find . -name "a*" -delete 

擴展知識:find結(jié)合xargs*

 find . -name "yang*.txt" |xargs rm -rf     

重點:

找到之后刪除處理

xargs 把找到的文件名作為參數(shù)傳遞個要處理的程序

?

案例1: 分別找出file5 和除了file5的文件

[root@tianyun ~]# mkdir dir1
[root@tianyun ~]# touch dir1/file{1..20}

[root@tianyun ~]# find /root/dir1 -name "file5"
[root@tianyun ~]# find /root/dir1 ! -name "file5" 
习柠!為取反
[root@tianyun ~]# find /root/dir1 -name "file5" -o -name "file9"         
即是file5又是file9

/root/dir1/file5
/root/dir1/file9

三 -exec 和 xargs 的區(qū)別

find . -name 'core' -type f -exec rm {} /; 時匀谣,

find -exec 命令會對每個匹配的文件執(zhí)行一個單獨的 rm 操作(execute a separate rm for each one), 正如你手動敲入下面命令:

rm ./bin/core

rm ./source/shopping_cart/core

rm ./backups/core

但是使用這種方式,如果有100個文件匹配了资溃,那么就需要啟100個進程武翎,一個進程處理一個rm命令。一般來說溶锭,其越多進程宝恶,意味著越耗性能。我們可以換個思路趴捅,我們將要刪除文件當作參數(shù)傳遞給rm不就可以了嗎垫毙?也就是說

rm ./bin/core

rm ./source/shopping_cart/core 

rm ./backups/core

改成:

 rm ./bin/core ./source/shopping_cart/core ./backups/core

但是前提是后面的命令必須支持多參數(shù)。

像有些命令驻售,比如unzip露久,就不支持輸入多個jar包更米,所以必須用-exec欺栗。

xargs,顧名思義征峦,是對參數(shù)進行處理的命令迟几。它的任務(wù)就是將輸入行轉(zhuǎn)換成下一個命令的參數(shù)列表笙各。因此上面的

find -exec命令可以改寫成:

find . -name 'core' -type f -print | xargs rm

相比之下研儒,也不難看出各自的缺點

1食零、exec 每處理一個文件或者目錄号俐,它都需要啟動一次命令儒老,效率不好;

2钥弯、exec 格式麻煩皆刺,必須用 {} 做文件的代位符壶运,必須用 \;作為命令的結(jié)束符,書寫不便厂抽。

3需频、xargs 不能操作文件名有空格的文件; 綜上筷凤,如果要使用的命令支持一次處理多個文件昭殉,并且也知道這些文件里沒有帶空格的文件, 那么使用 xargs比較方便; 否則藐守,就要用 exec了挪丢。

語法:

xargs [-epn] command

選項

-e 后面跟字符串,當xargs分析到字符串時就停止,格式為 -e'test' 中間沒有空格,這里的字符串必須和參數(shù)完全匹配
-p 執(zhí)行時詢問
-n 后面接數(shù)字卢厂,定義command執(zhí)行時乾蓬,要使用幾個參數(shù)

  1. 找出 /sbin 目錄下的文檔,并使用 ls -l 列出詳細數(shù)據(jù)
find /sbin -perm +0700 |ls -l $(xargs) 

  1. 把找到的文件復(fù)制到 /test 目錄下
find /sbin -perm +0700 | cp $(xargs) /test

關(guān)于減號 - 的用途

可以作為 stdout 和 stdin

tar  -cvf   -   /home | tar -xvf  - 

二足淆、目錄管理

1. 系統(tǒng)的目錄樹機構(gòu)詳解

image

2. 符號和目錄的關(guān)系

.   英文的點巢块,表示當前目錄

..   英文的點點, 表示上層目錄

-   英文的短橫線巧号, 表示上次離開的目錄

~  英文的波浪號族奢,表示 當前 用戶的家目錄

~shark   表示 shark 用戶的家目錄


3. 操作目錄的命令

pwd (print working directory) 顯示當前所在目錄的路徑

參數(shù):
-P 顯示出實際路徑,而非使用的軟連接(link)路徑

cd (change directory) 你想去哪里

例如:

cd  ~               到自己的家目錄
cd  ~shark        到  shark 用戶的家目錄
cd  -              到上次離開的工作目錄

mkdir (make directory) 建立新目錄

參數(shù):
-m 創(chuàng)建新目錄的同時丹鸿,設(shè)置該目錄的權(quán)限越走。直接設(shè)置,會忽略默認權(quán)限靠欢。
-p 直接建立所需的目錄遞歸廊敌。

例如:

mkdir   -p   /a/b/c

rmdir (rmove directory) 刪除空目錄

參數(shù):
-p 遞歸刪除空目錄

tree 遞歸查看目錄結(jié)構(gòu)

參數(shù):
-L n 表示查看到第 n 層的目錄

三、文件內(nèi)容操作

cut 字段分隔

image
image
image

grep 關(guān)鍵字搜索

grep [-acinv] [--color=auto] '搜尋字符串' filename
選項:
-a //將binary 文件以text文件的方式搜索數(shù)據(jù)
-c //計算找到的字符串的次數(shù)
-i //忽略大小寫
-n //輸出行號
-v //反向選擇

排序门怪、統(tǒng)計命令: sort wc uniq

sort 排序

可以依據(jù)不同的數(shù)據(jù)型態(tài)來排序

sort [-fbMnrtuk] [file or stdin]
選項不參數(shù):
-f :忽略大小寫
-b :忽略最前面的空格符部分骡澈;
-n : 使用『純數(shù)字』進行排序(默認是以文字型態(tài)來排序的);
-r :反向排序掷空;
-u :就是 uniq 肋殴,相同的數(shù)據(jù)中,僅出現(xiàn)一行代表坦弟;
-t :分隔符护锤,預(yù)設(shè)是用 [tab] 鍵來分隔;
-k :以那個區(qū)間 (field) 來進行排序的意思

示例文件內(nèi)容

4349 shark
264 shark
924 xiguatian
924 tian
734 yangge
823 shark
734 yangge

sortt     sort.txt

sort    -n  sort.txt

uniq 去重+統(tǒng)計數(shù)量

可以將重復(fù)的數(shù)據(jù)僅列出一個來顯示酿傍,且可以進行統(tǒng)計

uniq [-ic]
選項:
-i   //忽略大小寫
-c   //進行統(tǒng)計

例如:我想要知道每個人登入服務(wù)器的總次數(shù)烙懦,可以這樣:

[root@testhost ~]# last  | cut   -d   ' '  -f1  |sort|uniq   -c

wc 字符、行統(tǒng)計

image

tr 字符替換

cat /etc/passwd | tr -d ':' //將冒號刪除

last | tr '[a-z]' '[A-Z]' //所以小寫變成大寫

tee 雙向輸出

image
cat   anaconda-ks.cfg   | tee  an.bak  

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赤炒,一起剝皮案震驚了整個濱河市氯析,隨后出現(xiàn)的幾起案子亏较,更是在濱河造成了極大的恐慌,老刑警劉巖掩缓,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宴杀,死亡現(xiàn)場離奇詭異,居然都是意外死亡拾因,警方通過查閱死者的電腦和手機旺罢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绢记,“玉大人扁达,你說我怎么就攤上這事〈老ǎ” “怎么了跪解?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長签孔。 經(jīng)常有香客問我叉讥,道長,這世上最難降的妖魔是什么饥追? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任图仓,我火速辦了婚禮,結(jié)果婚禮上但绕,老公的妹妹穿的比我還像新娘救崔。我一直安慰自己,他們只是感情好捏顺,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布六孵。 她就那樣靜靜地躺著,像睡著了一般幅骄。 火紅的嫁衣襯著肌膚如雪劫窒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天拆座,我揣著相機與錄音主巍,去河邊找鬼。 笑死懂拾,一個胖子當著我的面吹牛煤禽,可吹牛的內(nèi)容都是我干的铐达。 我是一名探鬼主播岖赋,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼瓮孙!你這毒婦竟也來了唐断?” 一聲冷哼從身側(cè)響起选脊,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎脸甘,沒想到半個月后恳啥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡丹诀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年钝的,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铆遭。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡硝桩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出枚荣,到底是詐尸還是另有隱情碗脊,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布橄妆,位于F島的核電站衙伶,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏害碾。R本人自食惡果不足惜矢劲,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望慌随。 院中可真熱鬧卧须,春花似錦、人聲如沸儒陨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蹦漠。三九已至椭员,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間笛园,已是汗流浹背隘击。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留研铆,地道東北人埋同。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像棵红,于是被迫代替她去往敵國和親凶赁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一、文件管理 Linux 系統(tǒng)中有 一切皆文件 的說法虱肄。文件是文件硬件設(shè)備也是文件就是在 Linux 中管理計算機...
    運維開發(fā)_西瓜甜閱讀 1,045評論 1 0
  • 一致板、文件管理 Linux 系統(tǒng)中有 一切皆文件 的說法。文件是文件硬件設(shè)備也是文件就是在 Linux 中管理計算機...
    光明_7c13閱讀 122評論 0 0
  • 本文筆記源自這里——[實驗樓]歡迎大家在下面交流其中有問題的地方喜歡請點收藏咏窿,每日更新(全部已親自實踐). 一. ...
    東皇Amrzs閱讀 3,989評論 7 54
  • Linux文件管理 老師筆記 Linux中一切皆文件集嵌,文件是文件萝挤、硬件設(shè)備是文件、目錄是文件根欧。 一平斩、關(guān)于對文件的操...
    霓旸芊芊閱讀 440評論 0 0
  • 在linux下面工作绘面,有些命令能夠大大提高效率。本文就向大家介紹find侈沪、grep命令揭璃,他哥倆可以算是必會的lin...
    拿破輪胎閱讀 969評論 0 4