?? 命令大集合.htm
字號:
<br>
<br>dd:刪除光標(biāo)所在的整行。在dd前可加上一個數(shù)字n,表示刪除當(dāng)前行及其后n-1行的內(nèi)容。
<br>
<br>D或d$:兩命令功能一樣,都是刪除從光標(biāo)所在處開始到行尾的內(nèi)容。
<br>
<br>d0:刪除從光標(biāo)前一個字符開始到行首的內(nèi)容。
<br>
<br>dw:刪除一個單詞。若光標(biāo)處在某個詞的中間,則從光標(biāo)所在位置開始刪至詞尾。同dd命令一樣,可在dw之前加一個數(shù)字n,表示刪除n個指定的單詞。
<br>
<br>如果用戶不小心進(jìn)行了誤刪除操作,也不要緊,Vi提供了恢復(fù)誤操作的命令,并且可以將恢復(fù)的內(nèi)容移動,放在文本的任何地方。恢復(fù)命令用&sup2; np,其中n為寄存器號。這是因?yàn)閂i內(nèi)部有9個用于維護(hù)刪除操作的寄存器,分別用數(shù)字1,2,&frac14; ,9表示,它們分別保存以往用dd命令刪除的內(nèi)容。這些寄存器組成一個隊(duì)列,例如最近一次使用dd命令刪除的內(nèi)容被放到寄存器1中;當(dāng)下次再使用dd命令刪除文本內(nèi)容時,Vi將把寄存器1的內(nèi)容轉(zhuǎn)存到寄存器2中,而寄存器1中又將是最近一次dd命令刪除的內(nèi)容。以此類推,Vi可以保存有最近九次用dd命令刪除的內(nèi)容,而前面的用dd命令刪除的內(nèi)容則被拋棄。
<br>
<br>[例18] 假設(shè)當(dāng)前編輯文件為xu.c
<br>
<br>/* this is a example */
<br>
<br>#include <stdio.h>
<br>
<br>void main( )
<br>
<br>{
<br>
<br>int i , j ;
<br>
<br>printf( “ please input a number : / n ” );
<br>
<br>scanf ( “ % d ” , &i ) ;
<br>
<br>j = i + 100 ;
<br>
<br>printf ( “ /n j = % d /n ” , j ) ;
<br>
<br>return ;
<br>
<br>}
<br>
<br>我們對其進(jìn)行如下操作:
<br>
<br>1. 將光標(biāo)移至文件第一行,按dd命令,此時文件第一行的內(nèi)容被刪除,且被刪除的內(nèi)容保存在寄存器1中;
<br>2. 按5j使光標(biāo)下移至第一個printf語句行;
<br>3. 按dd命令將該行刪除,此時寄存器1中將保存剛剛被刪除的內(nèi)容:
<br>
<br>printf (“ please input a number :\ n ” );
<br>
<br>而寄存器1原有的內(nèi)容:
<br>
<br>/* this is a example */
<br>
<br>則被保存到寄存器2中;
<br>
<br>在最末行模式下,也可以對文件內(nèi)容進(jìn)行刪除,但它只能刪除整行,一次可將某個指定范圍內(nèi)(起始行號,終止行號)的所有行全部刪除。需要注意的是,用此種方法進(jìn)行刪除時,Vi并不把所刪內(nèi)容放入寄存器中,因而當(dāng)發(fā)生誤刪除操作時,不能用&sup2; np命令恢復(fù),只能用u命令進(jìn)行有限的恢復(fù)。
<br>
<br>最后提一下,如何在文本輸入方式時將所輸入文本刪除。用戶使用<Ctrl+u>組合鍵即可,此時光標(biāo)將返回插入開始的位置,并且Vi仍處于文本輸入方式。
<br>
<br>
<br>
<br>取消上一命令(Undo)
<br>
<br>取消上一命令(Undo),也稱復(fù)原命令,是非常有用的命令,它可以取消前一次的誤操作或不合適的操作對文件造成的影響,使之回復(fù)到這種誤操作或不合適操作被執(zhí)行之前的狀態(tài)。
<br>
<br>取消上一命令有兩種形式,在命令模式下鍵入字符u和U。它們的功能都是取消剛才輸入的命令,恢復(fù)到原來的情況。小寫u和大寫U在具體細(xì)節(jié)上有所不同,二者的區(qū)別在于,大寫U命令的功能是恢復(fù)到誤操作命令前的情況,即如果插入命令后使用U命令,就刪除剛剛插入的內(nèi)容;如果刪除命令后使用U命令,就相當(dāng)于在光標(biāo)處又插入剛剛刪除的內(nèi)容。這里把所有修改文本的命令都視為插入命令。也就是說,U命令只能取消前一步操作,如果用U命令撤消了前一步操作,當(dāng)再按U鍵時,并不是撤消再前一步的操作,而是撤消了剛才U命令執(zhí)行的操作,也就是又恢復(fù)到第一次使用U命令之前的狀態(tài),結(jié)果是什么都沒做。而小寫u命令的功能是把當(dāng)前行恢復(fù)成被編輯前的狀態(tài),而不管此行被編輯了多少次。
<br>
<br>
<br>
<br>[例19] 原來屏幕顯示內(nèi)容為:
<br>
<br>#include <stdio.h>
<br>
<br>main ( )
<br>
<br>{
<br>
<br>}
<br>
<br>在命令模式下輸入命令o,插入一新行,輸入需要插入的內(nèi)容后再按<Esc>回到命令模式,屏幕顯示內(nèi)容為:
<br>
<br>#include <stdio.h>
<br>
<br>main ( )
<br>
<br>{
<br>
<br>printf ( “ How do you do ! ” ) ;
<br>
<br>}
<br>
<br>若想取消這一插入操作,請按命令U后,屏幕恢復(fù)到原來顯示的情況。
<br>
<br>注意:對于取消命令仍可以再使用取消命令。這時會產(chǎn)生一種“負(fù)負(fù)得正”的效果,文件狀態(tài)將恢復(fù)到第一次執(zhí)行取消命令之前的狀態(tài),如同沒做任何操作一般。例如在上例中,再使用一次命令U,屏幕將顯示的內(nèi)容仍為插入后的內(nèi)容。
<br>
<br>
<br>
<br>重復(fù)命令(Redo)
<br>
<br>重復(fù)命令也是一個非常常用的命令。在文本編輯中經(jīng)常會碰到需要機(jī)械地重復(fù)一些操作,這時就需要用到重復(fù)命令。它可以讓用戶方便地再執(zhí)行一次前面剛完成的某個復(fù)雜的命令。
<br>
<br>重復(fù)命令只能在命令模式下工作,在該模式下按“.”鍵既可。執(zhí)行一個重復(fù)命令時,其結(jié)果是依賴于光標(biāo)當(dāng)前位置的。
<br>
<br>[例20] 屏幕顯示內(nèi)容為:
<br>
<br>#include <stdio.h>
<br>
<br>main ( )
<br>
<br>{
<br>
<br>}
<br>
<br>輸入命令o,并輸入一行內(nèi)容后,再< Esc >返回到命令模式下,屏幕顯示內(nèi)容為:
<br>
<br>#include <stdio.h>
<br>
<br>main ( )
<br>
<br>{
<br>
<br>printf ( “ How do you do ! ” ) ;
<br>
<br>}
<br>
<br>此時輸入命令“.”,屏幕顯示內(nèi)容為:
<br>
<br>#include <stdio.h>
<br>
<br>main ( )
<br>
<br>{
<br>
<br>printf ( “ How do you do ! ” ) ;
<br>
<br>printf ( “ How do you do ! ” ) ;
<br>_________________
<br>碧軒
<br>人之初,性本色!
<br><a href="http://www.ourlinux.net/">http://www.ourlinux.net/</a>
<br><a href="http://yum.ourlinux.net/">http://yum.ourlinux.net/</a>
<br><a href="http://apt.ourlinux.net/">http://apt.ourlinux.net/</a>
<br><a href="http://download.ourlinux.net/">http://download.ourlinux.net/</a>
<br>游戲交易:<a href="http://www.0579tt.com/">http://www.0579tt.com/</a>
<br>
<br>返回頁首
<br>
<br>
<br>bixuan
<br>公社特別嘉賓
<br>
<br>
<br>
<br>注冊: Nov 23, 2002
<br>文章: 1994
<br>位置: 浙江金華
<br> 發(fā)表于: 2003-04-12, 9:14am 發(fā)表主題:
<br>
<br>--------------------------------------------------------------------------------
<br>
<br>shell命令[轉(zhuǎn)帖]
<br>shell是用戶和Linux操作系統(tǒng)之間的接口。Linux中有多種shell,其中缺省使用的是Bash。本章講述了shell的工作原理,shell的種類,shell的一般操作及Bash的特性。
<br>
<br> 什么是shell
<br>
<br>Linux系統(tǒng)的shell作為操作系統(tǒng)的外殼,為用戶提供使用操作系統(tǒng)的接口。它是命令語言、命令解釋程序及程序設(shè)計語言的統(tǒng)稱。
<br>
<br>shell是用戶和Linux內(nèi)核之間的接口程序,如果把Linux內(nèi)核想象成一個球體的中心,shell就是圍繞內(nèi)核的外層。當(dāng)從shell或其他程序向Linux傳遞命令時,內(nèi)核會做出相應(yīng)的反應(yīng)。
<br>
<br>shell是一個命令語言解釋器,它擁有自己內(nèi)建的shell命令集,shell也能被系統(tǒng)中其他應(yīng)用程序所調(diào)用。用戶在提示符下輸入的命令都由shell先解釋然后傳給Linux核心。
<br>
<br>有一些命令,比如改變工作目錄命令cd,是包含在shell內(nèi)部的。還有一些命令,例如拷貝命令cp和移動命令rm,是存在于文件系統(tǒng)中某個目錄下的單獨(dú)的程序。對用戶而言,不必關(guān)心一個命令是建立在shell內(nèi)部還是一個單獨(dú)的程序。
<br>
<br>shell首先檢查命令是否是內(nèi)部命令,若不是再檢查是否是一個應(yīng)用程序(這里的應(yīng)用程序可以是Linux本身的實(shí)用程序,如ls和rm,也可以是購買的商業(yè)程序,如xv,或者是自由軟件,如emacs)。然后shell在搜索路徑里尋找這些應(yīng)用程序(搜索路徑就是一個能找到可執(zhí)行程序的目錄列表)。如果鍵入的命令不是一個內(nèi)部命令并且在路徑里沒有找到這個可執(zhí)行文件,將會顯示一條錯誤信息。如果能夠成功找到命令,該內(nèi)部命令或應(yīng)用程序?qū)⒈环纸鉃橄到y(tǒng)調(diào)用并傳給Linux內(nèi)核。
<br>
<br>shell的另一個重要特性是它自身就是一個解釋型的程序設(shè)計語言,shell程序設(shè)計語言支持絕大多數(shù)在高級語言中能見到的程序元素,如函數(shù)、變量、數(shù)組和程序控制結(jié)構(gòu)。shell編程語言簡單易學(xué),任何在提示符中能鍵入的命令都能放到一個可執(zhí)行的shell程序中。
<br>
<br>當(dāng)普通用戶成功登錄,系統(tǒng)將執(zhí)行一個稱為shell的程序。正是shell進(jìn)程提供了命令行提示符。作為默認(rèn)值(TurboLinux系統(tǒng)默認(rèn)的shell是BASH),對普通用戶用“$”作提示符,對超級用戶(root)用“#”作提示符。
<br>
<br>一旦出現(xiàn)了shell提示符,就可以鍵入命令名稱及命令所需要的參數(shù)。shell將執(zhí)行這些命令。如果一條命令花費(fèi)了很長的時間來運(yùn)行,或者在屏幕上產(chǎn)生了大量的輸出,可以從鍵盤上按ctrl+c發(fā)出中斷信號來中斷它(在正常結(jié)束之前,中止它的執(zhí)行)。
<br>
<br>當(dāng)用戶準(zhǔn)備結(jié)束登錄對話進(jìn)程時,可以鍵入logout命令、exit命令或文件結(jié)束符(EOF)(按ctrl+d實(shí)現(xiàn)),結(jié)束登錄。
<br>
<br>我們來實(shí)習(xí)一下shell是如何工作的。
<br>
<br>$ make work
<br>
<br>make:***No rule to make target ‘work’. Stop.
<br>
<br>$
<br>
<br>注釋:make是系統(tǒng)中一個命令的名字,后面跟著命令參數(shù)。在接收到這個命令后,shell便執(zhí)行它。本例中,由于輸入的命令參數(shù)不正確,系統(tǒng)返回信息后停止該命令的執(zhí)行。
<br>
<br>在例子中,shell會尋找名為make的程序,并以work為參數(shù)執(zhí)行它。make是一個經(jīng)常被用來編譯大程序的程序,它以參數(shù)作為目標(biāo)來進(jìn)行編譯。在“make work”中,make編譯的目標(biāo)是work。因?yàn)閙ake找不到以work為名字的目標(biāo),它便給出錯誤信息表示運(yùn)行失敗,用戶又回到系統(tǒng)提示符下。
<br>
<br>另外,用戶鍵入有關(guān)命令行后,如果shell找不到以其中的命令名為名字的程序,就會給出錯誤信息。例如,如果用戶鍵入:
<br>
<br>$ myprog
<br>
<br>bash:myprog:command not found
<br>
<br>$
<br>
<br>可以看到,用戶得到了一個沒有找到該命令的錯誤信息。用戶敲錯命令后,系統(tǒng)一般會給出這樣的錯誤信息。
<br>
<br>shell的種類
<br>
<br>Linux中的shell有多種類型,其中最常用的幾種是Bourne shell(sh)、C shell(csh)和Korn shell(ksh)。三種shell各有優(yōu)缺點(diǎn)。Bourne shell是UNIX最初使用的shell,并且在每種UNIX上都可以使用。Bourne shell在shell編程方面相當(dāng)優(yōu)秀,但在處理與用戶的交互方面做得不如其他幾種shell。Linux操作系統(tǒng)缺省的shell是Bourne Again shell,它是Bourne shell的擴(kuò)展,簡稱Bash,與Bourne shell完全向后兼容,并且在Bourne shell的基礎(chǔ)上增加、增強(qiáng)了很多特性。Bash放在/bin/bash中,它有許多特色,可以提供如命令補(bǔ)全、命令編輯和命令歷史表等功能,它還包含了很多C shell和Korn shell中的優(yōu)點(diǎn),有靈活和強(qiáng)大的編程接口,同時又有很友好的用戶界面。
<br>
<br>C shell是一種比Bourne shell更適于編程的shell,它的語法與C語言很相似。 Linux為喜歡使用C shell的人提供了Tcsh。Tcsh是C shell的一個擴(kuò)展版本。Tcsh包括命令行編輯、可編程單詞補(bǔ)全、拼寫校正、歷史命令替換、作業(yè)控制和類似C語言的語法,它不僅和Bash shell是提示符兼容,而且還提供比Bash shell更多的提示符參數(shù)。
<br>
<br>Korn shell集合了C shell和Bourne shell的優(yōu)點(diǎn)并且和Bourne shell完全兼容。Linux系統(tǒng)提供了pdksh(ksh的擴(kuò)展),它支持任務(wù)控制,可以在命令行上掛起、后臺執(zhí)行、喚醒或終止程序。
<br>
<br>Linux并沒有冷落其他shell用戶,還包括了一些流行的shell如ash、zsh等。每個shell都有它的用途,有些shell是有專利的,有些能從Internet網(wǎng)上或其他來源獲得。要決定使用哪個shell,只需讀一下各種shell的聯(lián)機(jī)幫助,并試用一下。
<br>
<br>用戶在登錄到Linux時由/etc/passwd文件來決定要使用哪個shell。例如:
<br>
<br># fgrep lisa /etc/passwd
<br>
<br>lisa:x:500:500:TurboLinux User:/home/lisa:/bin/bash
<br>
<br>shell被列每行的末尾(/bin/bash)。
<br>
<br>由于Bash是Linux上缺省的shell,本章主要介紹Bash及其相關(guān)知識。
<br>
<br>shell命令
<br>
<br>命令行c
<br>
<br>用戶登錄到Linux系統(tǒng)時,可以看到一個shell提示符,標(biāo)識了命令行的開始。用戶可以在提示符后面輸入任何命令及參數(shù)。例如:
<br>
<br>$ date
<br>
<br>二 11 23 01:34:58 CST 1999
<br>
<br>$
<br>
<br>用戶登錄時,實(shí)際進(jìn)入了shell,它遵循一定的語法將輸入的命令加以解釋并傳給系統(tǒng)。命令行中輸入的第一個字必須是一個命令的名字,第二個字是命令的選項(xiàng)或參數(shù),命令行中的每個字必須由空格或TAB隔開,格式如下:
<br>
<br>$ Command Option Arguments
<br>
<br>1. 選項(xiàng)和參數(shù)
<br>
<br>選項(xiàng)是包括一個或多個字母的代碼,它前面有一個減號(減號是必要的,Linux用它來區(qū)別選項(xiàng)和參數(shù)),選項(xiàng)可用于改變命令執(zhí)行的動作的類型。例如:
<br>
<br>$ ls
<br>
<br>motd passwd
<br>
<br>$
<br>
<br>這是沒有選項(xiàng)的ls命令,可列出當(dāng)前目錄中所有文件,只列出各個文件的名字,而不顯示其他更多的信息。
<br>
<br>$ ls -l
<br>
<br>total 2
<br>
<br>-rw-r--r-- 2 wzh book 22 Apr 20 20:37 motd
<br>
<br>-rw-r--r-- 2 wzh book 796 Apr 20 20:37 passwd
<br>
<br>$
<br>
<br>加入-l選項(xiàng),將會為每個文件列出一行信息,諸如數(shù)據(jù)大小和數(shù)據(jù)最后被修改的時間。
<br>
<br>大多數(shù)命令都被設(shè)計為可以接納參數(shù)。參數(shù)是在命令行中的選項(xiàng)之后鍵入的一個或多個單詞,例如:
<br>
<br>$ ls -l text
<br>
<br>-rw-r--r-- 2 wzh book 22 Apr 20 20:37 motd
<br>
<br>-rw-r--r-- 2 wzh book 796 Apr 20 20:37 passwd
<br>
<br>$
<br>
<br>將顯示text目錄下的所有文件及其信息。
<br>
<br>有些命令,如ls可以帶參數(shù),而有一些命令可能需要一些最小數(shù)目的參數(shù)。例如,cp命令至少需要兩個參數(shù),如果參數(shù)的數(shù)目與命令要求不符,shell將會給出出錯信息。例如:
<br>
<br>$ cp -i mydata newdata
<br>
<br>注意:命令行中選項(xiàng)先于參數(shù)輸入。
<br>2. 命令行特征
<br>
<br>命令行實(shí)際上是可以編輯的一個文本緩沖區(qū),在按回車之前,可以對輸入的文本進(jìn)行編輯。比如利用BACKSPACE鍵可以刪除剛鍵入的字符,可以進(jìn)行整行刪除,還可以插入字符,使得用戶在輸入命令,尤其是復(fù)雜命令時,若出現(xiàn)鍵入錯誤,無須重新輸入整個命令,只要利用編輯操作,即可改正錯誤。
<br>
<br>利用上箭頭可以重新顯示剛執(zhí)行的命令,利用這一功能可以重復(fù)執(zhí)行以前執(zhí)行過的命令,而無須重新鍵入該命令。
<br>
<br>bash保存著以前鍵入過的命令的列表,這一列表被稱為命令歷史表。按動上箭頭,便可以在命令行上逐次顯示各條命令。同樣,按動下箭頭可以在命令列表中向下移動,這樣可以將以前的各條命令顯示在命令行上,用戶可以修改并執(zhí)行這些命令。這一特征將在10.4節(jié)中進(jìn)行詳細(xì)的論述。
<br>
<br>在一個命令行中還可以置入多個命令,用分號將各個命令隔開。例如:
<br>
<br>$ ls -F;cp -i mydata newdata
<br>
<br>也可以在幾個命令行中輸入一個命令,用反斜杠將一個命令行持續(xù)到下一行。
<br>
<br>$ cp –i
<br>
<br>mydata
<br>
<br>newdata
<br>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -