linux知識(shí)寶庫(kù)基礎(chǔ)知識(shí)linux知識(shí)大全_第1頁(yè)
linux知識(shí)寶庫(kù)基礎(chǔ)知識(shí)linux知識(shí)大全_第2頁(yè)
linux知識(shí)寶庫(kù)基礎(chǔ)知識(shí)linux知識(shí)大全_第3頁(yè)
linux知識(shí)寶庫(kù)基礎(chǔ)知識(shí)linux知識(shí)大全_第4頁(yè)
linux知識(shí)寶庫(kù)基礎(chǔ)知識(shí)linux知識(shí)大全_第5頁(yè)
已閱讀5頁(yè),還剩77頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、linux知識(shí)寶庫(kù)基礎(chǔ)知識(shí)linux知識(shí)大全 linux知識(shí)大全2004-04-23 15:18 pm作者:作者來(lái)自:無(wú)名shell命令bash 是大多數(shù)linux系統(tǒng)的缺省外殼。它克服了Bourne 外殼的缺點(diǎn),又和Bourne 外殼完全兼容。Bash有以下的特點(diǎn):補(bǔ)全命令行。當(dāng)你在bash 命令提示符下輸入命令或程序名時(shí),你不必輸全命令或程序名,按Tab 鍵,bash將自動(dòng)補(bǔ)全命令或程序名。通配符。在bash下可以使用通配符* 和?。*可以替代多個(gè)字符,而?則替代一個(gè)字符。歷史命令。bash能自動(dòng)跟蹤你每次輸入的命令,并把輸入的命令保存在歷史列表緩沖區(qū)。緩沖區(qū)的大小由HISTSIZE變量控

2、制。當(dāng)你每次登錄后,home目錄下的.bash_history 文件將初始化你的歷史列表緩沖區(qū)。你也能通過(guò)history 和fc 命令執(zhí)行、編輯歷史命令。別名。在bash下,可用alias 和unalias 命令給命令或可執(zhí)行程序起別名和清除別名。這樣你可以用自己習(xí)慣的方式輸入命令。輸入/輸出重定向。輸入重定向用于改變命令的輸入,輸出重定向用于改變命令的輸出。輸出重定向更為常用,它經(jīng)常用于將命令的結(jié)果輸入到文件中,而不是屏幕上。輸入重定向的命令是。管道。管道用于將一系列的命令連接起來(lái)。也就是把前面的命令的輸出作為后面的命令的輸入。管道的命令是|。提示符。bash有兩級(jí)提示符。第一級(jí)提示符就是你

3、登錄外殼時(shí)見(jiàn)到的,缺省為$。你可以通過(guò)重新給ps1變量賦值來(lái)改變第一級(jí)提示符。當(dāng)bash需要進(jìn)一步提示以便補(bǔ)全命令時(shí),會(huì)顯示第二級(jí)提示符。第二級(jí)提示符缺省為,你可以通過(guò)重新給ps2變量賦值來(lái)改變第二級(jí)提示符。一些特殊意義的字符也可以加入提示符賦值中。作業(yè)控制。作業(yè)控制是指在一個(gè)作業(yè)執(zhí)行過(guò)程中,控制執(zhí)行的狀態(tài)。你可以?huà)炱鹨粋€(gè)正在執(zhí)行的進(jìn)程,并在以后恢復(fù)該進(jìn)程的執(zhí)行。按下Ctrl+Z 掛起正在執(zhí)行的進(jìn)程,用bg命令使進(jìn)程恢復(fù)在后臺(tái)執(zhí)行,用fg命令使進(jìn)程恢復(fù)在前臺(tái)執(zhí)行。這里列出的僅僅是最常用的bash命令子集,其他不太常用,但是在某方面有特殊用途的命令會(huì)在這個(gè)技術(shù)問(wèn)題的目錄下專(zhuān)門(mén)提到(例如:nche

4、ck命令會(huì)在文件系統(tǒng)維護(hù)里介紹)目錄用戶(hù)常用查找find命令用于搜索目錄樹(shù),并對(duì)目錄樹(shù)上的所有文件執(zhí)行某種操作,參數(shù)是目錄名表(指出從哪些起點(diǎn)開(kāi)始搜索),還可給出一個(gè)或多個(gè)選項(xiàng),規(guī)定對(duì)每個(gè)文件執(zhí)行什么操作。find / -print 將列出當(dāng)前工作目錄下的目錄樹(shù)的每一個(gè)文件。find / -user bob -print 將列出在系統(tǒng)中可找到的屬于bob用戶(hù)的所有文件。find /usr/bob -perm 666 -print 將列出/usr/bob目錄樹(shù)下所有存取許可為666的文件。若將666改為-666則將列出所有具有包含了666在內(nèi)的存取許可方式的文件(如777)。find /usr/

5、bob -type b -print 將列出/usr/bob目錄樹(shù)下所有塊特別文件(c為字符特別文件)。find / -user root -perm -4000 -exec ls -l ; 是一個(gè)較復(fù)雜的命令,-exec COMMAND;允許對(duì)所找到的每個(gè)文件運(yùn)行指定的命令COMMAND。若COMMAND中含有 ,則 將由f i nd所找到的文件名替換。COMMAND必須以 ;結(jié)束。各選項(xiàng)可組合使用以達(dá)到更強(qiáng)的功能。遠(yuǎn)程登陸語(yǔ)法:rlogin 主機(jī)名-1 用戶(hù)名例如:rlogin doc 遠(yuǎn)程登錄到工作站doc 中。rlogin doc -l user 使用user 帳號(hào)登錄到工作站doc

