Linux 的進階檔案處理
指令的輸出入(P 5-10) 輸出設備一般有螢幕、印表機、檔案等 輸入設備有鍵盤、讀卡機、掃描器與檔案等 「標準輸入」、「標準輸出」與「標準錯誤訊息輸出」
指令的輸出入(P 5-10) 重導輸出 (redirect) 將原本會輸出到螢幕上的文字(stdout 或stderr),改為輸出到檔案成為文字檔 使用 >(大於符號,重導) 將df指令的結果,重導至myfile檔案 df > myfile ls /abcde 2> myerror (將錯誤訊息輸出至檔案儲存)
篩選內容 遇到某個檔案或指令輸出內容很多時 需要篩選符合特定資料的結果 只顯示我們想要的資料 grep 特定文字 檔案(對象) grep sam install.log grep sam *
指令的輸出入(P 5-12) 管線 單一指令無法做到想要完成的工作 可以使用Linux的管線功能「|」 結合二個以上的指令,處理較複雜的工作 ls -l指令輸出很多頁內容,more指令又可以將輸入的資料分頁輸出,結合ls -l的輸出與more指令功能的指令如下: ls -l /usr/lib/ |more
指令的輸出入(P 5-12) 管線 「接收左邊指令的輸出,將資料接至右邊指令,成為其輸入來源」
篩選內容 需要篩選特定欄位資料的內容 cut -d欄位分隔字元 -f欄位編號 檔案路徑 cut –d: -f1 /etc/passwd
搜尋檔案(P 5-14) which which來搜尋環境變數PATH裏的所有目錄中是否有特定執行檔 只會搜尋PATH變數的目錄 知道要搜尋檔案的完整檔名,則用whereis搜尋
搜尋檔案(P 5-15) 查詢部份檔名 locate 用locate 檔名來查詢檔案位置 locate向系統內建的資料庫去查詢而得到結果 以updatedb指令更新資料庫 目錄與檔案 updatedb 資料庫 locate
搜尋檔案(P 5-15) 搜尋特定檔案 find 直接在檔案系統內搜尋特定檔案 想要從/home以下的子目錄,搜尋檔名為install的檔案 find /home -name install
搜尋檔案(P 5-15) 增量備份的實務應用 只有在初次備份時,備份目錄內的所有檔案 爾後備份時,只需處理自上次備份時間之後有變動或新增的檔案
搜尋檔案 增量備份的實務應用 初次備份(3月1日)的指令: tar cvfz backup-0301.tar.gz /root/testdir/* touch /root/testdir/timebase 增量備份 tar cvfz backup-0302.tar.gz `find /root/testdir/ -cnewer /root/testdir/timebase -type f`
檔案系統 Fedora 11的檔案系統使用的是最新的「Ext4」檔案系統 前身是Ext3, Ext3的前身是Ext2檔案系統 Ext3是以Ext2為基礎再加上「日誌功能(journaling)」 節省了傳統需掃描整顆硬碟所耗費的時間
檔案系統 Ext4檔案系統 Fedora 11首先引進最新的「Ext4檔案系統」 以ext3為基礎再加上許多提昇檔案效能的新技術 突破檔案系統的大小限制 1EB=109GB ext4使用了「Extent file writing」範圍性寫入檔案的新技術,減少檔案在寫入磁碟時的游離區塊的程度
檔案系統(P 5-3) 檔案資訊記錄檔inode 記載著這個檔案的所有資訊 包括檔名、更動時間、權限與檔案儲存的區塊位置等資料 ls -i可以列出檔案的inode編號 [root@proj ch5]# touch file1 file2 [root@proj ch5]# ls -i 1178618 file1 1178619 file2
檔案系統 連結Link 允許多個檔案參考到一個檔案 連結是一種指向另一個檔案的特別檔案,如Windows的捷徑 連結「指向」真實存在的檔案或目錄 連結的用途: 不需要多複製一份檔案至其他位置,節省空間。 保持連結指向檔案都是最近資料。
檔案系統(P 5-5) 建立符號連結(Symbolic Link) 利用ln指令加上選項-s可建立符號連結 -rw-r--r-- 1 root root 6 12月 28 16:06 data lrwxrwxrwx 1 root root 4 12月 28 16:07 slink -> data
檔案系統(P 5-6) 建立硬連結 硬連結(hard link)建立的方法也是使用ln指令,不需加選項 語法:ln 目標對象 連結名稱 與符號連結不一樣的是,當真實檔案被刪除或移至其他目錄時,硬連結仍可正常得到檔案的內容,不會變成無效連結 建立硬連結時的限制 不可跨越分割區 不可使用於目錄
檔案系統 Linux的執行檔 沒有特別規定副檔名 只要檔案具有可執行(Executable)權限即可執行 兩種執行檔案的方式 以絕對路徑執行 /bin/netstat 執行目前所在目錄下的執行檔 先以./開始,代表「目前目錄下」 ./runme
檔案系統 Linux的執行檔 為什麼不直接打檔名就執行目前目錄下的執行檔呢? 保護系統安全 如果有一個惡意的使用者在他的家目錄下新增一個執行檔,執行檔裏面是一些破壞系統的指令 管理者如果在該使用者的家目錄中打了ls指令,那就很容易掉入陷阱中
硬碟空間使用情形 df指令 加入選項-h讓顯示的單位以KB、MB、GB來表示
硬碟空間使用情形 du指令 想知道目前目錄下(含子目錄)已用空間
文字編輯器vim 所有UNIX與Linux都內建的文字編輯器 只要學好vim,在任何Linux都能夠利用它來編輯文字檔案
文字編輯器vim 一般模式(Common mode) 可以使用具有特殊意義的按鍵 在文件內容中移動、刪除、複製、貼上等功能 在一般模式中,按下i、o或a鍵可以進入編輯模式 按下冒號「:」則會進入命令模式 編輯模式(Insert mode) 按下內容會新增在文件游標所在處 像打字一樣,按鍵不再具有特殊意義 按下[ESC]鍵可回到一般模式
文字編輯器vim 命令模式(Command line mode) 可以儲存、開啟檔案、結束vi、取代特定文字等檔案處理功能 按下ESC鍵可回到一般模式 觀察左下方是否出現「:」冒號
文字編輯器vim 一般模式下的功能按鍵 瀏覽文件 利用以下按鍵,我們可以在vi內瀏覽文件內容: h:游標向左移,與[左鍵]的功能相同。 j:游標向下移,與[下鍵]的功能相同。 k:游標向上移,與[上鍵]的功能相同。 l:游標向右移,與[右鍵]的功能相同。 PageUp:游標向上一頁 PageDown:游標向下一頁 G:游標移到文件最後一行。 gg:游標移到文件第一行。
文字編輯器vim 一般模式下的功能按鍵 Ctrl+g:顯示游標目前位置的資訊,包括第幾行,第幾個字元,位於文件中的百分比。 yy:複製游標所在該行 p:將先前複製的內容,貼在游標所在下行,原文字會往下移 dd:刪除游標所在行,原該行下方資料往上移。 u:復原上次做的更動 .:重覆上一個動作
文字編輯器vim 一般模式下的刪除功能 x : 刪除游標所在後面 1 個字元、X : 刪除游標所在前面 1 個字元 #x : 例如5x 表刪除 5 個字元 、#X : 例如5X 表刪除游標所在前面 5 個字元 dd : 刪除游標所在之行 #dd : 例5dd 表刪除自游標算起 5 行 dw : 刪除游標所在之單字(定義為連續的文數字或符號)
文字編輯器vim 一般模式下的更改功能 cw : 更改游標處之單字(定義為連續的文數字或符號)到此一單字之字尾處 c#w : 例c3w表更改 3 個字 #r : 例3r取代游標處之3個字元 R : 進入編輯模式,並取代字元直到按 ESC 為止 #s : 以字元為單位置換, 進入編輯模式,並插入字元直到按 ESC 為止
文字編輯器vim 一般模式下的複製(yank)貼上(put)功能 #y : 複製游標處之字元到緩衝區 #yw : 複製游標處之單字(定義為連續的文數字或符號)到此一單字之字尾處到緩衝區 #yy : 複製游標處所在行內容到緩衝區 p : 貼上緩衝區的內容到游標處
文字編輯器vim 命令模式功能 :w filename ( 存入指定檔案 ) :wq ( 寫入並離開 vi ) :r [ 檔案 ] (讀入檔案,並將內容插入目前游標之後一行) :L1,L2d ( 刪除自行L1至行L2 的文字 ) :L1,L2s/pattern1/pattern2/g ( 將行L1至行 L2 的文字中, pattern1 的字串改為 pattern2 的字串,若無 g 則僅更換每一行所匹配的第一個字串,如有 g 則將每一個字串均做更換、例1,$s/root/adm/g) :set nu (列出行號) :set nonu (不列出行號)
文字編輯器vim 命令模式功能 :L1 (跳至第 L1 行) /pattern (往下尋找pattern字串),按“n”找下一個符合字串 ,按“N”找上一個符合字串 ?pattern (往上尋找pattern字串),按“n”找上一個符合字串 ,按“N”找下一個符合字串 :f (顯示編輯狀態) :!指令 (執行指令)