鍍金池/ 教程/ Linux/ 文件及目錄管理
進程管理工具
objdump 二進制文件分析
scp 跨機遠程拷貝
crontab 定時任務(wù)
readelf elf文件格式分析
pstack 跟蹤進程棧
系統(tǒng)管理及IPC資源管理
vmstat 監(jiān)視內(nèi)存使用情況
strace 跟蹤進程中的系統(tǒng)調(diào)用
sar 找出系統(tǒng)瓶頸的利器
ipcs 查詢進程間通信狀態(tài)
ps 進程查看器
性能優(yōu)化
wget 文件下載
top linux下的任務(wù)管理器
磁盤管理
size 查看程序內(nèi)存映像大小
free 查詢可用內(nèi)存
文件及目錄管理
iostat 監(jiān)視I/O子系統(tǒng)
性能監(jiān)控
程序構(gòu)建
學(xué)會使用命令幫助
gdb 調(diào)試利器
網(wǎng)絡(luò)工具
nm 目標(biāo)文件格式分析
lsof 一切皆文件
用戶管理工具
程序調(diào)試
ldd 查看程序依賴庫
文本處理

文件及目錄管理

文件管理不外乎文件或目錄的創(chuàng)建、刪除、查詢、移動,有mkdir/rm/mv

文件查詢是重點,用find來進行查詢;find的參數(shù)豐富,也非常強大;

查看文件內(nèi)容是個大的話題,文本的處理有太多的工具供我們使用,在本章中只是點到即止,后面會有專門的一章來介紹文本的處理工具;

有時候,需要給文件創(chuàng)建一個別名,我們需要用到ln,使用這個別名和使用原文件是相同的效果;

創(chuàng)建和刪除

  • 創(chuàng)建:mkdir
  • 刪除:rm
  • 刪除非空目錄:rm -rf file目錄
  • 刪除日志 rm *log (等價: $find ./ -name "*log" -exec rm {} \;)
  • 移動:mv
  • 復(fù)制:cp (復(fù)制目錄:cp -r )

查看當(dāng)前目錄下文件個數(shù)::

$find ./ | wc -l

復(fù)制目錄::

$cp -r source_dir  dest_dir

目錄切換

  • 找到文件/目錄位置:cd
  • 切換到上一個工作目錄: cd -
  • 切換到home目錄: cd or cd ~
  • 顯示當(dāng)前路徑: pwd
  • 更改當(dāng)前工作路徑為path: $cd path

列出目錄項

  • 顯示當(dāng)前目錄下的文件 ls
  • 按時間排序,以列表的方式顯示目錄項 ls -lrt

以上這個命令用到的頻率如此之高,以至于我們需要為它建立一個快捷命令方式:

在.bashrc 中設(shè)置命令別名::

alias lsl='ls -lrt'
alias lm='ls -al|more'

這樣,使用lsl,就可以顯示目錄中的文件按照修改時間排序;以列表方式顯示;

  • 給每項文件前面增加一個id編號(看上去更加整潔)::

    ls | cat -n 1 a 2 a.out 3 app 4 b 5 bin 6 config

注:.bashrc 在/home/你的用戶名/ 文件夾下,以隱藏文件的方式存儲;可使用 ls -a 查看;

查找目錄及文件 find/locate

搜尋文件或目錄::

$find ./ -name "core*" | xargs file

查找目標(biāo)文件夾中是否有obj文件::

$find ./ -name '*.o'

遞歸當(dāng)前目錄及子目錄刪除所有.o文件::

$find ./ -name "*.o" -exec rm {} \;

find是實時查找,如果需要更快的查詢,可試試locate;locate會為文件系統(tǒng)建立索引數(shù)據(jù)庫,如果有文件更新,需要定期執(zhí)行更新命令來更新索引庫::

$locate string

尋找包含有string的路徑::

$updatedb

與find不同,locate并不是實時查找。你需要更新數(shù)據(jù)庫,以獲得最新的文件索引信息。

查看文件內(nèi)容

查看文件:cat vi head tail more

顯示時同時顯示行號::

$cat -n     

按頁顯示列表內(nèi)容::

$ls -al | more    

只看前10行::

$head - 10 **           

顯示文件第一行::

$head -1 filename       

顯示文件倒數(shù)第五行::

$tail -5 filename       

查看兩個文件間的差別::

$diff file1 file2       

動態(tài)顯示文本最新信息::

$tail -f crawler.log

查找文件內(nèi)容

使用egrep查詢文件內(nèi)容::

egrep '03.1\/CO\/AE' TSF_STAT_111130.log.012
egrep 'A_LMCA777:C' TSF_STAT_111130.log.035 > co.out2

文件與目錄權(quán)限修改

  • 改變文件的擁有者 chown
  • 改變文件讀、寫、執(zhí)行等屬性 chmod
  • 遞歸子目錄修改: chown -R tuxapp source/
  • 增加腳本可執(zhí)行權(quán)限: chmod a+x myscript

給文件增加別名

創(chuàng)建符號鏈接/硬鏈接::

ln cc ccAgain :硬連接;刪除一個,將仍能找到;
ln -s cc ccTo :符號鏈接(軟鏈接);刪除源,另一個無法使用;(后面一個ccTo 為新建的文件)

管道和重定向

  • 批處理命令連接執(zhí)行,使用 |
  • 串聯(lián): 使用分號 ;
  • 前面成功,則執(zhí)行后面一條,否則,不執(zhí)行:&&
  • 前面失敗,則后一條執(zhí)行: ||
    ls /proc && echo  suss! || echo failed.

能夠提示命名是否執(zhí)行成功or失敗;

與上述相同效果的是::

if ls /proc; then echo suss; else echo fail; fi

重定向::

ls  proc/*.c > list 2> &l 將標(biāo)準輸出和標(biāo)準錯誤重定向到同一文件;

等價的是::

ls  proc/*.c &> list

清空文件::

:> a.txt

重定向::

echo aa >> a.txt

設(shè)置環(huán)境變量

啟動帳號后自動執(zhí)行的是 文件為 .profile,然后通過這個文件可設(shè)置自己的環(huán)境變量;

安裝的軟件路徑一般需要加入到path中::

PATH=$APPDIR:/opt/app/soft/bin:$PATH:/usr/local/bin:$TUXDIR/bin:$ORACLE_HOME/bin;export PATH

Bash快捷輸入或刪除

快捷鍵::

Ctl-U   刪除光標(biāo)到行首的所有字符,在某些設(shè)置下,刪除全行
Ctl-W   刪除當(dāng)前光標(biāo)到前邊的最近一個空格之間的字符
Ctl-H   backspace,刪除光標(biāo)前邊的字符
Ctl-R   匹配最相近的一個文件,然后輸出

綜合應(yīng)用

查找record.log中包含AAA,但不包含BBB的記錄的總數(shù)::

cat -v record.log | grep AAA | grep -v BBB | wc -l

總結(jié)

文件管理,目錄的創(chuàng)建、刪除、查詢、管理: mkdir rm mv

文件的查詢和檢索: find locate

查看文件內(nèi)容:cat vi tail more

管道和重定向: ; | && >