6、中。語(yǔ)法:telnet 主機(jī)名或telnet IP地址例如:telnet doctelnet 51更改密碼語(yǔ)法: passwdOld password: New password: Retype new password: 檢查自己所屬的工作組名稱(chēng)語(yǔ)法:groups查看系統(tǒng)中的用戶(hù)語(yǔ)法: who 或finger語(yǔ)法: who語(yǔ)法: finger 用戶(hù)名或finger 用戶(hù)名域名改變用戶(hù)名語(yǔ)法: su 用戶(hù)名例如:su user 進(jìn)入用戶(hù)user 的帳號(hào)。passwrod : 查看自己用戶(hù)名語(yǔ)法: whoami 查看登錄時(shí)的用戶(hù)名。語(yǔ)法: whoami 查看當(dāng)前的用戶(hù)名。

7、若已執(zhí)行過(guò)su命令,則顯示出此用戶(hù)的用戶(hù)名。查看當(dāng)前系統(tǒng)上所有工作站的用戶(hù)語(yǔ)法: rusers按Ctrl+C 結(jié)束與某工作站上的用戶(hù)交談?wù)Z法: talk 用戶(hù)名主機(jī)名或talk 用戶(hù)名 I P地址例如:1) 可先利用rusers 指令查看網(wǎng)絡(luò)上的用戶(hù);2) 假設(shè)自己的帳號(hào)是u84987 ,在工作站indian 上使用,現(xiàn)在想要與doc 上的u84123 交談。talk u84123doc此時(shí)屏幕上將會(huì)出現(xiàn)等待畫(huà)面在對(duì)方( u84123 )屏幕上將會(huì)出現(xiàn)下列信息:Message from Talk_DaemonLocal_host_name at xx:xxtalk: connection re

8、quested by u84987indiantalk: respond with: talk u84987indian此時(shí)對(duì)方(u84123) 必須執(zhí)行talk u84987indian 即可互相交談。最后可按Ctrl + C結(jié)束。顯示文檔幫助語(yǔ)法: man 命令例如:man ls語(yǔ)法:howto 主題例如:howto man目錄-文件或目錄處理列出文件或目錄下的文件名。語(yǔ)法: ls -atFlgR namename :文件名或目錄名。例如:ls 列出目前目錄下的文件名。ls -a 列出包括以開(kāi)始的隱藏文件的所有文件名。ls -t 依照文件最后修改時(shí)間的順序列出文件名。ls -F 列出當(dāng)前目

9、錄下的文件名及其類(lèi)型。以/ 結(jié)尾表示為目錄名,以* 結(jié)尾表示為可執(zhí)行文件,以 結(jié)尾表示為符號(hào)連接。ls -l 列出目錄下所有文件的權(quán)限、所有者、文件大小、修改時(shí)間及名稱(chēng)。ls -lg 同上,并顯示出文件的所有者工作組名。ls -R 顯示出目錄下以及其所有子目錄的文件名。改變當(dāng)前工作目錄語(yǔ)法:cd namename:目錄名、路徑或目錄縮寫(xiě)。例如:cd 改變目錄位置至用戶(hù)登錄時(shí)的工作目錄。cd dir1 改變目錄位置至d i r 1目錄下。cd user 改變目錄位置至用戶(hù)的工作目錄。cd . 改變目錄位置至當(dāng)前目錄的父目錄。cd ./user 改變目錄位置至相對(duì)路徑user 的目錄下。cd /.

10、/. 改變目錄位置至絕對(duì)路徑的目錄位置下。cd 改變目錄位置至用戶(hù)登錄時(shí)的工作目錄。復(fù)制文件或目錄語(yǔ)法: cp -r 源地址目的地址例如:cp file1 file2 將文件file1 復(fù)制成file2。cp file1 dir1 將文件file1 復(fù)制到目錄dir1 下,文件名仍為file1。cp /tmp/file1 . 將目錄/tmp 下的文件file1 復(fù)制到當(dāng)前目錄下,文件名仍為file1。cp /tmp/file1 file2 將目錄/tmp 下的文件file1 復(fù)制到當(dāng)前目錄下,文件名為file2。cp -r dir1 dir2 復(fù)制整個(gè)目錄。移動(dòng)文件目錄或修改名稱(chēng)語(yǔ)法: mv

11、源地址目的地址例如:mv file1 file2 將文件file1更名為file2。mv file1 dir1 將文件file1移到目錄dir1 下,文件名仍為file1。mv dir1 dir2 將目錄dir1 更改為目錄dir2。建立新的目錄語(yǔ)法: mkdir 目錄名例如:mkdir dir1 建立一新目錄dir1。刪除目錄語(yǔ)法: rmdir 目錄名或rm 目錄名例如:rmdir dir1 刪除目錄dir1,但dir1 下必須沒(méi)有文件存在,否則無(wú)法刪除。rm -r dir1 刪除目錄dir1及其子目錄下所有文件。刪除文件語(yǔ)法: rm 文件名例如:rm file1 刪除文件名為file1 的

12、文件。rm file? 刪除文件名中有五個(gè)字符且前四個(gè)字符為file 的所有文件。rm f* 刪除文件名中以f 為字首的所有文件。列出當(dāng)前所在的目錄位置語(yǔ)法: pwd查看文件內(nèi)容語(yǔ)法: cat 文件名例如:cat file1 以連續(xù)顯示方式,查看文件名file1 的內(nèi)容。分頁(yè)查看文件內(nèi)容語(yǔ)法: more 文件名或cat 文件名| more例如:more file1 以分頁(yè)方式查看文件名file1 的內(nèi)容。cat file1 | more 以分頁(yè)方式查看文件名file1 的內(nèi)容。查看目錄所占磁盤(pán)容量語(yǔ)法: du -s 目錄例如:du dir1 顯示目錄dir1 的總?cè)萘考捌渥幽夸浀娜萘?以KB

