UNIX的檔案處理(轉)
UNIX的檔案處理(轉)[@more@]一、終端機簡介一個終端機是一個螢幕與一個鍵盤的組合,其型別有vt100, vt102, vt220,sun, hp, ansi 等。基本上這些型別就是不同公司的不同產品型號,他們之間的差異在於控制遊標的方法不同,按鍵時鍵盤產生的鍵盤程式碼不同,以及是否有彩色能力等。由於設計先天不良,UNIX無法自動偵測終端機的型別,必須以人工的方式告知。告知的方法就是設定一個環境變數TERM。UNIX裡面需要控制螢幕的程式都會參考此變數。設定此變數的方法如下:1. 在csh, tcsh下用:% set term = vt100這裡要說明的是為什麼剛剛說要設定的變數名是大寫(TERM),而這裡卻是小寫;另外一個問題是csh、tcsh中,set指令是用來設定臨時變數而已,另有一個專門設定環境變數的指令叫setenv,為什麼不用setenv?答案是 csh、tcsh為了使用者的方便,只要'term'這一個臨時變數被設了值,csh 就自動更新TERM這個環境變數的值。2. 在sh,bash,ksh,zsh中要下兩個命令:$ TERM=vt100$ export TERM其中export的意思為,把'TERM'這個暫時變數轉成環境變數<UNIX小字典——環境變數與變數>在UNIX裡面,這是一個不講還好、越講越搞不清楚的觀念。簡單的說,所謂的<環境變數>就是此變數能夠告訴所有的程式使用者目前所處的環境,而變數則不能,因為只有Shell 能看到變數,而環境變數是所有的程式都能夠看到的。例如所有的程式都需要知道TERM這個變數,所以它是一個環境變數。在sh下面的export命令可以想作:讓大家都能看到這個變數。二、終端機控制一般而言,終端機提供一些簡單的編輯功能:1. 刪除一個字: BS (CTRL-H, ^H) 或 DEL (^?)這兩個鍵正常狀況下只有一個有用。可用以下兩個命令選擇% stty erase '^H'% stty erase '^?'2. 刪除一行: CTRL-U (^U)3. 輸出控制:CTRL-S (^S) 暫停輸出CTRL-Q (^Q) 取消暫停輸出三、編輯器種類A. 列編輯器(line editor)列編輯器一次只能處理一行,現在除了寫程式外幾乎沒有人在用了。以下指令皆會啟動列編輯器:e, ed, ex, edit其中e, ed 沒有提示號,ex, edit的提示號是冒號':' 因為沒什麼用,所以只要知道不小心執行了怎麼出來就可以了。用^D或q 或q!可退出之。B. 全螢幕編輯器全螢幕編輯器可以使用遊標移動至文字檔任何地方,做各種修改,也較自然。UNIX的標準編輯器是vi。其他的編輯器為網路上免費的編輯器。vi VIsual editor,特色是顯示較快、遊標移動也較快,不易學習。joe Joe's own version of editor,本來是作者的上課作業,但是現在以發展成一個成熟、穩定、方便使用的編輯器。emacs Editor MACroS,最初由MIT 人工智慧實驗室流傳出來,是UNIX上除了vi外最常見的編輯器。它的按鍵幾乎成了UNIX下移動遊標的標準。功能很強、也不是很好學。Jove Jxxx's own version of Emacs,我們可以說jove是另一個emacs編輯器的仿製品。但是jove編輯器沒有emacs 那麼強的擴充功能,也比較小巧玲瓏。四、vi的使用vi有兩種模式,輸入模式與命令模式。剛進入vi時是處於命令模式。在命令模式中可以告訴vi要怎麼樣移動遊標,要改哪些字,對正在編輯的文字檔做什麼處理。此時鍵盤上的每個鍵都可以是命令。在輸入模式則vi把所有的按鍵都當成輸入,不做處理。1. 進入輸入模式的方法想打幾個字到螢幕上就要先進入輸入模式。以下幾個命令皆可進入輸入模式:(注意大小寫)i insert mode,由遊標前面插入a append mode,由遊標後面插入o open a new line and insertA append from end of lineI insert from begin of line 按下列幾個鍵試試看:(先按i再按hello)ihello2. 從輸入模式跳回命令模式的方法:按鍵每次進入輸入模式就可以打一段文字,在輸入模式下只能用^H及^U等基本終端機編輯功能,按完 後就不能退回修改了。要修改必須用 跳回命令模式。3. 命令模式在命令模式下才能移動遊標、作刪除的工作A. 移動遊標上左 h j k l 右下 承上例,打完ihello後按一次然後四個h回到第一行。B. 快速移動遊標w -- move a word ^B - page up (backword)b -- move back a word ^D - move down half a page^F - page down (forward) ^U - move up half a page另外可以在這些命令之前加數字,表示重複幾次。 10j 表示向下 10 行 10^F 表示向下 10 頁C. 刪除與Undo(還原)x -- 刪除一個字dd - 刪除一行u -- 還原上一個指令的影響(undo) 3x 表示刪除三個字 d8d 刪除八行D. 檔案處理在命令模式下ZZ -- save & quit:w! -- write (save) unconditionally:wq -- write & quit:w filename -- 把檔案存到 filename 這個檔去:q -- quit:q! -- do not save and quit:e filename -- edit:r filename -- read in a fileE. Ex Mode: 使 vi 暫時進入 ex 命令模式Q 使 vi 退回 ex Mode在 ex 下用 vi 命令可回到 vi modeF. 搜尋按斜線'/'可以對本文搜尋。 /hello 尋找含有hello的字串。G. vilearnvi的內容太多太雜,316室的工作站有個'程式'叫vilearn可以有效率的學習vi的使用。五、joe的使用joe使用很簡單,按CTRL-K H 就可以把按鍵印出來。比較特殊的是joe 提供區塊功能,可以把某區塊標示起來,然後做複製。此功能叫Block Commands。另外joe 也可以一次編輯數個檔案。(Windows)六、Jove & EmacsEmacs 非常的強,甚至可以在Emacs 裡面寫E-mail,讀News,下UNIX的命令。Emacs 的主要訴求就是作這些事的時候按鍵都相同。進Emacs 後鍵盤的輸入就是文字檔的內容。Emacs 的命令大部分以CTRL- 鍵開頭,有些鍵是以Meta鍵開頭例:方向鍵可以用之外,CTRL-P 上,previous line CTRL-N 下,next lineCTRL-B 左,backword CTRL-F 右,forward(注意:emacs的backword/forward與vi不同)CTRL-D deleteDEL backspaceCTRL-V Page downMETA-V Page UP各位一定會好奇,Meta怎麼按?所謂的META鍵並非每一種鍵盤都有。在工作站前,空白鍵旁有個小菱形的鍵即是。如果沒有META鍵的話,META-V 要按成。在Emacs內有一點要注意的是,Emacs認為刪除遊標左邊的字要用 鍵,而不是我們的直覺,鍵。原因就是鍵其實就是CTRL-H。而Emacs 內CTRL-H是用來顯示求助訊息的。CTRL-H b 列出目前按鍵的組合有哪些功能CTRL-H t 啟動emacs的教導使用程式jove沒有這個功能,但是有個外部程式叫teachjove。Emacs 的命令很多,很複雜,萬一不小心誤按了命令,可以按CTRL-G取消。CTRL-G在Emacs 內任何時刻都代表中斷、取消的意思。結束emacs可用(不存檔案)。Emacs/Jove按鍵不容易在講義上描述,以上的描述可提供各位初步的概念,以及在Emacs 內求生、以及全身而退的方法,大家有興趣可以下emacs 命令到Emacs的世界探險。X windows的所有編輯按鍵皆和Emacs 一樣,熟悉一點Emacs的按鍵用處蠻多的。七、info系統這裡並不想介紹info的使用,只是讓大家知道此係統的存在而已。在emacs 內按CTRL-H I或者在命令列下info指令就可以進入了。info系統是一個求助系統,比man 方便,讀起來也較方便。但是資料庫不大,只包含了Emacs 及一些程式發展工具的使用方法。□其他檔案處理的方法本節介紹UNIX處理檔案的一些程式一、壓縮檔一個檔案太大、不常用,可以把它壓縮起來,以節省空間。指令為compress/uncompress或gzip/gunzip。相關的程式有zcat, gzcat, zmore。 有份報告叫report,用compress壓過後叫report.Z,用gzip壓過後叫report.gz,要看這份報告可以用'zmore report'看。二、尋找字串尋找檔案內是否有所要的字串 grep "字串" 檔案cat 檔案 | grep 字串尋找字串的方法很多,比如說我想找所有以M開頭的行。此時必須引進pattern的觀念。以下是一些簡單的□例,以及說明:^M 以M開頭的行,^表示開始的意思M$ 以M結尾的行,$表示結束的意思^[0-9] 以數字開始的行,[]內可列舉字母^[124ab] 以1,2,4,a,或b開頭的行^b.503 句點表示任一字母* 星號表示0個以上的字母(可以沒有)+ 加號表示1個以上的字母. 斜線可以去掉特殊意義 ypcat passwd | grep ^b 列出大學部有申請帳號者名單ypcat passwd | grep ^s 列出交換學生申請帳號者名單ypcat passwd | grep '^b.503' 列出電機系各年級...grep '^.' myfile.txt 列出所有以句點開頭的行三、nroff標準的UNIX簡易排版指令。所謂的排版就是在文章間加入一些控制指令,讓nroff 這個程式讀。nroff 就會依照我們想要的方式把文章印出。相關的指令有tbl 表格產生器,eqn 數式產生器,以及pic 繪圖語言。有蠻多英文的UNIX書籍就是用這套程式印出來的。另外有個程式叫作troff ,其接受的命令與nroff 幾乎一樣,但是它的輸出比較高階,可以作為照相排版用。以下為一些小例子,首先用編輯器編寫以下檔案,命名為clock。┌————— clock ——————┐│.ce ││clock ││.sp 2 ││ ││ │└———————————————┘然後用以下的命令可以得到輸出:% nroff clock | more 預視% nroff clock | lpr 輸出到印表機nroff 的排版指令很多,有興趣的請自己參考書籍,因為它只能處理英文而已。四、TeX/LaTeX高階的排版程式,不是UNIX附的。主要用來做高品質的輸出,特別是數學符號的處理。國內倚天公司有PC版的 LaTeX,可以處理中文。(其實網路上也有免費的 TeX中文版,但是沒有人安裝,也不知道字形好不好看)五、awkawk 可視為超強的grep。或者說awk 是一個簡易的資料庫處理工具。 ypcat passwd | awk -F: '{print $1}' | more印出所有的使用者,passwd檔的第一欄。 ypcat passwd | awk -F: '$1 ~ /^b.503/ {print $1}' | more印出電機系的使用者。六、尋找檔案findfind . -name hello -print 尋找目前目錄及所有的子目錄內叫hello的檔案。find . -ctime +7 -print 找出七天內未被更動的檔案find . -size +2000m -print 找出大小超過2000 bytes的檔案find /tmp -user b1234567 -print 在/tmp下屬於b1234567的檔案find . -name '*.c' -exec rm {} ; 刪除所有的.c
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-938798/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- UNIX 中的檔案切割(轉)
- 處理檔名內含有特殊字元的檔案 (轉)字元
- ReiserFS檔案系統壞塊的處理(轉)
- unix口令檔案介紹(轉)
- unix下複製檔案(轉)
- UNIX檔案的SUID/SGID(轉)UI
- bat批處理轉換成exe檔案BAT
- [R]檔案處理
- bat處理檔案BAT
- bat檔案處理BAT
- unix freebsd 配製檔案(轉)
- UNIX系統下各檔案的作用(轉)
- 基於MFC的大型資料檔案處理方法 (轉)
- 檔案系統被破壞時的處理方法(轉)
- 關於applet寫入檔案的處理 (轉)APP
- 用shell處理二進位制檔案(轉)
- SCO UNIX系統root密碼丟失的處理(轉)密碼
- Linux學習之檔案處理命令(二)目錄處理命令 && 檔案處理命令Linux
- Unix與FreeBSD下檔案的屬性(轉)
- Python如何處理檔案的?Python
- 常見的檔案處理命令
- Unix/ELF檔案格式及病毒分析(轉)
- Unix檔案安全檢查利器- Tripwire(轉)
- Unix/ELF檔案格式及病毒分析 (轉)
- window 批處理檔案
- python處理檔案Python
- Go xml檔案處理GoXML
- python檔案處理Python
- python 檔案處理Python
- Python 檔案處理Python
- JAVA ZIP 處理檔案Java
- 批處理檔案命令
- 檔案處理函式函式
- Windows批處理檔案Windows
- bat批處理檔案BAT
- FileSystemObject 的例子(處理驅動器、資料夾、檔案) (轉)Object
- unix檔案操作
- Linux必學60個命令檔案處理(轉)Linux