13、為單位)。du -s dir1 顯示目錄dir1 的總?cè)萘?。文件的鏈接同一文件,可擁有一個(gè)以上的名稱(chēng),也就是把一個(gè)文件進(jìn)行鏈接。語(yǔ)法:ln 老文件名新文件名例如:ln file1 file2 將文件file2鏈接至文件file1。語(yǔ)法:ln -s 老文件名新文件名例如:ln -s file3 file4 將文件file4 鏈接至文件file3。目錄-文件內(nèi)容操作改變文件或目錄的最后修改時(shí)間語(yǔ)法:touch namename:文件名或目錄名。2.3.21 文件中字符串的查尋語(yǔ)法:grep string file例如:grep abc file1 尋找文件f i l e 1中包含字符串a(chǎn)bc 所在

14、行的文本內(nèi)容。查尋文件或命令的路徑語(yǔ)法:whereis command 顯示命令的路徑。語(yǔ)法:which command 顯示命令的路徑,及使用者所定義的別名。語(yǔ)法:whatis command 顯示命令功能的摘要。語(yǔ)法:find search-path -name filename -print 搜尋指定路徑下某文件的路徑。例如:find / -name file1 -print 自根目錄下尋找文件file1 的路徑。比較文件或目錄的內(nèi)容語(yǔ)法:diff -r name1 name2name1 name2:可同時(shí)為文件名或目錄名。例如:diff file1 file2 比較文件file1 與f

15、ile2 內(nèi)各行的不同之處。diff -r dir1 dir2 比較目錄dir1 與dir2 內(nèi)各文件的不同之處。文件打印輸出用戶(hù)可用.login 文件中的setenv PRINTER來(lái)設(shè)定打印機(jī)名。例如:setenv PRINTER sp 設(shè)定自sp 打印機(jī)打印資料。一般文件的打印語(yǔ)法:lpr -P打印機(jī)名 文件名例如:lpr file1 或lpr -Psp file1 自sp打印機(jī)打印文件file1。語(yǔ)法:enscript -P打印機(jī)名 文件名例如:enscript file3 或enscript -Psp file3 自sp打印機(jī)打印文件file3。troff 文件的打印語(yǔ)法:ptrof

16、f -P打印機(jī)名 -man-ms 文件名例如:ptroff -Psp -man /usr/man/man1/lpr1 以troff 格式,自sp 打印機(jī)打印lpr1 命令的使用說(shuō)明。目錄-文件傳輸1. 拷貝文件或目錄至遠(yuǎn)程工作站語(yǔ)法: rcp -r 源地址主機(jī)名:目的地址源地址文件名、目錄名或路徑。主機(jī)名工作站名。目的地址路徑名稱(chēng)。例如:rcp file1 doc:/home/user 將文件f i l e 1拷貝到工作站doc 路徑/home/user 下。rcp -r dir1 doc:/home/user 將目錄d i r 1拷貝到工作站doc 路徑/home/user 下。2. 自遠(yuǎn)程

17、工作站,拷貝文件或目錄語(yǔ)法: rcp -r 主機(jī)名:源地址目的地址主機(jī)名工作站名。源地址路徑名。目的地址、文件名、目錄名或路徑。例如:rcp doc:/home/user/file1 file2 將工作站d o c路徑/home/user 下的目錄d i r 1,拷貝到當(dāng)前工作站的目錄下,目錄名仍為d i r 1。rcp -r doc:/home/user/dir1 . 將工作站doc 路徑/home/user 下的目錄d i r 1,拷貝到當(dāng)前工作站的目錄下,目錄名仍為d i r 1。3. 本地工作站與遠(yuǎn)程工作站之間的文件傳輸必須擁有遠(yuǎn)程工作站的帳號(hào)及密碼,才可進(jìn)行傳輸工作。語(yǔ)法: ftp

18、主機(jī)名或ftp ip地址例如:ftp doc 與遠(yuǎn)程工作站doc 之間進(jìn)行文件傳輸。Name (doc:user-name): Password (doc:user-password): ftp help 列出ftp 文件傳輸時(shí)可使用的命令。ftp !ls 列出本地工作站當(dāng)前目錄下的所有文件名。ftp !pwd 列出本地工作站當(dāng)前所在的目錄位置。ftp ls 列出遠(yuǎn)程工作站當(dāng)前目錄下的所有文件名。ftp dir 列出遠(yuǎn)程工作站當(dāng)前目錄下的所有文件名。ftp dir . |more 分頁(yè)列出遠(yuǎn)程工作站當(dāng)前目錄下的所有文件名。ftp pwd 列出遠(yuǎn)程工作站當(dāng)前所在的目錄位置。ftp cd dir1

19、 更改遠(yuǎn)程工作站的工作目錄位置至dir1 之下。ftp get file1 將遠(yuǎn)程工作站的文件f i l e 1拷貝到本地工作站中。ftp put file2 將本地工作站的文件f i l e 2拷貝到遠(yuǎn)程工作站中。ftp mget *.c 將遠(yuǎn)程工作站中擴(kuò)展文件名為c 的所有文件拷貝到本地工作站中。ftp mput *.txt 將本地工作站中擴(kuò)展文件名為txt 的所有文件拷貝到遠(yuǎn)程工作站中。ftp prompt 切換交互式指令(使用mput/mget 時(shí)不是每個(gè)文件皆詢(xún)問(wèn)y e s / n o )。ftp quit 結(jié)束ftp 工作。ftp bye 結(jié)束ftp 工作。注意從PC與工作站間的文

20、件傳輸也可透過(guò)在PC端的FTP指令進(jìn)行文件傳輸,指令用法與上述指令大致相同。目錄-文件權(quán)限的設(shè)定改變文件或目錄的讀、寫(xiě)、執(zhí)行權(quán)限語(yǔ)法:chmod -R mode namename:文件名或目錄名。mode: 3個(gè)8位數(shù)字或rwx的組合。r-read (讀),w-write (寫(xiě)),x-execute (執(zhí)行),u-user (當(dāng)前用戶(hù)),g-group(組),o-other(其他用戶(hù))。例如:chmod 755 dir1 對(duì)于目錄dir1,設(shè)定成任何使用者皆有讀取及執(zhí)行的權(quán)利,但只有所有者可做修改。chmod 700 file1 對(duì)于文件file1,設(shè)定只有所有者可以讀、寫(xiě)和執(zhí)行的權(quán)利。chm

21、od u+x file2 對(duì)于文件file2,增加當(dāng)前用戶(hù)可以執(zhí)行的權(quán)利。chmod g+x file3 對(duì)于文件file3,增加工作組使用者可執(zhí)行的權(quán)利。chmod o-r file4 對(duì)于文件file4,刪除其他使用者可讀取的權(quán)利。改變文件或目錄的所有權(quán)語(yǔ)法:chown -R 用戶(hù)名namename:文件名或目錄名。例如:chown user file1 將文件file1 改為用戶(hù)user 所有。chown -R user dir1 將目錄dir1及其子目錄下面的所有文件改為用戶(hù)user 所有。改變文件或目錄工作組所有權(quán)語(yǔ)法:chgrp -R 工作組名namename:文件名或目錄名例如:

22、chgrp vlsi file1 將文件file1 的工作組所有權(quán)改為vlsi 工作組所有。chgrp -R image dir1 將目錄dir1及其子目錄下面的所有文件,改為image 工作組所有。目錄-進(jìn)程控制1查看系統(tǒng)中的進(jìn)程語(yǔ)法:ps -aux例如:p s或ps -x 查看系統(tǒng)中,屬于自己的進(jìn)程。ps -au 查看系統(tǒng)中,所有用戶(hù)的進(jìn)程。ps -aux 查看系統(tǒng)中,包含系統(tǒng)內(nèi)部的及所有用戶(hù)的進(jìn)程。2. 結(jié)束或終止進(jìn)程語(yǔ)法:kill -9 PIDPID:利用ps 命令所查出的進(jìn)程號(hào)。例如:kill 456或kill -9 456 終止進(jìn)程號(hào)為456 的進(jìn)程。3. 在后臺(tái)執(zhí)行進(jìn)程的方式語(yǔ)法

23、:命令&例如:cc file1.c & 將編譯file1.c 文件的工作置于后臺(tái)執(zhí)行。語(yǔ)法:按下Control+Z鍵,暫停正在執(zhí)行的進(jìn)程。鍵入bg命令,將暫停的進(jìn)程置于后臺(tái)繼續(xù)執(zhí)行。例如:cc file2.c ZStoppedbg4. 查看正在后臺(tái)中執(zhí)行的進(jìn)程語(yǔ)法:jobs5. 結(jié)束或終止后臺(tái)中的進(jìn)程語(yǔ)法:kill %nn:利用jobs命令查看出的后臺(tái)作業(yè)號(hào)例如:kill % 終止在后臺(tái)中的第一個(gè)進(jìn)程。kill %2 終止在后臺(tái)中的第二個(gè)進(jìn)程。目錄-命令管道語(yǔ)法:命令1 | 命令2 將命令1的執(zhí)行結(jié)果送到命令2,做為命令2的輸入。例如:ls -Rl | more 以分頁(yè)方式列出當(dāng)前目錄及其子目

24、錄下所有文件的名稱(chēng)。cat file1 | more 以分頁(yè)方式列出文件file1 的內(nèi)容。目錄-輸入輸出控制1. 標(biāo)準(zhǔn)輸入的控制語(yǔ)法:命令 list 將執(zhí)行“l(fā)s -l” 命令的結(jié)果寫(xiě)入文件list 中。語(yǔ)法:命令! 文件將命令的執(zhí)行結(jié)果送至指定的文件中,若文件已經(jīng)存在,則覆蓋。例如:ls -lg ! list 將執(zhí)行“l(fā)s - lg” 命令的結(jié)果覆蓋寫(xiě)入文件list 中。語(yǔ)法:命令& 文件將命令執(zhí)行時(shí)屏幕上所產(chǎn)生的任何信息寫(xiě)入指定的文件中。例如:cc file1.c & error 將編譯file1.c 文件時(shí)所產(chǎn)生的任何信息寫(xiě)入文件error 中。語(yǔ)法:命令 文件將命令執(zhí)行的結(jié)果附加到指

25、定的文件中。例如:ls - lag list 將執(zhí)行“l(fā)s - lag” 命令的結(jié)果附加到文件list 中。語(yǔ)法:命令& 文件將命令執(zhí)行時(shí)屏幕上所產(chǎn)生的任何信息附加到指定的文件中。例如:cc file2.c & error 將編譯file2.c 文件時(shí)屏幕所產(chǎn)生的任何信息附加到文件error 中。目錄-編輯目錄-ViVi 輸入模式要如何輸入資料呢?有好幾個(gè)指令可以進(jìn)入輸入模式:新增 (append)a 從游標(biāo)所在位置後面開(kāi)始新增資料,游標(biāo)後的資料隨新增資料向後移動(dòng)。A 從游標(biāo)所在列最後面的地方開(kāi)始新增資料。插入 (insert)i 從游標(biāo)所在位置前面開(kāi)始插入資料,游標(biāo)後的資料隨新增資料向後移動(dòng)

26、。I 從游標(biāo)所在列的第一個(gè)非空白字元前面開(kāi)始插入資料。開(kāi)始 (open)o 在游標(biāo)所在列下新增一列并進(jìn)入輸入模式。O 在游標(biāo)所在列上方新增一列并進(jìn)入輸入模式。也許文字?jǐn)⑹隹雌饋?lái)有點(diǎn)繁雜,但是只要實(shí)際操作一下馬上可以了解這些操作方式。實(shí)務(wù)很重要,尤其是電腦方面的東西隨時(shí)可以嘗試及驗(yàn)證結(jié)果。極力建議實(shí)際去使用它而不要只是猛 文件,才有事半功倍的效用。(注:此段為廢話(huà)。)Vi 基本編輯配合一般鍵盤(pán)上的功能鍵,像是方向鍵、Insert 、Delete 等等,現(xiàn)在你應(yīng)該已經(jīng)可以利用 vi 來(lái)處理文字資料了。當(dāng)然 vi 還提供其他許許多多功能讓文字的處理更形方便,有興趣的看倌請(qǐng)繼續(xù)。在繼續(xù)下去之前先來(lái)點(diǎn)

27、BCC 吧。電腦有許多廠(chǎng)牌,不同的硬體及作業(yè)系統(tǒng)。PC 也不是僅僅只有 IBM PC 及其相容品而已。事實(shí)上,包括鍵盤(pán),終端機(jī)等等往往都有不同的規(guī)格。這代表什麼?在文書(shū)編輯軟體上會(huì)遇這樣的問(wèn)題,某些電腦的鍵盤(pán)上沒(méi)有特定的幾個(gè)功能鍵!那麼不就有某些功能不能用了?這個(gè)問(wèn)題在 Unix系統(tǒng)上也一樣,幾乎各大電腦廠(chǎng)商都有自己的 Unix 系統(tǒng),而 vi 的操作方法也會(huì)隨之有點(diǎn)出入。我們固然可以用 PC 的鍵盤(pán)來(lái)說(shuō)明 vi的操作,但是還是得提一下這個(gè)問(wèn)題。刪除與修改何謂編輯?在這里我們認(rèn)為是文字的新增修改以及刪除,甚至包括文字區(qū)塊的搬移、復(fù)制等等。這里先介紹 vi 的如何做刪除與修改。(注意:在 vi的

28、原始觀(guān)念里,輸入跟編輯是兩碼子事。編輯是在指令模式下操作的,先利用指令移動(dòng)游標(biāo)來(lái)定位要進(jìn)行編輯的地方,然後才下指令做編輯。)x 刪除游標(biāo)所在字元。dd 刪除游標(biāo)所在的列。r 修改游標(biāo)所在字元,r 後接著要修正的字元。R 進(jìn)入取代狀態(tài),新增資料會(huì)覆蓋原先資料,直到按 ESC 回到指令模式下為止。s 刪除游標(biāo)所在字元,并進(jìn)入輸入模式。S 刪除游標(biāo)所在的列,并進(jìn)入輸入模式。其實(shí)呢,在 PC 上根本沒(méi)有這麼麻煩!輸入跟編輯都可以在輸入模式下完成。例如要?jiǎng)h除字元,直接按 Delete不就得了。而插入狀態(tài)與取代狀態(tài)可以直接用 Insert切換,犯不著用什麼指令模式的編輯指令。不過(guò)就如前面所提到的,這些指令

29、幾乎是每臺(tái)終端機(jī)都能用,而不是僅僅在 PC 上。在指令模式下移動(dòng)游標(biāo)的基本指令是 h, j, k, l 。想來(lái)各位現(xiàn)在也應(yīng)該能猜到只要直接用 PC 的方向鍵就可以了,而且無(wú)論在指令模式或輸入模式下都可以。多容易不是。當(dāng)然 PC 鍵盤(pán)也有不足之處。有個(gè)很好用的指令 u 可以恢復(fù)被刪除的資料,而 U 指令則可以恢復(fù)游標(biāo)所在列的所有改變。這與某些電腦上的 Undo 按鍵功能相同。Vi 進(jìn)階應(yīng)用相信現(xiàn)在對(duì)於 vi 應(yīng)該已經(jīng)有相當(dāng)?shù)恼J(rèn)識(shí)。處理文字也不會(huì)有什麼麻煩才對(duì)。如果有興趣善用 vi 的其它功能進(jìn)一步簡(jiǎn)化操作過(guò)程,不妨繼續(xù)看下去。移動(dòng)游標(biāo)由於許多編輯工作是藉由游標(biāo)來(lái)定位,所以 vi 提供許多移動(dòng)游標(biāo)

30、的方式,這個(gè)我們列幾張簡(jiǎn)表來(lái)說(shuō)明(這些當(dāng)然是指令模式下的指令):指令 說(shuō)明 功能鍵 0 移動(dòng)到游標(biāo)所在列的最前面 Home $ 移動(dòng)到游標(biāo)所在列的最後面 End CTRLd向下半頁(yè) CTRLf向下一頁(yè) PageDownCTRLu向上半頁(yè) CTRLb向上一頁(yè) PageUp 指令說(shuō)明 H 移動(dòng)到視窗的第一列 M 移動(dòng)到視窗的中間列 L 移動(dòng)到視窗的最後列 b 移動(dòng)到下個(gè)字的第一個(gè)字母 w 移動(dòng)到上個(gè)字的第一個(gè)字母 e 移動(dòng)到下個(gè)字的最後一個(gè)字母 移動(dòng)到游標(biāo)所在列的第一個(gè)非空白字元指令說(shuō)明 n- 減號(hào)移動(dòng)到上一列的第一個(gè)非空白字元 前面加上數(shù)字可以指定移動(dòng)到以上 n 列 n+ 加號(hào)移動(dòng)到下一列的第一

31、個(gè)非空白字元 前面加上數(shù)字可以指定移動(dòng)到以下 n 列 nG 直接用數(shù)字 n 加上大寫(xiě) G 移動(dòng)到第 n 列指令 說(shuō)明 fx 往右移動(dòng)到 x 字元上 Fx 往左移動(dòng)到 x 字元上 tx 往右移動(dòng)到 x 字元前 Tx 往左移動(dòng)到 x 字元前 ; 配合 f&t 使用,重復(fù)一次 , 配合 f&t 使用,反方向重復(fù)一次/string 往右移動(dòng)到有 string 的地方 ?string 往左移動(dòng)到有 string 的地方 n 配合 /&? 使用,重復(fù)一次 N 配合 /&? 使用,反方向重復(fù)一次指令 說(shuō)明 備注 n( 左括號(hào)移動(dòng)到句子的最前面 句子是以 前面加上數(shù)字可以指定往前移動(dòng) n 個(gè)句子 ! . ?

32、三種符號(hào)來(lái)界定n) 右括號(hào)移動(dòng)到下個(gè)句子的最前面 前面加上數(shù)字可以指定往後移動(dòng) n 個(gè)句子 n 左括弧移動(dòng)到段落的最前面 段落是以 前面加上數(shù)字可以指定往前移動(dòng) n 個(gè)段落 段落間的空白列界定 n 右括弧移動(dòng)到下個(gè)段落的最前面 前面加上數(shù)字可以指定往後移動(dòng) n 個(gè)段落 不要嘗試背誦這些指令,否則後果自行負(fù)責(zé)。它們看起來(lái)又多又雜亂,事實(shí)上這是文字?jǐn)⑹霰旧淼恼系K。再?gòu)?qiáng)調(diào)一次,實(shí)際去使用它只要幾次就可以不經(jīng)大腦直接下達(dá)這些奇奇怪怪的指令,遠(yuǎn)比死記活背搞得模模糊糊強(qiáng)多了。(注:若真的不經(jīng)大腦而誤刪資料與我無(wú)關(guān)。另,此段為廢話(huà)。)進(jìn)階編輯指令這些編輯指令非常有彈性,基本上可以說(shuō)是由指令與范圍所構(gòu)成。例如

33、 dw 是由刪除指令 d 與范圍 w 所組成,代表刪除一個(gè)字 d(elete) w(ord) 。指令列表如下:d 刪除(delete)y 復(fù)制(yank)p 放置(put)c 修改(change)范圍可以是下列幾個(gè):e 游標(biāo)所在位置到該字的最後一個(gè)字母w 游標(biāo)所在位置到下個(gè)字的第一個(gè)字母b 游標(biāo)所在位置到上個(gè)字的第一個(gè)字母$ 游標(biāo)所在位置到該列的最後一個(gè)字母0 游標(biāo)所在位置到該列的第一個(gè)字母) 游標(biāo)所在位置到下個(gè)句子的第一個(gè)字母( 游標(biāo)所在位置到該句子的第一個(gè)字母 游標(biāo)所在位置到該段落的最後一個(gè)字母 游標(biāo)所在位置到該段落的第一個(gè)字母說(shuō)實(shí)在的,組合這些指令來(lái)編輯文件有一點(diǎn)點(diǎn)藝術(shù)氣息。不管怎麼樣,

34、它們提供更多編輯文字的能力。值得注意的一點(diǎn)是刪除與復(fù)制都會(huì)將指定范圍的內(nèi)容放到暫存區(qū)里,然後就可以用指令 p 貼到其它地方去,這是 vi 用來(lái)處理區(qū)段拷貝與搬移的辦法。某些 vi 版本,例如 linux 所用的 elvis可以大幅簡(jiǎn)化這一坨指令。如果稍微觀(guān)察一下這些編輯指令就會(huì)發(fā)現(xiàn)問(wèn)題其實(shí)是定范圍的方式有點(diǎn)雜,實(shí)際上只有四個(gè)指令罷了。指令 v 非常好用,只要按下 v鍵,游標(biāo)所在的位置就會(huì)反白,然後就可以移動(dòng)游標(biāo)來(lái)設(shè)定范圍,接著再直接下指令進(jìn)行編輯即可。對(duì)於整列操作, vi 另外提供了更方便的編輯指令。前面曾經(jīng)提到過(guò)刪除整列文字的指令 dd 就是其中一個(gè);cc 可以修改整列文字;而 yy 則是復(fù)

35、制整列文字;指令 D 則可以刪除游標(biāo)到該列結(jié)束為止所有的文字。檔案指令檔案指令多以 : 開(kāi)頭,跟編輯指令有點(diǎn)區(qū)別。例如前面提到結(jié)束編輯的指令就是 :q?,F(xiàn)在就簡(jiǎn)單說(shuō)明一下作為本篇故事的結(jié)尾::q 結(jié)束編輯(quit)如果不想存檔而要放棄編輯過(guò)的檔案則用 :q! 強(qiáng)制離開(kāi)。:w 存檔(write)其後可加所要存檔的檔名??梢詫n案指令合在一起,例如 :wq 即存檔後離開(kāi)。zz 功能與 :wq 相同。另外值得一提的是 vi 的部份存檔功能??梢杂?:n,mw filename 將第 n 列到第 m 列的文字存放的所指定的 filename 里去哩。時(shí)代在變,世界在變, vi 也在變,不過(guò)大致上就這

36、樣。好了,但愿從此以後王子跟公主過(guò)著幸??鞓?lè)的生活。目錄-EmacsEmacs 啟動(dòng):直接打emacs, 如果有X-windows就會(huì)開(kāi)視窗. 如果不想用X 的版本,就用 emacs -nw (No windows)起動(dòng).符號(hào)說(shuō)明C-X 表示按住CTRL鍵, 然後按X, 再把CTRL, X一起放開(kāi).M-X META META在沒(méi)有META鍵的電腦上, M-X 等於先按 ESC鍵, 接著按 X鍵.Sun上面META鍵就是菱形的那個(gè)鍵.有些系統(tǒng)META鍵就是ALT鍵.(或者某一邊的ALT鍵)C-X或 M-X的X沒(méi)有大小寫(xiě)分別.Emacs按鍵命令基本上是一串C-和M-組成的.超過(guò)兩個(gè)以上的按鍵命令,

37、 Emacs會(huì)在螢?zāi)蛔钕旅嬉恍酗@示你按過(guò)什麼.這一行叫作mini buffer結(jié)束Emacs按 C-x C-c取消執(zhí)行 C-g有些Emacs命令會(huì)跑很久, 可以用C-g中斷之. 按錯(cuò)鍵也可以按C-g取消.上下移動(dòng) C-p 向上 (previous line) C-n向下(next line)左右移動(dòng) C-f 向右 (forward) C-b 向左 (backward)其實(shí)Emacs內(nèi)部沒(méi)有行的概念, 把一篇文章放在一個(gè)大buffer里面, 所以C-f (forward)就是向檔尾移動(dòng), C-b (backward)是移回去的意思, 一次一個(gè)字.翻頁(yè) 下一頁(yè) C-v (view next scr

38、een)上一頁(yè) M-v翻頁(yè)時(shí),上一 末尾會(huì)留一點(diǎn)在螢?zāi)蛔钌厦?以維持連續(xù)性.Emacs在游標(biāo)接近螢?zāi)蛔钕路綍r(shí)會(huì)自動(dòng)跳半頁(yè), 把檔案往前挪一點(diǎn),方便閱讀.重畫(huà)螢?zāi)?C-LEmacs里面游標(biāo)的專(zhuān)有名詞叫point. point = 游標(biāo)目前的 點(diǎn)游標(biāo)一次跳一個(gè)字(word) M-f 往後跳 M-b注意 C-f 與 M-f, C-b 與 M-b的對(duì)稱(chēng)性.移到行頭 C-a 行尾 C-e移到句首 M-a 到句尾 M-e(M-a 到上一個(gè)句點(diǎn)後面,一個(gè)句子的起頭.M-e 到句點(diǎn)後面)移到檔頭 M-刪除游標(biāo)目前指的/後面的字 C-d前面的字 DEL (Delete鍵)DEL的正名叫Rubout (Rub o

39、ut)M-DEL 往回刪一個(gè)字(word)M-d 往前刪 (游標(biāo)後面)C-k 刪至行尾 (kill)M-k 刪到一句子結(jié)尾(刪到句點(diǎn)) (kill)注意Backspace = C-h 在Emacs下是help的意思後面有(kill)的, 表示此刪除的動(dòng)作是kill, 不太等於delete.emacs會(huì)把kill掉的東西放到kill ring去, 算是一種暫存的地方,以後可以叫出來(lái).見(jiàn) yank說(shuō)明.Undo: C-x uC-_ 等於 C-x u 有些DEC終端機(jī), C-/就是C-_有時(shí)等於C-Shift- -重復(fù)執(zhí)行舉例, 向右移 8個(gè)字, C-u 8 C-fC-u 在Emacs里是蠻特別的,

40、用來(lái)設(shè)定一些引數(shù)(argument/repeat count)給其後的命令.C-u 2 0 C-n 向下移 20行有一個(gè)特別的例外, C-u 3 C-v 不是翻三頁(yè), 而是整個(gè)螢?zāi)幌蛏弦迫?據(jù)說(shuō)這比較有意義.C-u 1 0 C-x u UNDO 10次給C-L一個(gè)引數(shù)會(huì)怎麼樣:C-u 0 C-l 會(huì)重畫(huà)螢?zāi)?并且把目前的行移到螢?zāi)坏谝恍?另外, C-u 100 等於 M-100C-u 數(shù)字 等於 M-數(shù)字X windows 下,C-left C-right 一次移一個(gè)字(word).C-up C-down 移動(dòng)一段 (paragraphs/C語(yǔ)言的話(huà)是block)Home = C-aEnd

41、= C-eC-Home = M-PgUp PgDn = M-v C-v設(shè)定重覆次數(shù)更加簡(jiǎn)單,比如要向右移10個(gè)字 C-1 C-0 right-arrow就是按住CTRL, 然後打10就對(duì)了, 比 C-u 1 0 簡(jiǎn)單.Mouse中鍵用來(lái)選取有hi-light的地方.右鍵是menu-button如果不小心按兩次ESC, 等於 M-ESC, 會(huì)有一個(gè)訊息跑出來(lái)說(shuō)你按到一個(gè)被disable的命令. 這是高級(jí)指令, 作者認(rèn)為初學(xué)者用不道,所以會(huì)問(wèn)你要不要啟動(dòng)它, 一般回答no.如果某一行太長(zhǎng), 螢?zāi)伙@示不下, Emacs會(huì)在螢?zāi)蛔钣疫叴騻€(gè)$,表示此行未完,右邊還有.把一行拆成兩行: 在想拆處按Ente

42、r即可.合并兩行為一行: 在行尾按C-d (或行首按DEL)Yank: 吐出被刪掉的(killed)東西.只要用kill (C-k, M-k等) 刪除, 超過(guò)一個(gè)字的資料,emacs就會(huì)把它存起來(lái), 然後C-y 可以把它叫出來(lái).功能跟Cut & Paste一樣. Kill 和delete不一樣, 只有被kill掉的東西才能用yank吐回來(lái).游標(biāo)在同一地方不動(dòng), 連續(xù)kill掉的資料會(huì)被當(dāng)成一次kill掉的,yank時(shí)會(huì)一起回來(lái).被Kill掉的資料是放在稱(chēng)作 kill ring的資料結(jié)構(gòu)上面, ring就是個(gè)圓圈,被kill掉的東西會(huì)依序擺在圓圈上. yank 會(huì)放回最近一次kill掉的資料.如

43、果不是你想要的話(huà), 用M-y 可以換. (M-y就是告訴emacs, 不對(duì)不對(duì),我不是要這一個(gè),換前一個(gè)給我).M-y 要緊接在C-y之後.拷貝文字的方法= 連續(xù) C-k 幾次, 把要拷貝的行全部刪掉,然後按 C-y 弄回來(lái). 再到想復(fù)制的地方按一次C-y, 就成了.把要拷貝的資料kill掉在yank回來(lái)好像很笨. 是有比較文明的方法, 那就是M-w, 不過(guò)較麻煩.首先,要先設(shè)標(biāo)記. Mark 用 C-SPC 或 C- 設(shè). 然候把游標(biāo)移到另一端, 按 M-w 就可以把 mark 到 point間的字存到kill ring上. point 就是游標(biāo)的意思.Emacs不會(huì)把Mark起來(lái)的地方用h

44、ighlight表示, 除非在X下.在X下, 可以用M-w 來(lái)拷貝用滑鼠反白的文字.kill & yank 就是 cut & paste的意思.以上大部份指令對(duì)Bash的命令列編輯也有效檔案操作讀檔: Emacs術(shù)語(yǔ)叫 finding a file.C-x C-f 然後在mini-buffer輸入檔名. 輸入檔名時(shí), SPC鍵有auto-complete的功能,或者會(huì)秀出到目前為止檔名前幾個(gè)字和輸入一樣的. (TAB鍵也有類(lèi)似功能)C-x C-f 叫 find-fileC-x C-s 存檔 (save current file, save current buffer)C-x s 存所有的檔C

45、-x i 插入檔案 把另外的檔案的內(nèi)容讀入目前編輯區(qū)內(nèi)視窗Emacs把檔案讀進(jìn)來(lái),存在buffer中.我們透過(guò)window來(lái)看/編輯buffer.兩個(gè)視窗會(huì)把螢?zāi)磺谐蓛刹糠? 他們可以同時(shí)顯示相同的, 或不同的檔案.對(duì)初學(xué)者而言, 最需要的是記住怎樣讓不想要的視窗消失:C-x 0 關(guān)掉目前的視窗C-x 1 會(huì)讓目前的視窗占滿(mǎn)整個(gè)螢?zāi)?(One Window),取消/關(guān)掉其他的視窗.Emacs里面有許多功能都會(huì)開(kāi)一個(gè)小視窗來(lái)和使用者溝通, 顯示訊息.有時(shí)候不會(huì)自動(dòng)消失很討厭, C-x 1 就很有用.另一個(gè)功能是如何跳到另一個(gè)視窗.C-x o (other-window)C-x 2 把目前的視窗切

46、成兩個(gè) (水平分割)C-x 3 (垂直分割)C-x 4 是一串與視窗有關(guān)的指令.C-x 4 是一串與視窗有關(guān)的指令.C-x 5 則是擴(kuò)展到X的視窗, 稱(chēng)為frame.C-x 5 2 就是再開(kāi)另一個(gè)X視窗 (frame).多檔編輯C-x C-b 看目前有那些buffer (buffer就是emacs放開(kāi)起的檔案的地方).C-x b 然後在minibuffer輸入buffer的名字,可以切換編輯buffer.TAB鍵也有作用. 有些內(nèi)部的buffer (就是沒(méi)有檔案的buffer),是用*開(kāi)頭和結(jié)束, 這個(gè)也要打, 如*scratch*最候提醒:C-x 1 可以把多馀的視窗關(guān)掉.Emacs擴(kuò)充指令

47、前面介紹的emacs按鍵大部份都是C- 或者 M-的形式.這是最簡(jiǎn)單的按法, 由一對(duì)按鍵構(gòu)成一個(gè)指令.Emacs的按鍵可以超過(guò)2個(gè)以上. 如 C-x 1 或 C-x C-b.一般超過(guò)一個(gè)按鍵組合的命令都是用C-x 開(kāi)頭.另外你也可以直接下命令. 按 M-x 之後就可以打一個(gè)Emacs命令來(lái)執(zhí)行. 一般這些命令名字都很長(zhǎng), 不過(guò)都不常用. 等一下我們會(huì)介紹一些. 還有介紹怎麼把這些命令設(shè)成按鍵指令.C-x C-c 就是結(jié)束Emacs. 不過(guò)一般Emacs很笨重, 一旦起動(dòng)就不輕易退出. 所以比較常用的是C-zC-z 把Emacs暫停, 回到命令列. 當(dāng)你下次再需要編輯時(shí),打fg %emacs就可

48、以把Emacs喚醒.在X下, C-z會(huì)把emacs縮成iconmode lineemacs編輯畫(huà)面由 編輯區(qū)(buffer) 狀態(tài)列 (modeline) 和對(duì)話(huà)區(qū) (minibuffer)構(gòu)成. 這里解釋 modeline 顯示的訊息.以下是個(gè)范例:-*-XEmacs: xemacs.qs (Fundamental)-74%-由後面往前解釋, 74% 表示游標(biāo)的位置.(Fundamental)表示編輯模式.這是最原始的模式. 編輯不同種類(lèi)的文章可能希望用不同的模式, 比如說(shuō)C-mode, lisp-mode, tex-mode, text-mode等等. 在不同模式下可能多一些按鍵出來(lái). 舉例text-mode.M-x text-mode可以切入text-mode, 這是一般

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論