小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

linux知識(shí)寶庫(kù)/基礎(chǔ)知識(shí)/linux知識(shí)大全

 WUCANADA 2011-09-30

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變量控制。當(dāng)你每次登錄后,home 目錄下的.bash_history 文件將初始化你的歷史列表緩沖區(qū)。你也能通過(guò)history 和fc 命令執(zhí)行、編輯歷史命令。
·別名。在bash下,可用alias 和unalias 命令給命令或可執(zhí)行程序起別名和清除別名。這樣你可以用自己習(xí)慣的方式輸入命令。
·輸入/輸出重定向。輸入重定向用于改變命令的輸入,輸出重定向用于改變命令的輸出。輸出重定向更為常用,它經(jīng)常用于將命令的結(jié)果輸入到文件中,而不是屏幕上。輸入重定向的命令是<,輸出重定向的命令是>。
·管道。管道用于將一系列的命令連接起來(lái)。也就是把前面的命令的輸出作為后面的命令的輸入。管道的命令是|。
·提示符。bash 有兩級(jí)提示符。第一級(jí)提示符就是你登錄外殼時(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)。你可以掛起一個(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)題的目錄下專門提到(例如:ncheck命令會(huì)在文件系統(tǒng)維護(hù)里介紹)

[目錄](méi)
用戶常用

查找
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用戶的所有文件。
find /usr/bob -perm 666 -print 將列出/usr/bob目錄樹(shù)下所有存取許可為666的文件。若將666改為-666則將列出所有具有包含了666在內(nèi)的存取許可方式的文件(如777)。
find /usr/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 n d所找到的文件名替換。COMMAND必須以 ;結(jié)束。
各選項(xiàng)可組合使用以達(dá)到更強(qiáng)的功能。
遠(yuǎn)程登陸
語(yǔ)法:rlogin 主機(jī)名[-1 用戶名]
例如:
rlogin doc 遠(yuǎn)程登錄到工作站doc 中。
rlogin doc -l user 使用user 賬號(hào)登錄到工作站doc 中。

語(yǔ)法:telnet 主機(jī)名或telnet IP地址
例如:
telnet doc
telnet 140.109.20.251

更改密碼
語(yǔ)法: passwd
Old password: <輸入舊密碼>
New password: <輸入新密碼(最好為6~8字,英文字母與數(shù)字混合) >
Retype new password: <再輸入一次密碼>

檢查自己所屬的工作組名稱
語(yǔ)法:groups

查看系統(tǒng)中的用戶
語(yǔ)法: who 或finger
語(yǔ)法: who
語(yǔ)法: finger 用戶名或finger 用戶名@域名

改變用戶名
語(yǔ)法: su 用戶名
例如:
su user 進(jìn)入用戶user 的賬號(hào)。
passwrod : <輸入用戶user 的密碼>

查看自己用戶名
語(yǔ)法: whoami 查看登錄時(shí)的用戶名。
語(yǔ)法: whoami 查看當(dāng)前的用戶名。若已執(zhí)行過(guò)su命令,則顯示出此用戶的用戶名。

查看當(dāng)前系統(tǒng)上所有工作站的用戶
語(yǔ)法: rusers
按Ctrl+C> 結(jié)束

與某工作站上的用戶交談
語(yǔ)法: talk 用戶名@主機(jī)名或talk 用戶名@ I P地址
例如:
1) 可先利用rusers 指令查看網(wǎng)絡(luò)上的用戶;
2) 假設(shè)自己的賬號(hào)是u84987 ,在工作站indian 上使用,現(xiàn)在想要與doc 上的u84123 交談。
talk u84123@doc
此時(shí)屏幕上將會(huì)出現(xiàn)等待畫面

在對(duì)方( u84123 )屏幕上將會(huì)出現(xiàn)下列信息:
Message from Talk_Daemon@Local_host_name at xx:xx
talk: connection requested by u84987@indian
talk: respond with: talk u84987@indian
此時(shí)對(duì)方(u84123) 必須執(zhí)行talk u84987@indian 即可互相交談。最后可按Ctrl + C結(jié)束。

顯示文檔幫助
語(yǔ)法: man 命令
例如:
man ls

語(yǔ)法:howto 主題
例如:
howto man

[目錄](méi)

--------------------------------------------------------------------------------

文件或目錄處理

列出文件或目錄下的文件名。
語(yǔ)法: ls [-atFlgR] [name]
name :文件名或目錄名。
例如:
ls 列出目前目錄下的文件名。
ls -a 列出包括以.開(kāi)始的隱藏文件的所有文件名。
ls -t 依照文件最后修改時(shí)間的順序列出文件名。
ls -F 列出當(dāng)前目錄下的文件名及其類型。以/ 結(jié)尾表示為目錄名,以* 結(jié)尾表示為
可執(zhí)行文件,以@ 結(jié)尾表示為符號(hào)連接。
ls -l 列出目錄下所有文件的權(quán)限、所有者、文件大小、修改時(shí)間及名稱。
ls -lg 同上,并顯示出文件的所有者工作組名。
ls -R 顯示出目錄下以及其所有子目錄的文件名。
改變當(dāng)前工作目錄
語(yǔ)法:cd [name]
name:目錄名、路徑或目錄縮寫。
例如:
cd 改變目錄位置至用戶登錄時(shí)的工作目錄。
cd dir1 改變目錄位置至d i r 1目錄下。
cd ~user 改變目錄位置至用戶的工作目錄。
cd .. 改變目錄位置至當(dāng)前目錄的父目錄。
cd ../user 改變目錄位置至相對(duì)路徑user 的目錄下。
cd /../.. 改變目錄位置至絕對(duì)路徑的目錄位置下。
cd ~ 改變目錄位置至用戶登錄時(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)文件目錄或修改名稱
語(yǔ)法: mv 源地址目的地址
例如:
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 的文件。
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)容。

查看目錄所占磁盤容量
語(yǔ)法: du [-s] 目錄
例如:
du dir1 顯示目錄dir1 的總?cè)萘考捌渥幽夸浀娜萘?以KB 為單位)。
du -s dir1 顯示目錄dir1 的總?cè)萘俊?br>
文件的鏈接
同一文件,可擁有一個(gè)以上的名稱,也就是把一個(gè)文件進(jìn)行鏈接。
語(yǔ)法:ln 老文件名新文件名
例如:
ln file1 file2 將文件file2鏈接至文件file1。
語(yǔ)法:ln -s 老文件名新文件名
例如:
ln -s file3 file4 將文件file4 鏈接至文件file3。

[目錄](méi)

--------------------------------------------------------------------------------

文件內(nèi)容操作

改變文件或目錄的最后修改時(shí)間
語(yǔ)法:touch name
name:文件名或目錄名。
2.3.21 文件中字符串的查尋
語(yǔ)法:grep string file
例如:
grep abc file1 尋找文件f i l e 1中包含字符串a(chǎn)bc 所在行的文本內(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 name2
name1 name2:可同時(shí)為文件名或目錄名。
例如:
diff file1 file2 比較文件file1 與file2 內(nèi)各行的不同之處。
diff -r dir1 dir2 比較目錄dir1 與dir2 內(nèi)各文件的不同之處。

文件打印輸出
用戶可用.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ǔ)法:ptroff [-P打印機(jī)名] [-man][-ms] 文件名
例如:
ptroff -Psp -man /usr/man/man1/lpr1 以troff 格式,自sp 打印機(jī)打印lpr1 命令的使用說(shuō)明。

[目錄](méi)

--------------------------------------------------------------------------------

文件傳輸

1. 拷貝文件或目錄至遠(yuǎn)程工作站
語(yǔ)法: rcp [-r] 源地址主機(jī)名:目的地址
源地址文件名、目錄名或路徑。
主機(jī)名工作站名。目的地址路徑名稱。
例如:
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)程工作站,拷貝文件或目錄
語(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 主機(jī)名或ftp ip地址
例如:
ftp doc 與遠(yuǎn)程工作站doc 之間進(jìn)行文件傳輸。
Name (doc:user-name): <輸入賬號(hào)>
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 更改遠(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è)文件皆詢問(wèn)y e s / n o )。
ftp> quit 結(jié)束ftp 工作。
ftp> bye 結(jié)束ftp 工作。
注意從PC與工作站間的文件傳輸也可透過(guò)在PC端的FTP指令進(jìn)行文件傳輸,指令用法與上述指令大致相同。

[目錄](méi)

--------------------------------------------------------------------------------

文件權(quán)限的設(shè)定

改變文件或目錄的讀、寫、執(zhí)行權(quán)限
語(yǔ)法:chmod [-R] mode name
name:文件名或目錄名。
mode: 3個(gè)8位數(shù)字或rwx的組合。r-read (讀),w-write (寫),x-execute (執(zhí)行),u-user (當(dāng)前用戶),g-group(組),o-other(其他用戶)。
例如:
chmod 755 dir1 對(duì)于目錄dir1,設(shè)定成任何使用者皆有讀取及執(zhí)行的權(quán)利,但只有所
有者可做修改。
chmod 700 file1 對(duì)于文件file1,設(shè)定只有所有者可以讀、寫和執(zhí)行的權(quán)利。
chmod u+x file2 對(duì)于文件file2,增加當(dāng)前用戶可以執(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] 用戶名name
name:文件名或目錄名。
例如:
chown user file1 將文件file1 改為用戶user 所有。
chown -R user dir1 將目錄dir1及其子目錄下面的所有文件改為用戶user 所有。

改變文件或目錄工作組所有權(quán)
語(yǔ)法:chgrp [-R] 工作組名name
name:文件名或目錄名
例如:
chgrp vlsi file1 將文件file1 的工作組所有權(quán)改為vlsi 工作組所有。
chgrp -R image dir1 將目錄dir1及其子目錄下面的所有文件,改為image 工作組所有。

[目錄](méi)

--------------------------------------------------------------------------------

進(jìn)程控制

1.查看系統(tǒng)中的進(jìn)程
語(yǔ)法:ps [-aux]
例如:
p s或ps -x 查看系統(tǒng)中,屬于自己的進(jìn)程。
ps -au 查看系統(tǒng)中,所有用戶的進(jìn)程。
ps -aux 查看系統(tǒng)中,包含系統(tǒng)內(nèi)部的及所有用戶的進(jìn)程。
2. 結(jié)束或終止進(jìn)程
語(yǔ)法:kill [-9] PID
PID:利用ps 命令所查出的進(jìn)程號(hào)。
例如:
kill 456或kill -9 456 終止進(jìn)程號(hào)為456 的進(jìn)程。

3. 在后臺(tái)執(zhí)行進(jìn)程的方式
語(yǔ)法:命令&
例如:
cc file1.c & 將編譯file1.c 文件的工作置于后臺(tái)執(zhí)行。
語(yǔ)法:按下Control+Z鍵,暫停正在執(zhí)行的進(jìn)程。鍵入bg命令,將暫停的進(jìn)程置于后臺(tái)繼
續(xù)執(zhí)行。
例如:
cc file2.c
^ Z
Stopped
bg

4. 查看正在后臺(tái)中執(zhí)行的進(jìn)程
語(yǔ)法:jobs

5. 結(jié)束或終止后臺(tái)中的進(jìn)程
語(yǔ)法:kill %n
n:利用jobs命令查看出的后臺(tái)作業(yè)號(hào)
例如:
kill % 終止在后臺(tái)中的第一個(gè)進(jìn)程。
kill %2 終止在后臺(tái)中的第二個(gè)進(jìn)程。

[目錄](méi)

--------------------------------------------------------------------------------

命令管道

語(yǔ)法:命令1 | 命令2 將命令1的執(zhí)行結(jié)果送到命令2,做為命令2的輸入。
例如:
ls -Rl | more 以分頁(yè)方式列出當(dāng)前目錄及其子目錄下所有文件的名稱。
cat file1 | more 以分頁(yè)方式列出文件file1 的內(nèi)容。

[目錄](méi)

--------------------------------------------------------------------------------

輸入輸出控制

1. 標(biāo)準(zhǔn)輸入的控制
語(yǔ)法:命令< 文件將文件做為命令的輸入。
例如:
mail -s “mail test” wesongzhou@hotmail.com < file1 將文件file1 當(dāng)做信件的內(nèi)容,主
題名稱為mail test,送給收信人。
2. 標(biāo)準(zhǔn)輸出的控制
語(yǔ)法:命令> 文件將命令的執(zhí)行結(jié)果送至指定的文件中。
例如:
ls -l > list 將執(zhí)行“l(fā)s -l” 命令的結(jié)果寫入文件list 中。
語(yǔ)法:命令>! 文件將命令的執(zhí)行結(jié)果送至指定的文件中,若文件已經(jīng)存在,則覆蓋。
例如:
ls -lg >! list 將執(zhí)行“l(fā)s - lg” 命令的結(jié)果覆蓋寫入文件list 中。
語(yǔ)法:命令>& 文件將命令執(zhí)行時(shí)屏幕上所產(chǎn)生的任何信息寫入指定的文件中。
例如:
cc file1.c >& error 將編譯file1.c 文件時(shí)所產(chǎn)生的任何信息寫入文件error 中。
語(yǔ)法:命令>> 文件將命令執(zhí)行的結(jié)果附加到指定的文件中。
例如:
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 中。

[目錄](méi)

--------------------------------------------------------------------------------

編輯

[目錄](méi)

--------------------------------------------------------------------------------

Vi

Vi 輸入模式
要如何輸入資料呢?有好幾個(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)。
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í)際去使用它而不要只是猛 K 文件,才有事半功倍的效用。(注:此段為廢話。)

Vi 基本編輯

配合一般鍵盤上的功能鍵,像是方向鍵、[Insert] 、[Delete] 等等,現(xiàn)在你應(yīng)該已經(jīng)可以利用 vi 來(lái)處理文字資料了。當(dāng)然 vi 還提供其他許許多多功能讓文字的處理更形方便,有興趣的看倌請(qǐng)繼續(xù)。

在繼續(xù)下去之前先來(lái)點(diǎn) BCC 吧。電腦有許多廠牌,不同的硬體及作業(yè)系統(tǒng)。PC 也不是僅僅只有 IBM PC 及其相容品而已。事實(shí)上,包括鍵盤,終端機(jī)等等往往都有不同的規(guī)格。這代表什麼?

在文書編輯軟體上會(huì)遇這樣的問(wèn)題,某些電腦的鍵盤上沒(méi)有特定的幾個(gè)功能鍵!那麼不就有某些功能不能用了?這個(gè)問(wèn)題在 Unix 系統(tǒng)上也一樣,幾乎各大電腦廠商都有自己的 Unix 系統(tǒng),而 vi 的操作方法也會(huì)隨之有點(diǎn)出入。我們固然可以用 PC 的鍵盤來(lái)說(shuō)明 vi 的操作,但是還是得提一下這個(gè)問(wèn)題。

刪除與修改

何謂編輯?在這里我們認(rèn)為是文字的新增修改以及刪除,甚至包括文字區(qū)塊的搬移、復(fù)制等等。這里先介紹 vi 的如何做刪除與修改。(注意:在 vi 的原始觀念里,輸入跟編輯是兩碼子事。編輯是在指令模式下操作的,先利用指令移動(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ò)就如前面所提到的,這些指令幾乎是每臺(tái)終端機(jī)都能用,而不是僅僅在 PC 上。

在指令模式下移動(dòng)游標(biāo)的基本指令是 h, j, k, l 。想來(lái)各位現(xiàn)在也應(yīng)該能猜到只要直接用 PC 的方向鍵就可以了,而且無(wú)論在指令模式或輸入模式下都可以。多容易不是。

當(dāng)然 PC 鍵盤也有不足之處。有個(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)的方式,這個(gè)我們列幾張簡(jiǎn)表來(lái)說(shuō)明(這些當(dāng)然是指令模式下的指令):

┌—————┬—————————————┬—————┐
│指令 │說(shuō)明 │功能鍵 │
├—————┼—————————————┼—————┤
│0 │移動(dòng)到游標(biāo)所在列的最前面 │[Home] │
├—————┼—————————————┼—————┤
│$ │移動(dòng)到游標(biāo)所在列的最後面 │[End] │
├—————┼—————————————┼—————┤
│[CTRL][d]│向下半頁(yè) │ │
├—————┼—————————————┼—————┤
│[CTRL][f]│向下一頁(yè) │[PageDown]│
├—————┼—————————————┼—————┤
│[CTRL][u]│向上半頁(yè) │ │
├—————┼—————————————┼—————┤
│[CTRL][b]│向上一頁(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)到下一列的第一個(gè)非空白字元 │
│ │前面加上數(shù)字可以指定移動(dòng)到以下 n 列 │
├——┼———————————————————┤
│nG │直接用數(shù)字 n 加上大寫 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è)句子 │! . ? 三種符號(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)。另,此段為廢話。)

進(jìn)階編輯指令

這些編輯指令非常有彈性,基本上可以說(shuō)是由指令與范圍所構(gòu)成。例如 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ù)氣息。不管怎麼樣,它們提供更多編輯文字的能力。值得注意的一點(diǎn)是刪除與復(fù)制都會(huì)將指定范圍的內(nèi)容放到暫存區(qū)里,然後就可以用指令 p 貼到其它地方去,這是 vi 用來(lái)處理區(qū)段拷貝與搬移的辦法。

某些 vi 版本,例如 linux 所用的 elvis 可以大幅簡(jiǎ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ù)制整列文字;指令 D 則可以刪除游標(biāo)到該列結(jié)束為止所有的文字。

檔案指令

檔案指令多以 : 開(kāi)頭,跟編輯指令有點(diǎn)區(qū)別。例如前面提到結(jié)束編輯的指令就是 :q。
現(xiàn)在就簡(jiǎn)單說(shuō)明一下作為本篇故事的結(jié)尾:

:q 結(jié)束編輯(quit)
如果不想存檔而要放棄編輯過(guò)的檔案則用 :q! 強(qiáng)制離開(kāi)。
:w 存檔(write)
其後可加所要存檔的檔名。
可以將檔案指令合在一起,例如 :wq 即存檔後離開(kāi)。
zz 功能與 :wq 相同。

另外值得一提的是 vi 的部份存檔功能??梢杂?:n,mw filename 將第 n 列到第 m 列的文字存放的所指定的 filename 里去哩。時(shí)代在變,世界在變, vi 也在變,不過(guò)大致上就這樣。好了,但愿從此以後王子跟公主過(guò)著幸??鞓?lè)的生活。

[目錄](méi)

--------------------------------------------------------------------------------

Emacs

Emacs 啟動(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)有大小寫分別.
Emacs按鍵命令基本上是一串C-<chr>和M-<chr>組成的.
超過(guò)兩個(gè)以上的按鍵命令, 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 screen)
上一頁(yè) M-v

翻頁(yè)時(shí),上一 末尾會(huì)留一點(diǎn)在螢?zāi)蛔钌厦?以維持連續(xù)性.

Emacs在游標(biāo)接近螢?zāi)蛔钕路綍r(shí)會(huì)自動(dòng)跳半頁(yè), 把檔案往前挪一點(diǎn),
方便閱讀.

重畫螢?zāi)?C-L

Emacs里面游標(biāo)的專有名詞叫point. point == 游標(biāo)目前的 點(diǎn)

游標(biāo)一次跳一個(gè)字(word) M-f 往後跳 M-b

注意 C-f 與 M-f, C-b 與 M-b的對(duì)稱性.

移到行頭 C-a 行尾 C-e
移到句首 M-a 到句尾 M-e
(M-a 到上一個(gè)句點(diǎn)後面,一個(gè)句子的起頭.
M-e 到句點(diǎn)後面)

移到檔頭 M-< 檔尾 M->

刪除游標(biāo)目前指的/後面的字 C-d
前面的字 DEL (Delete鍵)
DEL的正名叫Rubout (Rub out)

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 u
C-_ 等於 C-x u 有些DEC終端機(jī), C-/就是C-_
有時(shí)等於C-Shift- -

重復(fù)執(zhí)行

舉例, 向右移 8個(gè)字, C-u 8 C-f
C-u 在Emacs里是蠻特別的,用來(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ì)重畫螢?zāi)?并且把目前的行移到螢?zāi)坏谝恍?

另外, C-u 100 等於 M-100
C-u 數(shù)字 等於 M-數(shù)字

X windows 下,
C-left C-right 一次移一個(gè)字(word).
C-up C-down 移動(dòng)一段 (paragraphs/C語(yǔ)言的話是block)
Home = C-a
End = C-e
C-Home = M-<
C-end = 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è)$,
表示此行未完,右邊還有.

把一行拆成兩行: 在想拆處按Enter即可.
合并兩行為一行: 在行尾按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掉的資料是放在稱作 kill ring的資料結(jié)構(gòu)上面, ring就是個(gè)圓圈,
被kill掉的東西會(huì)依序擺在圓圈上. yank 會(huì)放回最近一次kill掉的資料.
如果不是你想要的話, 用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)的地方用highlight表示, 除非在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鍵也有類似功能)

C-x C-f 叫 find-file

C-x C-s 存檔 (save current file, save current buffer)
C-x s 存所有的檔

C-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ì)讓目前的視窗占滿整個(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 把目前的視窗切成兩個(gè) (水平分割)
C-x 3 (垂直分割)
C-x 4 是一串與視窗有關(guān)的指令.
C-x 4 是一串與視窗有關(guān)的指令.
C-x 5 則是擴(kuò)展到X的視窗, 稱為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ò)充指令

前面介紹的emacs按鍵大部份都是C-<chr> 或者 M-<chr>的形式.
這是最簡(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-z

C-z 把Emacs暫停, 回到命令列. 當(dāng)你下次再需要編輯時(shí),打fg %emacs
就可以把Emacs喚醒.

在X下, C-z會(huì)把emacs縮成icon

mode line

emacs編輯畫面由 編輯區(qū)(buffer) 狀態(tài)列 (modeline) 和對(duì)話區(qū) (minibuffer)
構(gòu)成. 這里解釋 modeline 顯示的訊息.

以下是個(gè)范例:

--**-XEmacs: xemacs.qs (Fundamental)----74%-------

由後面往前解釋, 74% 表示游標(biāo)的位置.

(Fundamental)表示編輯模式.這是最原始的模式. 編輯不同種類的文章
可能希望用不同的模式, 比如說(shuō)C-mode, lisp-mode, tex-mode, text-mode
等等. 在不同模式下可能多一些按鍵出來(lái). 舉例text-mode.
M-x text-mode
可以切入text-mode, 這是一般人編輯文字使用的模式. 和Fundamental mode
沒(méi)什麼差異. 不過(guò)游標(biāo)移動(dòng)時(shí), Emacs對(duì)一個(gè)字的定義就有所不同, 因而
M-f M-b 等移動(dòng)一個(gè)字, 一個(gè)段落的指令就可能會(huì)停在標(biāo)點(diǎn)符號(hào)的前面.
此時(shí)狀態(tài)列變?yōu)?.. (Text)----70%---

以上說(shuō)的是Major mode. 另外還有minor mode, 其實(shí)就是一些額外的功能.
比如說(shuō), M-x auto-fill-mode 則狀態(tài)列顯示 (Text Fill).
auto-fill就是自動(dòng)斷行, 讓文章每行固定有70個(gè)字.

M-X fundamental-mode 可以變回來(lái).

這里要說(shuō)明一下, emacs在 minibuffer下有auto-completion的功能,
也就是打M-x fund 然後按 SPC, 它會(huì)自動(dòng)補(bǔ)全 fundamental-mode,
不用全打. 如果有兩個(gè)以上的選擇, 它會(huì)告訴你. 這個(gè)功能對(duì)
find-file (C-x C-f)等等檔案編輯功能也有效. 前面提過(guò).
最後解釋兩個(gè)**號(hào). 右邊的*表示文章被修改過(guò)了.
左邊的* 表示這個(gè)編輯區(qū)(buffer)可以修改.
有一些emacs的buffer是read-only buffer, 就會(huì)標(biāo)成%
%%表示檔案是read-only.

C-x C-q 可以解開(kāi)read-only的鎖定, 無(wú)論如何你要改這個(gè)編輯區(qū).
這是個(gè)toggle指令, 如果原來(lái)是可以修改的, C-x C-q會(huì)把它切成
read-only.

Search

沒(méi)有Search 功能的編輯器簡(jiǎn)直就是小朋友的玩具. Search
是一項(xiàng)很重要的功能, 所以emacs也提供的很完善.
C-s
C-r
M-x re-search-forward
M-x re-search-backward
M-x search-forward
M-x search-backward
以上這些指令是基本的search指令. C-s, C-r是increamental search,
就是你打字的同時(shí), emacs就直接幫你找. 一個(gè)是forward, 一個(gè)是backward.
找到了怎麼辦? 按C-g可以取消搜尋, 跳回原來(lái)的位置. 按Enter就讓游標(biāo)
停在找到的地方 -- 此時(shí)minibuffer顯示:Mark saved where search started
什麼意思? 就是isearch幫你在原來(lái)的位置設(shè)了一個(gè)mark, 然後把point
(cursor) 移到新的位置.
想跳回去原先的地方?
C-x C-x 就可以了.(exchange-point-and-mark)
C-u C-SPC 可以依序跳回前幾次設(shè)mark的地方.
(C-SPC是設(shè)mark, 給它一個(gè)argument, 就是反動(dòng)作)
(還記不記得C-u 可以給後面的指令設(shè)一些參數(shù).
有些指令拿這個(gè)參數(shù)來(lái)當(dāng)作repeat count,
有些指令就只拿來(lái)當(dāng)作on/off, true/false, set/clear而已)

M-x re-search-forward可以讓你用regular expression搜尋.
M-x search-forward則沒(méi)有increamental的功能.

另外一個(gè)指令, 作用和grep很像:
M-x occure

和search相提并論的就是replace.
M-x replace 然後按 SPC, 就知道了.

Emacs的設(shè)定:

Emacs的設(shè)定檔是 $HOME/.emacs
你應(yīng)該多少知道, emacs是用lisp寫成的編輯器, .emacs檔也都是
要用lisp的語(yǔ)法設(shè)定. emacs用的lisp稱為elisp, 和一般的lisp差一點(diǎn)點(diǎn).

有一個(gè)info page, emacs-lisp-intro, 深入淺出的介紹emacs lisp.
如果你還不會(huì), 不懂programming, 強(qiáng)烈建議你看這份文件. 如果你
會(huì)texinfo, 你可以把它很漂亮的印出來(lái). (內(nèi)容一點(diǎn)點(diǎn)而已, 兩三
天就看完了)

如果你把.emacs搞砸了, 進(jìn)emacs很奇怪, 怎麼辦?
1. 用 vi 改 .emacs :>
2. emacs -q 進(jìn) emacs

Major Modes

一般常見(jiàn)的emacs major mode有
fundamental-mode
text-mode
lisp-mode 有自動(dòng)對(duì)括號(hào)/重排, 直接執(zhí)行l(wèi)isp code功能.
c-mode/cc-mode c-mode是比較舊的c-mode, cc-mode應(yīng)該是
目前新的c-mode. 有自動(dòng)重排/對(duì)括號(hào)的功能.
也可以在emacs內(nèi)compile, 跳到compiler error
修正錯(cuò)誤. 執(zhí)行程式時(shí)debug. (配合dbx/gdb)
compile是透過(guò)Makefile進(jìn)行.
tex-mode Tex/Latex編輯模示. 可能是打一些奇怪的標(biāo)點(diǎn)
符號(hào)比較方便.
<programming-language>-mode
同lisp/cc-mode. 如果是interpreter的話,
emacs通常都可以直接執(zhí)行/debug.
<programming-language>-mode還有tags的功能, 後述.

html-mode, texinfo-mode, sgml-mode: 編寫html, texi, sgml之用.
w3-mode WWW browser. 在x-win上不滿意,但可以接受...

Tags

Tags 是一個(gè)顯為人知的功能? 所以我想提一下. 這不是emacs發(fā)明的,
而是vi 原本的特異功能. emacs只是發(fā)揚(yáng)光大而已.
假設(shè)你有一個(gè)目錄, 里面是一個(gè)程式的原始碼, 比如說(shuō), tin 的原始碼,
放在 ~/tin-1.3beta 下面. 你想看它們.

首先, 叫emacs cd到該目錄:
M-x cd

然後, 建立tag table.
tag table 就是一張對(duì)照表, 記錄哪個(gè)符號(hào)(variable/function call)
對(duì)映到哪個(gè)檔案的哪個(gè)地方. 有這張表, emacs可以讓我們快速的在程
式碼內(nèi)游走. 一般這張表是一個(gè)檔案, 叫作TAGS (大寫)

M-! etags *.[ch]

M-! 是執(zhí)行external shell command的意思. etags就是emacs的建表程式.
你只要告訴它你的source code在那□即可.

vi的話是使用ctags這個(gè)程式, 它建出來(lái)的檔名叫tags (小寫). 因?yàn)?br> 我們介紹emacs, 所以不管它.

然後, 怎麼看程式? 你知道所有的C 程式都是由main()開(kāi)始, 所以你想
找到main()在哪個(gè)檔案. 這時(shí)只要按 M-. 然後emacs會(huì)問(wèn)你tag table
在哪里. 因?yàn)槲覀円呀?jīng)cd到該目錄, 直接按enter就好了. 然後輸入main,
emacs就會(huì)把你帶到main(){ ... }去.

如果 你看到某個(gè)程式片斷呼叫一個(gè)你沒(méi)看過(guò)的函式, 你可以把游標(biāo)
移到該函式的名字上, M-. ENTER 就搞定了.

如果 emacs找錯(cuò)了 (比如有變數(shù)和函式同名, emacs跳到變數(shù)去),
那你可以用 C-u M-. 找下一個(gè).

在編輯程式碼的時(shí)候, M-SPC 很有用, 它會(huì)把游標(biāo)附近的空白縮成一個(gè).
在其它地方也有效.

Emacs的一些package:

M-x dired (或C-x d)
游走/編輯 目錄, 就是檔案總管的意思 icon_smile.gif

M-x man 就是man page
M-x shell 開(kāi)個(gè)command prompt, 不過(guò)不能跑vi,elm, tin...
M-x gnus 讀新聞/讀信
M-x rmail 讀信
M-x vm view mail
M-x mh-rmail 讀信 (package mh-e)
M-x mh-smail 送信 (package mh-e)

強(qiáng)列建議改用emacs讀news/bbs. 世界會(huì)更美好!

讀信的話就要看你的感覺(jué). 這些讀信程式都會(huì)把信從系統(tǒng)的mail folder
搬到自己的目錄下, 占用quota, 我不喜歡 :p 建議elm或mutt.
除非參加mailling list配合procmail. 不然不實(shí)用.
用mh-e 須要裝mh 這個(gè)外部程式, 不太好. 建議vm 或 gnus.
寫完信, C-c C-c 就可以送信.

如果你的資料用rcs/sccs作版本管理, emacs自動(dòng)會(huì)起動(dòng)version control
(minor mode.), c-x c-q 變成check-in/check-out.

如何取得更多的資訊:

Emacs的lisp 經(jīng)過(guò)多年的發(fā)展,已成為完整的self-documenting系統(tǒng).
很多東西都可以線上找到你要的資訊.

前面說(shuō)過(guò),或者你已經(jīng)不小心按backspace遇到了, C-h (就是backspace
的ascii碼) 在emacs里面是help的意思, 它可以帶出一串指令.
常用的有:

C-h F Emacs FAQ
C-h t Emacs 使用教學(xué)
C-h n Emacs NEWS file, 介紹最近改版的新功能
C-h i Info system. Info是gnu用來(lái)取代man page的系統(tǒng),
基本上和文字模示的WWW差不多. 有許多重要的資訊
可以在這邊找到. 如果你是新手, 建議你在x-win下
看. 不然, 按鍵 m (menuitem), SPC next page
l (last node: node就是章節(jié)的意思) u (up node)
d (directory, 索引). BS (Backspace, back a page).
如果全部只按SPC, 就跟man 一樣.
C-h k describe key, 告訴你按這個(gè)鍵執(zhí)行那個(gè)lisp function.
C-h f describe function. 告訴你function在作什麼.
如果只按SPC, emacs會(huì)給你所有l(wèi)isp 函數(shù)的列表, 和說(shuō)明.
C-h v describe variable 同function.
C-h a apropos的意思(approximate). 給lisp function的部份
字串, emacs幫你找.
C-h b 列出目前所有的keybinding
C-h m mode help. 列出目前的mode的特殊說(shuō)明.
C-c C-h 列出以C-c 開(kāi)頭的所有key-binding. 雖然說(shuō)Emacs
可以定義按鍵, 可是Ctrl- 開(kāi)頭的所有組合大概都用光了,
只有C-c算是可以自定指令. 不過(guò)有些mode也侵犯這個(gè)空間.
目前的convention是C-c <chr> 留給user, C-c C-<chr>
留給package.

有以上這些help, 你的emacs/elisp功力會(huì)隨著時(shí)間成長(zhǎng).

Elisp 簡(jiǎn)介:

Emacs有三份手冊(cè).第一份是使用手冊(cè), 第二份是Elisp 手冊(cè), 第三份是
Elisp 簡(jiǎn)介. 第三份的程度是入門級(jí), 值得看. Elisp手冊(cè)其實(shí)也寫的
很簡(jiǎn)單, 還教你lisp, 不過(guò)有點(diǎn)長(zhǎng), 適合參考.

因?yàn)槲襩isp沒(méi)有仔細(xì)學(xué)過(guò), 所以:
以下所言, 如有巧合, 那才是真的.

Basic data type
字串 (string) "Hello, World"
字元 (char) ?a ; 問(wèn)號(hào)開(kāi)頭
atom & list:
(1 2 3 4) 是一個(gè)list, 由 4個(gè) atom 組成.
pair: 中間是句點(diǎn).
(apple . 2)
alist (associated list)
就是一堆 pair的集合,就像perl/tcl的associative array.
或者說(shuō)是一個(gè)資料庫(kù), 一堆 (key, value) pair.
'((Apple . 1)
(Orange . 2)
(PineApple . 3))
vector (?)
emacs 19用vector 來(lái)表示按鍵(key strok sequence)
[f1] [f2] [f1 a]

nil 就是空的list, 或者表示 false
t true
Forms
我們寫程式最好有樣版讓我們填空最簡(jiǎn)單了.
Form 就是樣版, 不過(guò)意義不太一樣.
Form 就是Elisp 可以接受的句型.
lisp 解譯器 預(yù)設(shè)是對(duì)list的每個(gè)元素求值(evaluate),
除非是 special form, 有特殊的定義. 比如說(shuō)

(defun FUNC (ARG-LIST)
BODY ...)
就是一個(gè)special form, 用來(lái)定義函式, 所以FUNC 不會(huì)被
求值, 被當(dāng)成symbol, ...

(quote (LIST))

這也是個(gè)special form, 叫 lisp 把 (LIST)當(dāng)做symbol就好了,
不要 evaluate.

quote 很常用, 所以有個(gè)縮寫:
'(LIST) 等於 (quote (LIST))
'Asymbol 可以表示一個(gè)Atom, 名稱叫Asymbol

set 可以產(chǎn)生/定義新的變數(shù).
(set 'hello 1)
; hello = 1
; 注意我們用 'hello, 所以lisp不會(huì)evaluate hello的值.

這家伙很常用, 也有簡(jiǎn)寫.
(setq hello 1)
setq 就是set quote 的縮寫. 這是個(gè) special form, 不會(huì)對(duì)
第二個(gè)元素求值.
valuation

在Emacs下, C-x C-e 可以執(zhí)行(evaluate, 求值)游標(biāo)左邊的敘述.
結(jié)果會(huì)出現(xiàn)在minibuffer.

lisp-interaction-mode中 C-j 可以evaluate, 并且把結(jié)果append到 buffer.

lisp 程式由一堆list 構(gòu)成.稱為expression.
每個(gè)expression 都回傳回一個(gè)值.
有些expression有副作用, 如刪掉一個(gè)字.
(這跟C 的int delete_char() 意思一樣, 它傳回int,
并且刪掉某個(gè)char)

定義函式:

(defun NAME (ARGS-LIST)
"注解" ; optional
(interactive) ; optional
BODY)

定義一個(gè)叫NAME的函式. BODY 是一堆expression.
注解是用來(lái)給C-h f顯示的.
(interactive) 表示這個(gè)函示會(huì)和user/buffer作用.
(interactive "B") 表示執(zhí)行此函式先問(wèn)user一個(gè)buffer的名字,
然後當(dāng)作參數(shù)傳給它. (如, 當(dāng)user透過(guò)key-binding
或者 M-x 呼叫此函式時(shí))
(interactive "BAppend to buffer: r")
問(wèn)user buffer name時(shí), 提示號(hào) Append to buffer:
此function有兩個(gè)引數(shù),第一個(gè)是B, 就是buffer
第二個(gè)是r, region
用 隔開(kāi).
(interactive "p") 用C-u 設(shè)的prefix 把它當(dāng)作參數(shù)傳給我.
預(yù)設(shè)值==4. C-u C-f 向右移四個(gè)字

一些lisp 函式:

(list 1 2 3 4) 產(chǎn)生 '(1 2 3 4)
(car '(1 2 3 4) 1
(cdr '(1 2 3 4) '(2 3 4)
(cons 1 '(2 3 4)) '(1 2 3 4)
(cons 1 2) (1 . 2)
(cons 0 (cons 1 (cons 2 nil)))
等於 '(0 1 2)
{list 是用 pair 串起來(lái)的,
用C 表示:
pair: {Object *first, Object *second};
*(pair[i].first) == i;
pair[i].second == pair[i+1]; }

(cons '(1 2) '(3 4)) '((1 2) 3 4)
(setq a 1)
(1+ a) ; a+1
(+ 2 a) ; a+2
(* 1 2 3 4)
(current-buffer) ; 傳回目前buffer的資料物件
(switch-to-buffer (other-buffer))
(set-buffer)
(buffer-size)
(setq current-pos (point))
(point-min)
(point-max)
(message "Hello") ; 在minibuffer顯示Hello
(if (test)
(then-part)
(else-part))
(cond ((test1) BODY1)
((test2) BODY2)
(t OTHER-WISE)
(let ((var1 value) ; local variable
var2 ; no value
(var3 value)
...)
BODY ...)
(lambda (ARG-LIST) ...) 同 defun, 但是沒(méi)有名字 (anonymous).
可以存到變數(shù)去:
(setq hello (lambda () (message "Hello,World")))
(funcall hello)
(goto-char (point-max))
(defvar VAR VALUE "*注解") 如果VAR 不存在才定義. 有注解可以用
C-h v 看. 注解打*號(hào)表是使用者可以直接改/ 這個(gè)變數(shù)本來(lái)就是
給使用者設(shè)定用的.
可以用 M-x edit-options 來(lái)線上設(shè)定 (emacs結(jié)束就沒(méi)有了,
不過(guò)edit-options可以給你所有可修改的變數(shù)的列表,你可以
放到.emacs檔內(nèi).

(directory-files "./" t "..*")
return a list of files under directory X
(load "xxxx.el") 同#include <stdio.h>
給使用者設(shè)定用的.
可以用 M-x edit-options 來(lái)線上設(shè)定 (emacs結(jié)束就沒(méi)有了,
不過(guò)edit-options可以給你所有可修改的變數(shù)的列表,你可以
放到.emacs檔內(nèi).

(directory-files "./" t "..*")
return a list of files under directory X
(load "xxxx.el") 同#include <stdio.h>
(setq load-path (cons "~/emacs" load-path)) ; load的search path.
(autoload ...) 不像load會(huì)直接evaluate 整個(gè)檔案, 而是需要時(shí)再
load.
(local-unset-key [(control c)])
(local-set-key [(control c) a] 'forward-sexp)
sexp 就是一個(gè)expession, n個(gè)expression如果用括號(hào)括起來(lái)就算一個(gè).
(expression的定義隨語(yǔ)言的不同而有不同, 在C, lisp
tex, html, fortran 下皆有差異)

[目錄](méi)

--------------------------------------------------------------------------------

歸檔和壓縮

[目錄](méi)

--------------------------------------------------------------------------------

tar和gzip

最簡(jiǎn)提示:
tar zxvf XXXX.tar.gz
tar jxvf XXXX tar.bz2

1.壓縮一組文件為tar.gz后綴。
# tar cvf backup.tar /etc #gzip -q backup.tar

# tar cvfz backup.tar.gz /etc/
2.釋放一個(gè)后綴為tar.gz的文件。
#gunzip backup.tar.gz #tar xvf backup.tar

# tar xvfz backup.tar.gz

3.用一個(gè)命令完成壓縮
#tar cvf - /etc/ | gzip -qc > backup.tar.gz

4.用一個(gè)命令完成釋放
# gunzip -c backup.tar.gz | tar xvf -

5.如何解開(kāi)tar.Z的文件?
# tar xvfz backup.tar.Z 或 # uncompress backup.tar.Z #tar xvf backup.tar

6.如何解開(kāi).tgz文件?
#gunzip backup.tgz

7.如何壓縮和解壓縮.bz2的包?
#bzip2 /etc/smb.conf
這將壓縮文件smb.conf成smb.conf.bz2
#bunzip2 /etc/smb.conf.bz2
這將在當(dāng)前目錄下還原smb.conf.bz2為smb.conf
(bzip2 -d也一樣)
注: .bz2壓縮格式不是很常用,你可以man bzip2

[目錄](méi)

--------------------------------------------------------------------------------

rpm

1.安裝一個(gè)包
# rpm -ivh
2.升級(jí)一個(gè)包
# rpm -Uvh

3.移走一個(gè)包
# rpm -e

4.安裝參數(shù)
--force 即使覆蓋屬于其它包的文件也強(qiáng)迫安裝
--nodeps 如果該RPM包的安裝依賴其它包,即使其它包沒(méi)裝,也強(qiáng)迫安裝。

5.查詢一個(gè)包是否被安裝
# rpm -q < rpm package name>

6.得到被安裝的包的信息
# rpm -qi < rpm package name>

7.列出該包中有哪些文件
# rpm -ql < rpm package name>

8.列出服務(wù)器上的一個(gè)文件屬于哪一個(gè)RPM包
#rpm -qf

9.可綜合好幾個(gè)參數(shù)一起用
# rpm -qil < rpm package name>

10.列出所有被安裝的rpm package
# rpm -qa

11.列出一個(gè)未被安裝進(jìn)系統(tǒng)的RPM包文件中包含有哪些文件?
# rpm -qilp < rpm package name>

[目錄](méi)

--------------------------------------------------------------------------------

其他

文件的壓縮和解壓縮是計(jì)算歷史上最有用的創(chuàng)造之一,但缺乏可移植性和開(kāi)放工具是阻礙它發(fā)揮其應(yīng)有作用的最主要的一個(gè)障礙。只要我們是與其他使用類似 Unix 操作系統(tǒng)的用戶交換文件,就可以使用例如 compress、gzip 和 bzip2 這樣的可移植工具。但世界上其他人使用的是各種各樣的專用軟件 -- 甚至專用壓縮算法 -- 擁有者可能永遠(yuǎn)也不會(huì)將它們公之于眾。
這種事態(tài)發(fā)展下去會(huì)很危險(xiǎn)。想象一下,將來(lái)我們可能無(wú)法對(duì)檔案的重要部分譯碼,原因是我們創(chuàng)建它們時(shí)使用的是專用工具和算法,而那些工具運(yùn)行所在的操作系 統(tǒng)和硬件已逐漸過(guò)時(shí),消失不見(jiàn)。這就是為什么我們應(yīng)該使用開(kāi)放源碼壓縮工具,或者至少使用免費(fèi)和有完善記載算法的商業(yè)壓縮工具的原因。(只是要記住避免使 用任何特殊的增強(qiáng)。)

本文是有關(guān)在 linux 操作系統(tǒng)上使用 .arc、.arj、.lzh (.lha)、.rar、.sit、.zip 和 .zoo 文件的指南。我選擇討論這些特殊的格式是因?yàn)槿N最流行的操作系統(tǒng) (MS-DOS、微軟 Windows 和 Mac OS)的用戶最常使用它們。我之所以寫這篇指南是希望引導(dǎo)大家快速找出正確的工具,而不是詳細(xì)地從技術(shù)上討論文件壓縮技術(shù)。

最后,我想簡(jiǎn)短說(shuō)明一下自解壓文件。這樣的檔案往往位于包含壓縮格式數(shù)據(jù)的現(xiàn)實(shí)程序中。執(zhí)行它們時(shí),它們會(huì)解包,并將存儲(chǔ)在程序主體內(nèi)的數(shù)據(jù)復(fù)制到您指定 的任何驅(qū)動(dòng)器上。唯一的問(wèn)題是它們無(wú)法在 linux 上使用,沒(méi)有工具可以抽取它們。在這種情況下,需要讓創(chuàng)建檔案的那個(gè)人將它作為一個(gè)一般檔案壓縮。

參考資料

VMware:
http://www.
DOSEMU:
http://www.
Aladdin Expander:
http://www./expander/expander_linux_login.html
ARJ 軟件:
http://www.
ARJ 的 FAQ 頁(yè)面:
http://www./faq.htm
ARJ 的下載頁(yè)面:
http://www./files.htm
gzip:
http://www./software/gzip/gzip.html
linux 發(fā)行版頁(yè)面:
http://www./dist/index.html
RAR 站點(diǎn):
http://www.
macutil 軟件包:
http://www./dist/index.html
tar:
http://www./software/tar/tar.html
WinZIP:
http://www.
StuffIt:
http://www.
下載源碼形式的 Info-ZIP:
http://www./pub/infozip
下載二進(jìn)制形式的 Info-ZIP:
http://www./dist/index.html
下載 PKZIP:
http://www./shareware/pkzip_unix.html

[目錄](méi)

--------------------------------------------------------------------------------

.arc

.arc
帶有 .arc 擴(kuò)展名的文件相對(duì)來(lái)說(shuō)比較少見(jiàn)。如果您偶然碰到一個(gè),基本上可以認(rèn)定它是使用舊的 MS-DOS SAE ARC 或 PKware PKARC 歸檔實(shí)用程序創(chuàng)建的。這種形式在 linux 上的支持性不是太好,并很難指望在 Linux 機(jī)器上對(duì)這些文件解壓縮。如果需要?jiǎng)?chuàng)建 .arc 文件,嘗試在 DOSEMU 或 VMware 下運(yùn)行原始 SAE ARC 或 PKware PKARC(在攜帶 MS-DOS 實(shí)用程序的 FTP 服務(wù)器上查找它們)。
要解壓縮 .arc 文件,使用 Aladdin Expander for linux。寫這篇文章的時(shí)候,Aladdin Expander 可以為公眾 Beta 測(cè)試目的免費(fèi)獲得;它是否繼續(xù)免費(fèi)還是個(gè)未知問(wèn)題。

要解壓縮 .arc 文件,輸入 unstuff file.arc。-d 是個(gè)有用的選項(xiàng),指定解壓縮文件的目標(biāo)位置。例如:unstuff -d=./home/james/incoming file.arc。

注:要了解更多有關(guān) Aladdin Expander for linux 的詳細(xì)信息,請(qǐng)閱讀有關(guān) .sit 文件的那一節(jié)。

VMware:http://www.
DOSEMU:http://www.
Aladdin 系統(tǒng): http://www./expander/expander_linux_login.html

[目錄](méi)

--------------------------------------------------------------------------------

.arj

.arj
帶有 .arj 擴(kuò)展名的文件是使用 ARJ Software 用于 MS-DOS 和 Windows 的 ARJ 實(shí)用程序創(chuàng)建的。 因?yàn)?ARJ 是一種不能免費(fèi)獲得源代碼的共享件程序,所以在 linux 平臺(tái)上幾乎不存在與其功能匹配的工具,這使得 .arj 文件使用起來(lái)相當(dāng)困難。

對(duì)于 ARJ 文件,只要能成功地解壓縮就已經(jīng)夠幸運(yùn)的了。不可能在 linux 上進(jìn)行 .arj 形式的壓縮,因?yàn)闆](méi)有用于 Linux 的、生成這種文件的本機(jī)壓縮工具。(可以嘗試在 DOSEMU 或 VMware 下運(yùn)行原始 ARJ 軟件,但這根本算不上是一種易于使用的解決方案)。

要解壓縮 .arj 文件,使用 unarj 實(shí)用程序。它比 ARJ 慢,能力也不如 ARJ,但至少它能夠順利地抽取大多數(shù) .arj 文件。它只能將文件抽取到當(dāng)前的工作目錄、列出檔案內(nèi)容,或者測(cè)試檔案。

要查看簡(jiǎn)短的幫助頁(yè)面,輸入 unarj;如需較詳細(xì)的描述,請(qǐng)參閱 unarj.doc 文件,通常它位于 /usr/doc/unarj-2.43 目錄中。

盡管在哪里解壓縮 .arj 文件是由您來(lái)選擇的,但為避免把主工作目錄混淆,通常應(yīng)該在主目錄中創(chuàng)建一個(gè)臨時(shí)子目錄,將當(dāng)前工作目錄更改到新目錄,將壓縮的文件移到新目錄中,然后使用 unarj e archive.arj 來(lái)解壓縮有問(wèn)題的文件。

用于 linux 的 unarj 只能一次抽取所有文件;不能從檔案中抽取個(gè)別文件。至少如果文件已存在于當(dāng)前的工作目錄中,即使在檔案中找到具有相同名稱的文件,您也不會(huì)覆蓋其內(nèi)容。另 外, unarj 不支持空目錄或自抽取檔案;后者是 MS-DOS/Windows 程序,它們無(wú)法在 Linux 上運(yùn)行,但可以在 DOSEMU 或 VMware 下運(yùn)行。

以下是其它一些 unarj 選項(xiàng):

unarj archive.arj 或 unarj l archive.arj -- 列出檔案內(nèi)容
unarj t archive.arj -- 測(cè)試檔案
unarj x archive.arj -- 帶路徑名抽取文件

請(qǐng)注意,unarj 選項(xiàng)不是以減號(hào) (-) 開(kāi)頭的。

如果 unarj 解壓縮文件失敗,嘗試使用 Aladdin Expander for linux(有關(guān)詳細(xì)信息,請(qǐng)參閱有關(guān) .sit 的那一節(jié))。您還可以讓創(chuàng)建檔案的人使用其它工具(例如可用于 MS-DOS 的免費(fèi) gzip)來(lái)壓縮它。您可能還需要一個(gè) simple.arj 檔案,在其中要避免使用所有高級(jí) ARJ 選項(xiàng),例如卷、將檔案分成幾個(gè)小部分、以及自抽取。

為什么不使用自抽取 ARJ 檔案呢?這些是不能在 linux 下運(yùn)行的 MS-DOS 樣式的可執(zhí)行文件;它們使用不同的系統(tǒng)庫(kù),它們的內(nèi)部格式也與 Linux 所需的二進(jìn)制可執(zhí)行文件的格式不同。可能可以在 DOSEMU 或 VMware 下運(yùn)行自抽取 ARJ 檔案。

以 ARJ 或 JAR 形式進(jìn)行的壓縮仍然不能在 linux 上使用,按照 ARJ Software 的 FAQ 頁(yè)面的說(shuō)法,我們不應(yīng)該等待 Linux 移植。如果您知道有任何 Linux 工具可以解壓縮 .jar 文件,請(qǐng)務(wù)必告訴我。

可以從 ARJ Software 的站點(diǎn)或攜帶您所需 linux 發(fā)行版的 FTP 服務(wù)器上下載 unarj 源碼。另外,unarj 通常是基本 Linux 發(fā)行版的一部分,因此可以在主要分發(fā) CD-ROM 上找到它。如需到所有 Linux 發(fā)行版的鏈接的列表,請(qǐng)參閱 Linux 發(fā)行版頁(yè)面。

ARJ 軟件:http://www.
ARJ 的 FAQ 頁(yè)面:http://www./faq.htm
ARJ 的下載頁(yè)面:http://www./files.htm
DOSEMU:http://www.
VMware:http://www.
Aladdin Expander: http://www./expander/expander_linux_login.html
gzip:http://www./software/gzip/gzip.html
linux 發(fā)行版頁(yè)面:http://www./dist/index.html

[目錄](méi)

--------------------------------------------------------------------------------

.lzh (.lha)

.lzh (.lha)
帶有 .lzh 或 .lha 擴(kuò)展名的文件使用的是 LHa、LHarc 或 LHx 壓縮實(shí)用程序進(jìn)行的壓縮。這些實(shí)用程序是由 Y. Tagawa、H. Yoshizaki、Momozou 和 Masaru Oki 開(kāi)發(fā)的。這些實(shí)用程序已移植到許多操作系統(tǒng),使用它們所創(chuàng)建的文件也具有相當(dāng)?shù)目梢浦残浴ats Andersson 執(zhí)行了 linux 移植。
與 gzip 不同,lha 實(shí)用程序執(zhí)行多個(gè)文件的壓縮。要壓縮單個(gè)文件,輸入 lha a archive file。lha 創(chuàng)建的檔案帶有 .lzh 擴(kuò)展名。如果 archive.lzh 已在當(dāng)前的工作目錄中存在,那么您讓 lha 壓縮的文件就將添加到這一現(xiàn)有的檔案中。archive.lzh 先前的內(nèi)容仍被保留,除非它已包含帶有相同名稱的文件,在這種情況下,舊文件將被新文件取代。該操作是 盲目的,意味著它不檢查文件的時(shí)間戳記;要確保只有帶有更新時(shí)間戳記的文件才能替換檔案中已保存的較舊的文件,這時(shí)使用 u 選項(xiàng)而不是 a 選項(xiàng)(例如,lha u archive file)。

當(dāng)收到 .lzh 文件的人抱怨無(wú)法解壓縮檔案時(shí),嘗試使用 lha ag archive file 或 lha ao archive file。g 和 o 選項(xiàng)分別指示 lha 使用常規(guī)或與 lha 兼容的歸檔方法。如果您只更新現(xiàn)有的檔案,使用 u 而不是 a。

歸檔多個(gè)文件和歸檔單個(gè)文件一樣容易:使用通配符(例如, lha a archive files*)或輸入存儲(chǔ)文件所在的頂級(jí)目錄(例如,lha a archive directory)。所有文件和子目錄都將自動(dòng)存儲(chǔ)在檔案中。文件替換規(guī)則和 u 選項(xiàng)對(duì)多個(gè)文件和單個(gè)文件所起的作用是一樣的。通配符使用的語(yǔ)法和您在常用的 shell 中所使用的語(yǔ)法相同。

以下是其它一些 lha 選項(xiàng):

l -- 列出檔案內(nèi)容(例如,lha l archive.lzh)
v -- 列出詳細(xì)格式的檔案內(nèi)容(例如,lha v archive.lzh)
t -- 測(cè)試檔案的完整性(例如,lha t archive.lzh)

請(qǐng)注意,lha 選項(xiàng)不必以負(fù)號(hào) (-) 開(kāi)頭,它們之間也不應(yīng)該有空格。如需其它選項(xiàng)的列表,請(qǐng)輸入 lha。

.lzh 和 .lha 文件的解壓縮相當(dāng)容易:只需輸入 lha e archive.lha。如果希望將文件解壓縮到不是當(dāng)前工作目錄的目錄中,輸入 lha ew=path archive.lha。

也可以使用 lha w=path -e archive.lzh 將檔案的內(nèi)容抽取到由 path 指定的目錄中。lha -ie archive.lzh 將抽取檔案內(nèi)容,但忽略存儲(chǔ)在其中的目錄路徑。

lha 的源碼和二進(jìn)制版本可以從攜帶您所需 linux 發(fā)行版的服務(wù)器上免費(fèi)獲得。如需到所有 Linux 發(fā)行版的鏈接的列表,請(qǐng)參閱 Linux 發(fā)行版頁(yè)面。

linux 發(fā)行版頁(yè)面:http://www./dist/index.html
gzip:http://www./software/gzip/gzip.html

[目錄](méi)

--------------------------------------------------------------------------------

.rar

.rar
帶有 .rar 文件擴(kuò)展名的文件是使用 RAR 和 WinRAR 歸檔和壓縮工具創(chuàng)建的,這些工具由 Eugene Roshal 開(kāi)發(fā)。他先是發(fā)行了用于 MS-DOS 操作系統(tǒng)的這些工具。RAR 受到用戶的青睞是因?yàn)樗麄兛粗厮膹V泛特性和高壓縮比率,以及友好的用戶界面,它與 Norton Commander 的界面(或 Midnight Commander 的界面)很相似。
因?yàn)?RAR For linux 是該軟件的完整移植,因此您可以享受到原始 RAR 的所有好處(除 MC 樣式的界面以外)。但要記住,RAR for Linux 不是免費(fèi)的;必須向總部在芬蘭的一家公司 T:mi Softronic 注冊(cè)它。

RAR for linux 選項(xiàng)的列表給人的印象深刻,可以用作其它歸檔和壓縮工具開(kāi)發(fā)人員的任務(wù)列表。要壓縮單個(gè)文件,輸入 rar a archive file。.rar 擴(kuò)展名將自動(dòng)附加到檔案后(它的完整文件名將是 archive.rar)。如果 archive.rar 已在當(dāng)前工作目錄中存在,您嘗試添加到 archive.rar 的文件就將直接添加到現(xiàn)有檔案中。只有在 archive.rar 已包含帶有相同名稱的文件時(shí),舊文件才會(huì)被新文件替代。其它存儲(chǔ)在檔案內(nèi)部的文件將保持不變。請(qǐng)記住,該操作是 盲目的,意味著 RAR 不檢查文件的時(shí)間戳記;只有在 a 選項(xiàng)后添加了 -u 選項(xiàng)時(shí)才執(zhí)行這一檢查。請(qǐng)注意,a 前面沒(méi)有減號(hào) (-)(例如,rar a -u archive file)。

多個(gè)文件的歸檔非常簡(jiǎn)單:要將當(dāng)前工作目錄中的所有文件和目錄歸檔,輸入 rar a archive。要將特定目錄的內(nèi)容歸檔,輸入 rar a archive /path/to/directory。要將一組文件歸檔,將它們括在引號(hào)中,象這樣: rar a archive '*.cpp'。

文件替換規(guī)則和 -u 選項(xiàng)對(duì)多個(gè)文件和單個(gè)文件所起的作用是一樣的。通配符使用的語(yǔ)法和您在常用的 shell 中所使用的語(yǔ)法相同,但必須記住要用引號(hào)括起它們。

以下是其它一些 RAR 選項(xiàng):

l -- 列出檔案內(nèi)容(例如,rar l archive.rar)
v -- 列出詳細(xì)格式的檔案內(nèi)容(例如,rar v archive.rar)
t -- 測(cè)試檔案的完整性(例如,rar t archive.rar)

請(qǐng)注意,不是所有 RAR 選項(xiàng)都以減號(hào) (-) 開(kāi)頭;有關(guān)詳細(xì)信息,請(qǐng)運(yùn)行不帶任何選項(xiàng)和自變量的 RAR(例如,如果 RAR 目錄位于當(dāng)前工作目錄中,運(yùn)行 rar/rar)。有關(guān)詳細(xì)信息,請(qǐng)參閱 RAR 手冊(cè)文件(它是 rar.txt 文件,同樣位于 RAR 目錄中)。

使用 RAR,您可以解壓縮整個(gè)檔案(使用 rar e archive.rar)、單個(gè)文件(使用 rar e archive.rar file)或一組文件(使用 rar e archive.rar '*.cpp')。因?yàn)?RAR 可以對(duì)多個(gè)文件使用,您也可以使用 rar e '*.rar' '*.cpp' 從多個(gè)檔案中抽取幾組文件。

當(dāng) RAR 無(wú)法從一個(gè)檔案中抽取文件時(shí),使用修復(fù)選項(xiàng)進(jìn)行挽救:rar r archive.rar。

可以從官方 RAR 站點(diǎn)獲得自抽取檔案形式的 RAR for linux。需要使用 ./rarlnx271.sfx 命令來(lái)運(yùn)行它(結(jié)尾的數(shù)字可能會(huì)因?yàn)榘l(fā)行了新版本的 RAR 而有所不同)。檔案將其內(nèi)容解包到當(dāng)前工作目錄中自動(dòng)創(chuàng)建的 rar 子目錄中。您可以在其中找到 rar 二進(jìn)制??梢詫?rar 二進(jìn)制移到 /sbin 或 /usr/sbin 目錄中,這樣所有用戶都可以使用它。除了 RAR 本身,您還可以獲得 UnRAR,它是一個(gè)小型實(shí)用程序,用于解壓縮 .rar 文件,如果您希望允許其它用戶打開(kāi)這樣的檔案但不創(chuàng)建它們,這個(gè)實(shí)用程序使用起來(lái)非常方便。

RAR 站點(diǎn):http://www.

[目錄](méi)

--------------------------------------------------------------------------------

.sit

.sit
使用 Aladdin Systems 所開(kāi)發(fā)的、用于 Mac OS 的 StuffIt 歸檔程序創(chuàng)建的檔案通常帶有 .sit 擴(kuò)展名。這些文件還可以有其它的如 .hqx 或 .bin 這樣的擴(kuò)展名,表明它們?cè)褂?BinHex 或 MacBinary 實(shí)用程序處理過(guò),來(lái)創(chuàng)建可以在計(jì)算機(jī)網(wǎng)絡(luò)上以電子方式傳送的單個(gè)文本文件或二進(jìn)制文件。(Macintosh 文件通常有兩部分,稱為創(chuàng)建子進(jìn)程,必須在傳送之前將它們聯(lián)接在一起,以確保它們作為一個(gè)整體傳送。)可以使用組成 macutil 軟件包的一些實(shí)用程序來(lái)處理這樣編碼的文件,它是免費(fèi)的,可用于所有正式的 linux 發(fā)行版)。
因?yàn)?Aladdin Systems 控制著 StuffIt 的源代碼,在收到 .sit 文件時(shí)唯一的選擇是使用 Aladdin Expander for linux,它當(dāng)前還處于 Beta 階段(但已相當(dāng)合用)。Aladdin Systems 已將這一 beta 版作為免費(fèi)軟件向公眾提供:您不必為它付錢,但也無(wú)法獲得源代碼。當(dāng)前沒(méi)有用于 Linux 的、創(chuàng)建 .sit 檔案的工具。

要解壓縮 .sit 檔案,輸入 unstuff archive.sit。如果不使用 -d 選項(xiàng),抽取出的文件將放在當(dāng)前工作目錄下,該選項(xiàng)可以讓您指定目標(biāo)目錄: unstuff -d=/home/james/oldmacfiles archive.sit。如果解包的文件是受密碼保護(hù)的,使用 -p 選項(xiàng):unstuff -p=secret archive.sit。文本文件轉(zhuǎn)換 filer 選項(xiàng)用于處理行結(jié)束字符的轉(zhuǎn)換,將 LF 轉(zhuǎn)換成 CRLF,然后再轉(zhuǎn)換回來(lái):unstuff-text=auto -eol=unix archive.sit。

可以在 Expander 的 man page 上找到有關(guān)它的詳細(xì)信息(輸入 man unstuff 顯示它)。

Aladdin Expander for linux 可以從 Aladdin Systems 網(wǎng)站上獲得。使用或下載它不用付任何費(fèi)用,但必須向 Aladdin Systems 注冊(cè)。有兩個(gè)版本的 Expander,一個(gè)用于基于 RPM 的系統(tǒng)(Red Hat、Mandrake、SuSE 等),另一個(gè)用于基于 .deb 的系統(tǒng)(Debian、Corel 等)。沒(méi)有特定于 Slackware 的軟件包,但要轉(zhuǎn)換 RPM 包以在 Slackware 上使用它應(yīng)該并不困難。

Aladdin Systems:http://www.
linux 發(fā)行版頁(yè)面:http://www./dist/index.html
macutil 軟件包:http://www./dist/index.html
Aladdin Expander for linux: http://www./expander/expander_linux_login.html

[目錄](méi)

--------------------------------------------------------------------------------

.zip

.zip
.zip 擴(kuò)展名表示文件是使用許多 zip 歸檔程序和壓縮程序之一(但不是 gzip)創(chuàng)建的。因?yàn)檫@是一種非常流行的壓縮格式,算法的詳細(xì)描述也有很多,所以可以找到用于所有操作系統(tǒng)的有用的移植形式。這包括創(chuàng)建和擴(kuò)展帶有 .zip 文件擴(kuò)展名的檔案的壓縮和解壓縮實(shí)用程序。在 linux 上有兩種這樣的工具:免費(fèi)的 Info-ZIP 和以贏利為目的的 PKZIP for Linux。如果您只是偶爾需要?jiǎng)?chuàng)建或打開(kāi) zip 文件,使用 Info-ZIP。如果希望使用在 MS-DOS 或其它系統(tǒng)上使用的相同工具,請(qǐng)選擇 PKZIP(PKZIP 可用于許多操作系統(tǒng))。用于微軟 Windows 的 WinZIP 和用于 Mac OS 的 Stufflt 這兩種實(shí)用程序可以創(chuàng)建和打開(kāi)相互之間兼容的檔案。
Info-ZIP 在無(wú)法使用 gzip 或 tar 的情況下可以提供壓縮和解壓縮的一個(gè)不錯(cuò)的選擇,這或許是在 linux、微軟 Windows 和 Mac OS 用戶之間交換壓縮文件的一種最好的形式。有許多不錯(cuò)的 zip 程序(有開(kāi)放源碼的,也有商業(yè)的)可用于這些操作系統(tǒng),它們應(yīng)該能確保文件的順利交換(當(dāng)然,只要是在特定于某個(gè)特定工具的特殊功能關(guān)閉的情況下)。

要?dú)w檔單個(gè)文件,輸入 zip archive file。要壓縮多個(gè)文件,使用通配符(例如,zip archive picture*jpg)。還有可能將文件定向輸出到 zip;輸入 man zip 獲得詳細(xì)信息。要?dú)w檔整個(gè)目錄,包括其中所有子目錄的內(nèi)容,使用 -r 選項(xiàng),然后在檔案名后輸入目錄名(例如,zip -r archive directory)。還可以輸入 zip -R archive . 來(lái)將當(dāng)前當(dāng)前工作目錄進(jìn)行歸檔。.zip 擴(kuò)展名自動(dòng)添加到檔案名后。

當(dāng) zip 發(fā)現(xiàn)已有檔案的名稱和您嘗試創(chuàng)建的名稱相同時(shí),它將您希望壓縮的文件添加到現(xiàn)有檔案中,而不將已存在的文件除去。這一規(guī)則有一個(gè)例外:如果存儲(chǔ)在現(xiàn)有檔案 中的一個(gè)或多個(gè)文件和您希望壓縮的一個(gè)或多個(gè)文件具有相同的名稱,舊文件將由新文件替換。文件替換規(guī)則可以使用 -u 選項(xiàng)來(lái)修改(有關(guān)詳細(xì)信息,請(qǐng)參閱 man zip)。

以下是其它一些 zip 選項(xiàng):

-j -- 只存儲(chǔ)文件名,不帶訪問(wèn)路徑(例如,zip -j archive file)
-t -- 測(cè)試檔案的完整性(例如,zip -t archive.zip)
-x -- 排除文件(例如,zip -r archive ./* -x *.tmp)

請(qǐng)注意,不是所有 zip 選項(xiàng)都以負(fù)號(hào) (-) 開(kāi)頭。

PKZIP 選項(xiàng)類似于 Info-ZIP,但您應(yīng)該閱讀 pkzip.htm 手冊(cè)(它是一個(gè) HTML 文檔;使用 lynx pkzip.htm 或 netscape pkzip.htm 閱讀)來(lái)確保您的操作正確。

要解壓縮 zip 文件,使用 unzip archive.zip 命令。如果想指定將檔案擴(kuò)展到哪個(gè)目錄中,可以使用 -d 選項(xiàng)(例如,unzip file.zip -d /home/james/zips 將 file.zip 的內(nèi)容抽取到 /home/james/zips 目錄中)。

注:Aladdin Expander for linux 也可以解壓縮 zip 文件。有關(guān)詳細(xì)信息,請(qǐng)參閱有關(guān) .sit 文件的那一節(jié)。

當(dāng) zip 無(wú)法抽取檔案中的文件時(shí),使用 -F 或 -FF 修復(fù) zip 選項(xiàng)進(jìn)行挽救(例如 zip -F archive.zip 或 zip -FF archive.zip)。請(qǐng)記住在嘗試拯救已破壞的檔案之前進(jìn)行備份。

可以從官方 Info-ZIP 站點(diǎn)獲得二進(jìn)制或源碼形式的 Info-ZIP for linux。

可以從 PKZIP 官方站點(diǎn)下載 PKZIP for linux。它作為自抽取檔案分發(fā)。要為它解包,輸入 ./pklin251.exe,檔案的內(nèi)容將解包到當(dāng)前工作目錄中。您需要將 pkzip25 二進(jìn)制文件復(fù)制到 /sbin 或 /usr/sbin 目錄中,這樣系統(tǒng)上的所有用戶都可以使用它。(但您必須購(gòu)買相應(yīng)的許可證,因?yàn)樗巧虡I(yè)軟件包。)

gzip:http://www./software/gzip/gzip.html
tar:http://www./software/tar/tar.html
WinZIP:http://www.
StuffIt:http://www.
Aladdin Expander: http://www./expander/expander_linux_login.html
下載源碼形式的 Info-ZIP:http://www./pub/infozip
下載二進(jìn)制形式的 Info-ZIP:http://www./dist/index.html
下載 PKZIP:http://www./shareware/pkzip_unix.html

[目錄](méi)

--------------------------------------------------------------------------------

.zoo

.zoo
.zoo 擴(kuò)展名在因特網(wǎng)上不經(jīng)常出現(xiàn),但請(qǐng)放心,可以使用 linux 的 zoo 實(shí)用程序打開(kāi)和創(chuàng)建這樣的文件。不過(guò)要記住,zoo 對(duì)于現(xiàn)在用戶的期望來(lái)說(shuō)已有些陳舊和簡(jiǎn)單。
要?dú)w檔單個(gè)文件,輸入 zoo a archive file。同樣,要壓縮多個(gè)文件,可以使用通配符 -- 例如,zoo a archive picture*jpg。.zip 擴(kuò)展名自動(dòng)添加到檔案名后。

下面是其它一些 zoo 選項(xiàng)以及它們所添加的功能:

l -- 列出檔案內(nèi)容(例如,zoo l archive.zoo)
t -- 測(cè)試檔案的完整性(例如,zoo -t archive.zoo)

請(qǐng)注意,不是所有 zoo 選項(xiàng)都以負(fù)號(hào) (-) 開(kāi)頭。

要解壓縮 .zoo 文件,輸入 zoo e archive.zoo。

可以獲得用于所有 linux 發(fā)行版的二進(jìn)制形式的 zoo for Linux。

下載二進(jìn)制形式的 zoo:http://www./dist/index.html

[目錄](méi)

--------------------------------------------------------------------------------

郵件

1. 將文件當(dāng)做電子郵件的內(nèi)容送出
語(yǔ)法:mail -s “主題”用戶名@地址< 文件
例如:
mail -s “program” user < file.c 將file.c 當(dāng)做mail的內(nèi)容,送至user,主題為program。
2. 傳送電子郵件給本系統(tǒng)用戶
語(yǔ)法:mail 用戶名

3. 傳送電子郵件至外地用戶
語(yǔ)法: mail 用戶名@接受地址
例如:
mail weisongzhou@hotmail.com
Subject : mail test
:
鍵入信文內(nèi)容
: :
按下Ctrl+D 鍵或. 鍵結(jié)束正文。
連按兩次Ctrl+C鍵則中斷工作,不送此信件。
Cc( Carbon copy) : 復(fù)制一份正文,給其他的收信人。

4. 檢查所傳送的電子郵件是否送出,或滯留在郵件服務(wù)器中
語(yǔ)法:/usr/lib/sendmail -bp
若屏幕顯示為“Mail queue is empty” 的信息,表示mail 已送出。
若為其他錯(cuò)誤信息,表示電子郵件因故尚未送出。

[目錄](méi)

--------------------------------------------------------------------------------

快捷鍵

這里列舉了一些你可以用來(lái)快速執(zhí)行常見(jiàn)任務(wù)的快捷鍵。
要了解更多快捷鍵,請(qǐng)?jiān)L問(wèn):
http:///linux-newbie/lnag_commands.html#shortcuts

[Ctrl] + [Alt] + [Backspace] = 殺死 X。這會(huì)殺死你當(dāng)前的 X 會(huì)話,把你返回到登錄屏幕。如果正常退出步驟不起作用,你可以使用這種方法。

[Ctrl] + [Alt] + [Delete] = 關(guān)機(jī)和重新引導(dǎo)。關(guān)閉你當(dāng)前的對(duì)話然后重新引導(dǎo) OS。只有在正常關(guān)機(jī)步驟不起作用時(shí)才使用這種方法。

[Ctrl] + [Alt] + [Fn] = 切換屏幕。[Ctrl]+[Alt] + 功能鍵之一 會(huì)顯示一個(gè)新屏幕。[F1] 到 [F6] 是文本(控制臺(tái))屏幕, [F7] 是圖形化屏幕。

[Alt] + [Tab] = 切換任務(wù)。如果你同時(shí)打開(kāi)了不止一個(gè)應(yīng)用程序,你可以使用 [Alt] + [Tab] 來(lái)在打開(kāi)的任務(wù)和應(yīng)用程序間切換。

[Ctrl] + [a] = 把光標(biāo)移到行首。它在多數(shù)文本編輯器和 Mozilla 的 URL 字段內(nèi)可以使用。

[Ctrl] + [d] = 從終端或控制臺(tái)中注銷,你不必鍵入 exit 或 logout.

[Ctrl] + [e] = 把光標(biāo)移到行尾。它在多數(shù)文本編輯器和 Mozilla 的 URL 字段內(nèi)都可使用。

[Ctrl] + [l] = 清除終端。該簡(jiǎn)化操作與在命令行鍵入 clear 作用相同。

[Ctrl] + [u] = 清除當(dāng)前行。 如果你在終端下工作,使用這一簡(jiǎn)化操作可以清除從光標(biāo)處到行尾的字符。

[鼠標(biāo)中間鍵] = 粘貼突出顯示的文本。使用鼠標(biāo)左鍵來(lái)突出顯示文本。把光標(biāo)指向你想粘貼文本的地方。點(diǎn)擊鼠標(biāo)中間鍵來(lái)粘貼它。

[Tab] = 命令行自動(dòng)補(bǔ)全。在終端下工作時(shí)可使用這一命令。鍵入命令的前幾個(gè)字符,然后按 [Tab] 鍵,它會(huì)自動(dòng)補(bǔ)全命令或顯示匹配你鍵入字符的所有命令。

[向上]和[向下]箭頭 = 顯示命令歷史。當(dāng)你在終端下工作時(shí),按[向上]或 [向下]箭頭來(lái)上下查看你在當(dāng)前目錄下鍵入的命令歷史。 當(dāng)你看到你想使用的命令時(shí),按 [Enter] 鍵。

clear = 清除終端。在命令行下鍵入它會(huì)清除所有終端窗口中顯示的數(shù)據(jù)。

exit = 注銷。在命令行中鍵入它會(huì)注銷當(dāng)前的用戶或根用戶賬號(hào)。

history = 顯示命令歷史。在命令行中鍵入它來(lái)顯示你所鍵入的被編號(hào)的前 500 個(gè)命令。要顯示較短的命令歷史,鍵入 history 之后,空一格,在鍵入一個(gè)數(shù)字。例如:history 20。

reset = 刷新終端屏幕。如果字符不清晰的話,在命令行中鍵入這個(gè)命令會(huì)刷新終端屏幕。

_________________
虛心學(xué)習(xí)ing,請(qǐng)多關(guān)照!icon_smile.gif
大音希聲、大象潛形、大公無(wú)私。
助人為樂(lè),為人生快樂(lè)之本!
返回頁(yè)首
閱覽會(huì)員資料 發(fā)送站內(nèi)信件 發(fā)送電子郵件
軒轅砍刀 性別:帥哥

精靈
級(jí)別: 精靈
注冊(cè)時(shí)間: 2003-03-30
帖子: 158
來(lái)自: 江西
帖子發(fā)表于: 2003-04-21 13:36 發(fā)表主題: 引用并回復(fù) 編輯/刪除帖子 刪除這個(gè)主題 瀏覽發(fā)表者的IP地址
系統(tǒng)安裝配置

[目錄](méi)

--------------------------------------------------------------------------------

配置文件

介紹
每個(gè) linux 程序都是一個(gè)可執(zhí)行文件,它含有操作碼列表,CPU 將執(zhí)行這些操作碼來(lái)完成特定的操作。例如,ls 命令是由 /bin/ls 文件提供的,該文件含有機(jī)器指令的列表,在屏幕上顯示當(dāng)前目錄中文件的列表時(shí)需要使用這些機(jī)器指令。幾乎每個(gè)程序的行為都可以通過(guò)修改其配置文件來(lái)按照您 的偏好或需要去定制。
linux 中有沒(méi)有一個(gè)標(biāo)準(zhǔn)的配置文件格式?
一句話,沒(méi)有。不熟悉 linux 的用戶(一定)會(huì)感到沮喪,因?yàn)槊總€(gè)配置文件看起來(lái)都象是一個(gè)要迎接的新挑戰(zhàn)。在 Linux 中,每個(gè)程序員都可以自由選擇他或她喜歡的配置文件格式??梢赃x擇的格式很多,從 /etc/shells 文件(它包含被一個(gè)換行符分開(kāi)的 shell 的列表),到 Apache 的復(fù)雜的 /etc/httpd.conf 文件。

什么是系統(tǒng)配置文件?
內(nèi)核本身也可以看成是一個(gè)“程序”。為什么內(nèi)核需要配置文件??jī)?nèi)核需要了解系統(tǒng)中用戶和組的列表,進(jìn)而管理文件權(quán)限(即根據(jù)權(quán)限判定特定用戶 (UNIX_USERS)是否可以打開(kāi)某個(gè)文件)。注意,這些文件不是明確地由程序讀取的,而是由系統(tǒng)庫(kù)所提供的一個(gè)函數(shù)讀取,并被內(nèi)核使用。例如,程序 需要某個(gè)用戶的(加密過(guò)的)密碼時(shí)不應(yīng)該打開(kāi) /etc/passwd 文件。相反,程序應(yīng)該調(diào)用系統(tǒng)庫(kù)的 getpw() 函數(shù)。這種函數(shù)也被稱為系統(tǒng)調(diào)用。打開(kāi) /etc/passwd 文件和之后查找那個(gè)被請(qǐng)求的用戶的密碼都是由內(nèi)核(通過(guò)系統(tǒng)庫(kù))決定的。

除非另行指定,Red Hat linux 系統(tǒng)中大多數(shù)配置文件都在 /etc 目錄中。

更改配置文件
在更改配置文件時(shí),如果程序不是由系統(tǒng)管理員或內(nèi)核控制的,就要確保重新啟動(dòng)過(guò)使用該配置的程序。普通用戶通常沒(méi)有啟動(dòng)或停止系統(tǒng)程序和/或守護(hù)進(jìn)程的權(quán)限。

內(nèi)核
更改內(nèi)核中的配置文件會(huì)立即影響到系統(tǒng)。例如,更改 passwd 文件以增加用戶將立即使該用戶變?yōu)榭捎?。而且任?linux 系統(tǒng)的 /proc/sys 目錄中都有一些內(nèi)核可調(diào)參數(shù)。只有超級(jí)用戶可以得到對(duì)所有這些文件的寫訪問(wèn)權(quán)力;其它用戶只有只讀訪問(wèn)權(quán)力。此目錄中文件的分類的方式和 Linux 內(nèi)核源代碼的分類方式一樣。此目錄中的每個(gè)文件都代表一個(gè)內(nèi)核數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu)可以被動(dòng)態(tài)地修改,從而改變系統(tǒng)性能。

注意:在更改其中任何文件的任何值之前,您應(yīng)該確保自己全面了解該文件,以避免對(duì)系統(tǒng)造成不可修復(fù)的損害。

/proc/sys/kernel/ 目錄中的文件

文件名 描述
threads-max 內(nèi)核可運(yùn)行的最大任務(wù)數(shù)。
ctrl-alt-del 如果值為 1,那么順序按下這幾個(gè)鍵將“徹底地”重新引導(dǎo)系統(tǒng)。
sysrq 如果值為 1,Alt-SysRq 則為激活狀態(tài)。
osrelease 顯示操作系統(tǒng)的發(fā)行版版本號(hào)
ostype 顯示操作系統(tǒng)的類型。
hostname 系統(tǒng)的主機(jī)名。
domainname 網(wǎng)絡(luò)域,系統(tǒng)是該網(wǎng)絡(luò)域的一部分。
modprobe 指定 modprobe 是否應(yīng)該在啟動(dòng)時(shí)自動(dòng)運(yùn)行并加載必需的模塊。

守護(hù)進(jìn)程和系統(tǒng)程序
守護(hù)進(jìn)程是永遠(yuǎn)運(yùn)行在后臺(tái)的程序,它默默地執(zhí)行自己的任務(wù)。常見(jiàn)的守護(hù)進(jìn)程有 in.ftpd(ftp 服務(wù)器守護(hù)進(jìn)程)、in.telnetd(telnet 服務(wù)器守護(hù)進(jìn)程)和 syslogd(系統(tǒng)日志記錄守護(hù)進(jìn)程)。有些守護(hù)進(jìn)程在運(yùn)行時(shí)會(huì)嚴(yán)密監(jiān)視配置文件,在配置文件改變時(shí)就會(huì)自動(dòng)重新加載它。但是大多數(shù)守護(hù)進(jìn)程并不會(huì)自動(dòng) 重新加載配置文件。我們需要以某種方式“告訴”這些守護(hù)進(jìn)程配置文件已經(jīng)被發(fā)生了改變并應(yīng)該重新加載。可以通過(guò)使用服務(wù)命令重新啟動(dòng)服務(wù)來(lái)達(dá)到這個(gè)目的 (在 Red Hat linux 系統(tǒng)上)。

例如,如果我們更改了網(wǎng)絡(luò)配置,就需要發(fā)出:
service network restart。

注意:這些服務(wù)最常見(jiàn)的是 /etc/rc.d/init.d/* 目錄中存在的腳本,在系統(tǒng)被引導(dǎo)時(shí)由 init 啟動(dòng)。所以,您也可以執(zhí)行如下操作來(lái)重新啟動(dòng)服務(wù):
/etc/rc.d/init.d/<script-for-the-service> start | stop | status
start、stop 和 status 是這些腳本接受的輸入值,用來(lái)執(zhí)行操作。

[目錄](méi)

--------------------------------------------------------------------------------

主機(jī)

/etc/host.conf
告訴網(wǎng)絡(luò)域名服務(wù)器如何查找主機(jī)名。(通常是 /etc/hosts,然后就是名稱服務(wù)器;可通過(guò) netconf 對(duì)其進(jìn)行更改)
/etc/hosts
包含(本地網(wǎng)絡(luò)中)已知主機(jī)的一個(gè)列表。如果系統(tǒng)的 IP 不是動(dòng)態(tài)生成,就可以使用它。對(duì)于簡(jiǎn)單的主機(jī)名解析(點(diǎn)分表示法),在請(qǐng)求 DNS 或 NIS 網(wǎng)絡(luò)名稱服務(wù)器之前,/etc/hosts.conf 通常會(huì)告訴解析程序先查看這里。

/etc/hosts.allow
請(qǐng)參閱 hosts_access 的聯(lián)機(jī)幫助頁(yè)。至少由 tcpd 讀取。

/etc/hosts.deny
請(qǐng)參閱 hosts_access 的聯(lián)機(jī)幫助頁(yè)。至少由 tcpd 讀取。

[目錄](méi)

--------------------------------------------------------------------------------

引導(dǎo)和登錄注銷

/etc/issue & /etc/issue.net
這些文件由 mingetty(和類似的程序)讀取,用來(lái)向從終端(issue)或通過(guò) telnet 會(huì)話(issue.net)連接的用戶顯示一個(gè)“welcome”字符串。它們包括幾行聲明 Red Hat 版本號(hào)、名稱和內(nèi)核 ID 的信息。它們由 rc.local 使用。
/etc/redhat-release
包括一行聲明 Red Hat 版本號(hào)和名稱的信息。由 rc.local 使用。

/etc/rc.d/rc
通常在所有運(yùn)行級(jí)別運(yùn)行,級(jí)別作為參數(shù)傳送。例如,要以圖形(Graphics)模式(X-Server)引導(dǎo)機(jī)器,請(qǐng)?jiān)诿钚羞\(yùn)行下面的命令:init 5。運(yùn)行級(jí)別 5 表示以圖形模式引導(dǎo)系統(tǒng)。

/etc/rc.d/rc.local
非正式的。可以從 rc、rc.sysinit 或 /etc/inittab 調(diào)用。

/etc/rc.d/rc.sysinit
通常是所有運(yùn)行級(jí)別的第一個(gè)腳本。

/etc/rc.d/rc/rcX.d
從 rc 運(yùn)行的腳本(X 表示 1 到 5 之間的任意數(shù)字)。這些目錄是特定“運(yùn)行級(jí)別”的目錄。當(dāng)系統(tǒng)啟動(dòng)時(shí),它會(huì)識(shí)別要啟動(dòng)的運(yùn)行級(jí)別,然后調(diào)用該運(yùn)行級(jí)別的特定目錄中存在的所有啟動(dòng)腳本。例 如,系統(tǒng)啟動(dòng)時(shí)通常會(huì)在引導(dǎo)消息之后顯示“entering run-level 3”的消息;這意味著 /etc/rc.d/rc3.d/ 目錄中的所有初始化腳本都將被調(diào)用。

[目錄](méi)

--------------------------------------------------------------------------------

文件系統(tǒng)

/proc
內(nèi)核提供了一個(gè)接口,用來(lái)顯示一些它的數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu)對(duì)于決定諸如使用的中斷、初始化的設(shè)備和內(nèi)存統(tǒng)計(jì)信息之類的系統(tǒng)參數(shù)可能很有用。這個(gè)接口是 作為一個(gè)獨(dú)立但虛擬的文件系統(tǒng)提供的,稱為 /proc 文件系統(tǒng)。很多系統(tǒng)實(shí)用程序都使用這個(gè)文件系統(tǒng)中存在的值來(lái)顯示系統(tǒng)統(tǒng)計(jì)信息。
例如,/proc/modules 文件列舉系統(tǒng)中當(dāng)前加載的模塊。lsmod 命令讀取此信息,然后將其以人們可以看懂的格式顯示出來(lái)。下面表格中指定的 mtab 文件以同樣的方式讀取包含當(dāng)前安裝的文件系統(tǒng)的 /proc/mount 文件。
/etc/mtab
這將隨著 /proc/mount 文件的改變而不斷改變。換句話說(shuō),文件系統(tǒng)被安裝和卸載時(shí),改變會(huì)立即反映到此文件中。

/etc/fstab
列舉計(jì)算機(jī)當(dāng)前“可以安裝”的文件系統(tǒng)。這非常重要,因?yàn)橛?jì)算機(jī)引導(dǎo)時(shí)將運(yùn)行 mount -a 命令,該命令負(fù)責(zé)安裝 fstab 的倒數(shù)第二列中帶有“1”標(biāo)記的每一個(gè)文件系統(tǒng)。

/etc/mtools.conf
DOS 類型的文件系統(tǒng)上所有操作(創(chuàng)建目錄、復(fù)制、格式化等等)的配置。

[目錄](méi)

--------------------------------------------------------------------------------

系統(tǒng)管理

/etc/group
包含有效的組名稱和指定組中包括的用戶。單一用戶如果執(zhí)行多個(gè)任務(wù),可以存在于多個(gè)組中。例如,如果一個(gè)“用戶”是“project 1”工程組的成員,同時(shí)也是管理員,那么在 group 文件中他的條目看起來(lái)就會(huì)是這樣的:user: * : group-id : project1
/etc/nologin
如果有 /etc/nologin 文件存在,login(1) 將只允許 root 用戶進(jìn)行訪問(wèn)。它將對(duì)其它用戶顯示此文件的內(nèi)容并拒絕其登錄。

/etc/passwd
請(qǐng)參閱“man passwd”。它包含一些用戶賬號(hào)信息,包括密碼(如果未被 shadow 程序加密過(guò))。

/etc/rpmrc
rpm 命令配置。所有的 rpm 命令行選項(xiàng)都可以在這個(gè)文件中一起設(shè)置,這樣,當(dāng)任何 rpm 命令在該系統(tǒng)中運(yùn)行時(shí),所有的選項(xiàng)都會(huì)全局適用。

/etc/securetty
包含設(shè)備名稱,由 tty 行組成(每行一個(gè)名稱,不包括前面的 /dev/),root 用戶在這里被允許登錄。

/etc/usertty

/etc/shadow
包含加密后的用戶賬號(hào)密碼信息,還可以包括密碼時(shí)效信息。包括的字段有:
·登錄名
·加密后的密碼
·從 1970 年 1 月 1 日到密碼最后一次被更改的天數(shù)
·距密碼可以更改之前的天數(shù)
·距密碼必須更改之前的天數(shù)
·密碼到期前用戶被警告的天數(shù)
·密碼到期后帳戶被禁用的天數(shù)
·從 1970 年 1 月 1 日到賬號(hào)被禁用的天數(shù)

/etc/shells
包含系統(tǒng)可用的可能的“shell”的列表。

/etc/motd
每日消息;在管理員希望向 linux 服務(wù)器的所有用戶傳達(dá)某個(gè)消息時(shí)使用。

[目錄](méi)

--------------------------------------------------------------------------------

網(wǎng)絡(luò)

/etc/gated.conf gated 的配置。
只能被 gated 守護(hù)進(jìn)程所使用。
/etc/gated.version
包含 gated 守護(hù)進(jìn)程的版本號(hào)。

/etc/gateway
由 routed 守護(hù)進(jìn)程可選地使用。

/etc/networks
列舉從機(jī)器所連接的網(wǎng)絡(luò)可以訪問(wèn)的網(wǎng)絡(luò)名和網(wǎng)絡(luò)地址。通過(guò)路由命令使用。允許使用網(wǎng)絡(luò)名稱。

/etc/protocols
列舉當(dāng)前可用的協(xié)議。請(qǐng)參閱 NAG(網(wǎng)絡(luò)管理員指南,Network Administrators Guide)和聯(lián)機(jī)幫助頁(yè)。C 接口是 getprotoent。絕不能更改。

/etc/resolv.conf
在程序請(qǐng)求“解析”一個(gè) IP 地址時(shí)告訴內(nèi)核應(yīng)該查詢哪個(gè)名稱服務(wù)器。

/etc/rpc
包含 RPC 指令/規(guī)則,這些指令/規(guī)則可以在 NFS 調(diào)用、遠(yuǎn)程文件系統(tǒng)安裝等中使用。

/etc/exports
要導(dǎo)出的文件系統(tǒng)(NFS)和對(duì)它的權(quán)限。

/etc/services
將網(wǎng)絡(luò)服務(wù)名轉(zhuǎn)換為端口號(hào)/協(xié)議。由 inetd、telnet、tcpdump 和一些其它程序讀取。有一些 C 訪問(wèn)例程。

/etc/inetd.conf
inetd 的配置文件。請(qǐng)參閱 inetd 聯(lián)機(jī)幫助頁(yè)。包含每個(gè)網(wǎng)絡(luò)服務(wù)的條目,inetd 必須為這些網(wǎng)絡(luò)服務(wù)控制守護(hù)進(jìn)程或其它服務(wù)。注意,服務(wù)將會(huì)運(yùn)行,但在 /etc/services 中將它們注釋掉了,這樣即使這些服務(wù)在運(yùn)行也將不可用。格式為:<service_name> <sock_type> <proto> <flags> <user> <server_path> <args>

/etc/sendmail.cf
郵件程序 sendmail 的配置文件。比較隱晦,很難理解。

/etc/sysconfig/network
指出 NETWORKING=yes 或 no。至少由 rc.sysinit 讀取。

/etc/sysconfig/network-scripts/if*
Red Hat 網(wǎng)絡(luò)配置腳本。

[目錄](méi)

--------------------------------------------------------------------------------

系統(tǒng)命令

系統(tǒng)命令要獨(dú)占地控制系統(tǒng),并讓一切正常工作。所有如 login(完成控制臺(tái)用戶身份驗(yàn)證階段)或 bash(提供用戶和計(jì)算機(jī)之間交互)之類的程序都是系統(tǒng)命令。因此,和它們有關(guān)的文件也特別重要。這一類別中有下列令用戶和管理員感興趣的文件。
/etc/lilo.conf
包含系統(tǒng)的缺省引導(dǎo)命令行參數(shù),還有啟動(dòng)時(shí)使用的不同映象。您在 LILO 引導(dǎo)提示的時(shí)候按 Tab 鍵就可以看到這個(gè)列表。

/etc/logrotate.conf
維護(hù) /var/log 目錄中的日志文件。

/etc/identd.conf
identd 是一個(gè)服務(wù)器,它按照 RFC 1413 文檔中指定的方式實(shí)現(xiàn) TCP/IP 提議的標(biāo)準(zhǔn) IDENT 用戶身份識(shí)別協(xié)議。identd 的操作原理是查找特定 TCP/IP 連接并返回?fù)碛写诉B接的進(jìn)程的用戶名。作為選擇,它也可以返回其它信息,而不是用戶名。請(qǐng)參閱 identd 聯(lián)機(jī)幫助頁(yè)。

/etc/ld.so.conf
“動(dòng)態(tài)鏈接程序”(Dynamic Linker)的配置。

/etc/inittab
按年代來(lái)講,這是 UNIX 中第一個(gè)配置文件。在一臺(tái) UNIX 機(jī)器打開(kāi)之后啟動(dòng)的第一個(gè)程序是 init,它知道該啟動(dòng)什么,這是由于 inittab 的存在。在運(yùn)行級(jí)別改變時(shí),init 讀取 inittab,然后控制主進(jìn)程的啟動(dòng)。

/etc/termcap
一個(gè)數(shù)據(jù)庫(kù),包含所有可能的終端類型以及這些終端的性能。

[目錄](méi)

--------------------------------------------------------------------------------

守護(hù)進(jìn)程

守護(hù)進(jìn)程是一種運(yùn)行在非交互模式下的程序。一般來(lái)說(shuō),守護(hù)進(jìn)程任務(wù)是和聯(lián)網(wǎng)區(qū)域有關(guān)的:它們等待連接,以便通過(guò)連接提供服務(wù)。linux 可以使用從 Web 服務(wù)器到 ftp 服務(wù)器的很多守護(hù)進(jìn)程。
/etc/syslogd.conf
syslogd 守護(hù)進(jìn)程的配置文件。syslogd 是一種守護(hù)進(jìn)程,它負(fù)責(zé)記錄(寫到磁盤)從其它程序發(fā)送到系統(tǒng)的消息。這個(gè)服務(wù)尤其常被某些守護(hù)進(jìn)程所使用,這些守護(hù)進(jìn)程不會(huì)有另外的方法來(lái)發(fā)出可能有問(wèn)題存在的信號(hào)或向用戶發(fā)送消息。

/etc/httpd.conf
Web 服務(wù)器 Apache 的配置文件。這個(gè)文件一般不在 /etc 中。它可能在 /usr/local/httpd/conf/ 或 /etc/httpd/conf/ 中,但是要確定它的位置,您還需要檢查特定的 Apache 安裝信息。

/etc/conf.modules or /etc/modules.conf
kerneld 的配置文件。有意思的是,kerneld 并不是“作為守護(hù)進(jìn)程的”內(nèi)核。它其實(shí)是一種在需要時(shí)負(fù)責(zé)“快速”加載附加內(nèi)核模塊的守護(hù)進(jìn)程。

[目錄](méi)

--------------------------------------------------------------------------------

用戶程序

在 linux(和一般的 UNIX)中,有無(wú)數(shù)的“用戶”程序。最常見(jiàn)的一種用戶程序配置文件是 /etc/lynx.cfg。這是著名的文本瀏覽器 lynx 的配置文件。通過(guò)這個(gè)文件,您可以定義代理服務(wù)器、要使用的字符集等等。下面的代碼樣本展示了 lynx.cfg 文件的一部分,修改這部分代碼可以改變 Linux 系統(tǒng)的代理服務(wù)器設(shè)置。缺省情況下,這些設(shè)置適用于在各自的 shell 中運(yùn)行 lynx 的所有用戶,除非某個(gè)用戶通過(guò)指定 --cfg = "mylynx.cfg" 重設(shè)了缺省的配置文件。
/etc/lynx.cfg 中的代理服務(wù)器設(shè)置

.h1 proxy
.h2 HTTP_PROXY
.h2 HTTPS_PROXY
.h2 FTP_PROXY
.h2 GOPHER_PROXY
.h2 NEWS_PROXY
.h2 NNTP_PROXY
# Lynx version 2.2 and beyond supports the use of proxy servers that can act as
# firewall gateways and caching servers. They are preferable to the older
# gateway servers. Each protocol used by Lynx can be mapped separately using
# PROTOCOL_proxy environment variables (see Lynx Users Guide). If you have
# not set them externally, you can set them at run time via this configuration file.
# They will not override external settings. The no_proxy variable can be used
# to inhibit proxying to selected regions of the Web (see below). Note that on
# VMS these proxy variables are set as process logicals rather than symbols, to
# preserve lowercasing, and will outlive the Lynx image.
#
.ex 15
http_proxy:http://proxy3.in.ibm.com:80/
ftp_proxy:http://proxy3.in.ibm.com:80/
#http_proxy:http://penguin.in.ibm.com:8080
#ftp_proxy:http://penguin.in.ibm.com:8080/

.h2 NO_PROXY
# The no_proxy variable can be a comma-separated list of strings defining
# no-proxy zones in the DNS domain name space. If a tail substring of the
# domain-path for a host matches one of these strings, transactions with that
# node will not be proxied.
.ex
no_proxy:demiurge.in.ibm.com, demiurge

用戶或系統(tǒng)程序在每次啟動(dòng)時(shí)都會(huì)讀取其配置文件。盡管如此,請(qǐng)記住,有些系統(tǒng)程序在計(jì)算機(jī)打開(kāi)時(shí)情況不一樣,它們的行為依賴于在 /etc/ 中的配置文件中讀到的內(nèi)容。所以,用戶程序第一次啟動(dòng)時(shí)將從 /etc/ 目錄中存在的文件讀取缺省配置。然后,用戶可以通過(guò)使用 rc 和 .(點(diǎn))文件來(lái)定制程序,正如下面一節(jié)所示。

用戶配置文件:.(點(diǎn))文件和 rc 文件
我們已經(jīng)看到怎樣容易地配置程序。但是如果有的人不喜歡在 /etc/ 中配置程序的方式該怎么辦呢?“普通”用戶不能簡(jiǎn)單地進(jìn)入 /etc 然后更改配置文件;從文件系統(tǒng)的角度來(lái)看,配置文件的所有者是 root 用戶!這就是大多數(shù)用戶程序都定義兩個(gè)配置文件的原因:第一個(gè)是“系統(tǒng)”級(jí)別的,位于 /etc/;另一個(gè)屬于用戶“專用”,可以在他或她的主目錄中找到。

例如,我在我的系統(tǒng)中安裝了非常有用的 wget 實(shí)用程序。/etc/ 中有一個(gè) /etc/wgetrc 文件。在我的主目錄中,有一個(gè)名為 .wgetrc 的文件,它描述了我定制的配置(只有在我,也就是用戶運(yùn)行 wget 命令時(shí),才會(huì)加載這個(gè)配置文件)。其它用戶在他們自己的主目錄(/home/other)中也可以有 .wgetrc 文件;當(dāng)然,只有這些用戶運(yùn)行 wget 命令時(shí),才會(huì)讀取這個(gè)文件。換句話說(shuō),/etc/wgetrc 文件為 wget 提供了“缺省”值,而 /home/xxx/.wgetrc 文件列舉了某個(gè)用戶的“定制項(xiàng)”。重要的是這只是“一般規(guī)則”,并非所有情況都如此。例如,一個(gè)象 pine 一樣的程序,在 /etc/ 中并沒(méi)有任何文件,它只在用戶主目錄中有一個(gè)定制配置文件,名為 .pinerc。其它程序可能只有 /etc/ 中的缺省配置文件,而且可能不允許用戶“定制”這些配置文件(/etc 目錄中只有少數(shù) config. 文件是這種情況)。

[目錄](méi)

--------------------------------------------------------------------------------

rc和點(diǎn)文件

通常使用的 rc 和 .(點(diǎn))文件
~/.bash_login
請(qǐng)參考“man bash”。如果 ~/.bash_profile 不存在,bash 則將 ~/.bash_login 作為 ~/.bash_profile 處理。

~/.bash_logout
請(qǐng)參考“man bash”。在退出時(shí)由 bash 登錄 shell 引用。

~/.bash_profile
由 bash 登錄 shell 引用 /etc/profile 之后引用。

~/.bash_history
先前執(zhí)行的命令的列表。

~/.bashrc
請(qǐng)參考“man bash”。由 bash 非登錄交互式 shell 引用(沒(méi)有其它文件)。除非設(shè)置了 BASH_ENV 或 ENV,非交互式 shell 不引用任何文件。

~/.emacs
啟動(dòng)時(shí)由 emac 讀取。

~/.forward
如果這里包含一個(gè)電子郵件地址,那么所有發(fā)往 ~ 的所有者的郵件都會(huì)被轉(zhuǎn)發(fā)到這個(gè)電子郵件地址。

~/.fvwmrc ~/.fvwm2rc
fvwm 和 fvwm2(基本的 X Window 管理器)的配置文件。

~/.hushlogin
請(qǐng)參考“man login”。引起“無(wú)提示”登錄(沒(méi)有郵件通知、上次登錄信息或者 MOD 信息)。

~/.mail.rc
郵件程序的用戶初始化文件。

~/.ncftp/ ncftp
程序的目錄;包含書簽、日志、宏、首選項(xiàng)和跟蹤信息。請(qǐng)參閱 man ncftp。ncftp 的目的是為因特網(wǎng)標(biāo)準(zhǔn)文件傳輸協(xié)議(Internet standard File Transfer Protocol)提供一個(gè)強(qiáng)大而靈活的接口。它旨在替換系統(tǒng)所使用的標(biāo)準(zhǔn)的 ftp 程序。

~/.profile
請(qǐng)參考“man bash”。如果 ~/.bash_profile 和 ~/.bash_login 文件不存在,bash 則將 ~/.profile 作為 ~/.bash_profile 處理,并被其它繼承 Bourn 的 shell 使用。

~/.pinerc Pine 配置

~/.muttrc Mutt 配置

~/.exrc
這個(gè)文件可以控制 vi 的配置。
示例:set ai sm ruler
在此文件中寫入上面一行會(huì)讓 vi 設(shè)置自動(dòng)縮進(jìn)、匹配括號(hào)、顯示行號(hào)和行-列這幾個(gè)選項(xiàng)。

~/.vimrc
缺省的“Vim”配置文件。和 .exrc 一樣。

~/.gtkrc GNOME 工具包(GNOME Toolkit)。

~/.kderc KDE 配置。

~/.netrc
ftp 缺省登錄名和密碼。

~/.rhosts
由 r- 工具(如 rsh、rlogin 等等)使用。因?yàn)槊俺渲鳈C(jī)很容易,所以安全性非常低。
必須由用戶(~/ 的所有者)或超級(jí)用戶擁有。
列出一些主機(jī),用戶可以從這些主機(jī)訪問(wèn)該賬號(hào)。
如果是符號(hào)鏈接則被忽略。

~/.rpmrc
請(qǐng)參閱“man rpm”。如果 /etc/rpmrc 不存在則由 rpm 讀取。

~/.signature
消息文本,將自動(dòng)附加在從此賬號(hào)發(fā)出的郵件末尾。

~/.twmrc
twm(The Window Manager)的配置文件。

~/.xinitrc
啟動(dòng)時(shí)由 X 讀?。ǘ皇怯?xinit 腳本讀?。?。通常會(huì)啟動(dòng)一些程序。
示例:exec /usr/sbin/startkde
如果該文件中存在上面這行內(nèi)容,那么在從這個(gè)賬號(hào)發(fā)出 startx 命令時(shí),這一行就會(huì)啟動(dòng)“KDE 視窗管理器”(KDE Window Manager)。

~/.xmodmaprc
此文件被傳送到 xmodmap 程序,而且可以被命名為任何文件(例如 ~/.Xmodmap 和 ~/.keymap.km)。

~/.xserverrc
如果 xinit 可以找到要執(zhí)行的 X,xinit 就會(huì)將該文件作為 X 服務(wù)器運(yùn)行。

~/News/Sent-Message-IDs
gnus 的缺省郵件歷史文件。

~/.Xauthority
由 xdm 程序讀和寫,以處理權(quán)限。請(qǐng)參閱 X、xdm 和 xauth 聯(lián)機(jī)幫助頁(yè)。

~/.Xdefaults,~/.Xdefaults-hostname
在主機(jī) hostname 的啟動(dòng)過(guò)程中由 X 應(yīng)用程序讀取。如果找不到 -hostname 文件,則查找 .Xdefaults 文件。

~/.Xmodmap
指向 .xmodmaprc;Red Hat 有使用這個(gè)名稱的 .xinitrc 文件。

~/.Xresources
通常是傳送到 xrdb 以加載 X 資源數(shù)據(jù)庫(kù)的文件的名稱,旨在避免應(yīng)用程序需要讀取一個(gè)很長(zhǎng)的 .Xdefaults 文件這樣的情況。(有些情況曾經(jīng)使用了 ~/.Xres。)

~/mbox 用戶的舊郵件。

[目錄](méi)

--------------------------------------------------------------------------------

文件系統(tǒng)

linux文件系統(tǒng)是Linux系統(tǒng)的心臟部分,提供了層次結(jié)構(gòu)的目錄和文件。文件系統(tǒng)將磁盤空間劃分為每1024個(gè)字節(jié)一組,稱為塊(也有用512字節(jié)為一塊的,如:SCOXENIX)。編號(hào)從0到整個(gè)磁盤的最大塊數(shù)。
全部塊可劃分為四個(gè)部分,塊0稱為引導(dǎo)塊,文件系統(tǒng)不用該塊;塊1稱為專用塊,專用塊含有許多信息,其中有磁盤大小和全部塊的其他兩部分的大小。從塊2開(kāi) 始是i節(jié)點(diǎn)表,i節(jié)點(diǎn)表中含有i節(jié)點(diǎn),表的塊數(shù)是可變的,后面將做討論。i節(jié)點(diǎn)表之后是空閑存儲(chǔ)塊(數(shù)據(jù)存儲(chǔ)塊),可用于存放文件內(nèi)容。文件的邏輯結(jié)構(gòu)和 物理結(jié)構(gòu)是十分不同的,邏輯結(jié)構(gòu)是用戶敲入cat命令后所看到的文件,用戶可得到表示文件內(nèi)容的字符流。物理結(jié)構(gòu)是文件實(shí)際上如何存放在磁盤上的存儲(chǔ)格 式。用戶認(rèn)為自己的文件是邊疆的字符流,但實(shí)際上文件可能并不是以邊疆的方式存放在磁盤上的,長(zhǎng)于一塊的文件通常將分散地存放在盤上。然而當(dāng)用戶存取文件 時(shí),linux文件系統(tǒng)將以正確的順序取出各塊,給用戶提供文件的邏輯結(jié)構(gòu)。

當(dāng)然,在linux系統(tǒng)的某處一定會(huì)有一個(gè)表,告訴文件系統(tǒng)如何將物理結(jié)構(gòu)轉(zhuǎn)換為邏輯結(jié)構(gòu)。這就涉及到i節(jié)點(diǎn)了。i節(jié)點(diǎn)是一個(gè)64字節(jié)長(zhǎng)的表,含有有關(guān)一 個(gè)文件的信息,其中有文件大小、文件所有者、文件存取許可方式,以及文件為普通文件、目錄文件還是特別文件等。在i節(jié)點(diǎn)中最重要的一項(xiàng)是磁盤地址表。

該表中有13個(gè)塊號(hào)。前10個(gè)塊號(hào)是文件前10塊的存放地址。這10個(gè)塊號(hào)能給出一個(gè)至多10塊長(zhǎng)的文件的邏輯結(jié)構(gòu),文件將以塊號(hào)在磁盤地址表中出現(xiàn)的順 序依次取得相應(yīng)的塊。當(dāng)文件長(zhǎng)于10塊時(shí)又怎樣呢?磁盤地址表中的第11項(xiàng)給出一個(gè)塊號(hào),這個(gè)塊號(hào)指出的塊中含有256個(gè)塊號(hào),至此,這種方法滿足了至多 長(zhǎng)于266塊的文件(272384字節(jié))。如果文件大于266塊,磁盤地址表的第12項(xiàng)給出一個(gè)塊號(hào),這個(gè)塊號(hào)指出的塊中含有256個(gè)塊號(hào),這256個(gè)塊 號(hào)的每一個(gè)塊號(hào)又指出一塊,塊中含256個(gè)塊號(hào),這些塊號(hào)才用于取文件的內(nèi)容。磁盤地址中和第13項(xiàng)索引尋址方式與第12項(xiàng)類似,只是多一級(jí)間接索引。

這樣,在linux系統(tǒng)中,文件的最大長(zhǎng)度是16842762塊,即17246988288字節(jié),有幸是Linux系統(tǒng)對(duì)文件的最大長(zhǎng)度(一般為1到2M字節(jié))加了更實(shí)際的限制,使用戶不會(huì)無(wú)意中建立一個(gè)用完整個(gè)磁盤區(qū)所有塊的文件。

文件系統(tǒng)將文件名轉(zhuǎn)換為i節(jié)點(diǎn)的方法實(shí)際上相當(dāng)簡(jiǎn)單。一個(gè)目錄實(shí)際上是一個(gè)含有目錄表的文件:對(duì)于目錄中的每個(gè)文件,在目錄表中有一個(gè)入口項(xiàng),入口項(xiàng)中含 有文件名和與文件相應(yīng)的i節(jié)點(diǎn)號(hào)。當(dāng)用戶敲入catxxx時(shí),文件系統(tǒng)就在當(dāng)前目錄表中查找名為xxx的入口項(xiàng),得到與文件xxx相應(yīng)的i節(jié)點(diǎn)號(hào),然后開(kāi) 始取含有文件xxx的內(nèi)容的塊。

[目錄](méi)

--------------------------------------------------------------------------------

inode

一個(gè)inode有128 byte。在新建文件系統(tǒng)時(shí), 通常會(huì)有一個(gè)參數(shù), 用來(lái)描述要分配多少比例的空間給inode table。舉例來(lái)說(shuō)newfs -i 2048是指文件系統(tǒng)中, 每分配2048 byte給data area, 就分配一個(gè)inode。但一個(gè)inode并不一定用掉2048 byte, 也不是說(shuō) files allocation的最小單位是2048 byte, 它僅僅只是代表文件系統(tǒng)中inode table/data area分配空間的比例是 128/2048 也就是 1/16。如果 inode table 太小, 那么在每個(gè)文件都很小的時(shí)候, 就會(huì)發(fā)生inode用光而存儲(chǔ)空間多余的情況。file allocation的最小單位和inode多少?zèng)]有關(guān)系

[目錄](méi)

--------------------------------------------------------------------------------

安裝和拆卸文件系統(tǒng)

linux文件系統(tǒng)是可安裝的,這意味著每個(gè)文件系統(tǒng)可以連接到整個(gè)目錄樹(shù)的任意節(jié)點(diǎn)上(根目錄總是被安裝上的)。安裝文件系統(tǒng)的目錄稱為安裝點(diǎn)。
/etc/mount命令用于安裝文件系統(tǒng),用這條命令可將文件系統(tǒng)安裝在現(xiàn)有目錄結(jié)構(gòu)的任意處。

安裝文件系統(tǒng)時(shí),安裝點(diǎn)的文件和目錄都是不可存取的,因此未安裝文件系統(tǒng)時(shí),不要將文件存入安裝點(diǎn)目錄。文件系統(tǒng)安裝后,安裝點(diǎn)的存取許可方式和所有者將改變?yōu)樗惭b的文件根目錄的許可方式和所有者。

安裝文件系統(tǒng)時(shí)要小心:安裝點(diǎn)的屬性會(huì)改變!還要注意新建的文件,除非新文件系統(tǒng)是由標(biāo)準(zhǔn)文件建立的,系統(tǒng)標(biāo)準(zhǔn)文件會(huì)設(shè)置適當(dāng)?shù)拇嫒≡S可方式,否則新文件系統(tǒng)的存取許可將是777!

可用-r選項(xiàng)將文件系統(tǒng)安裝成只讀文件系統(tǒng)。需要寫保護(hù)的帶驅(qū)動(dòng)器和磁盤,應(yīng)當(dāng)以這種方式來(lái)安裝。

不帶任何參數(shù)的/etc/mount可獲得系統(tǒng)中所安裝的文件系統(tǒng)的有關(guān)信息。包括:文件系統(tǒng)被安裝的安裝點(diǎn)目錄,對(duì)應(yīng)/dev中的設(shè)備,只讀或可讀寫, 安裝時(shí)間和日期等。從安全的觀點(diǎn)來(lái)講,可安裝系統(tǒng)的危險(xiǎn)來(lái)自用戶可能請(qǐng)求系統(tǒng)管理員為其安裝用戶自己的文件系統(tǒng)。如果安裝了用戶的文件系統(tǒng),則應(yīng)在允許用 戶存取文件系統(tǒng)前,先掃描用戶的文件系統(tǒng),搜索SUID/SGID程序和設(shè)備文件。在除了系統(tǒng)管理員外任何人不能執(zhí)行的目錄中安裝文件系統(tǒng),用find命 令或secure列出可疑文件,刪除不屬用戶所有的文件的SUID/SGID許可。

用戶的文件系統(tǒng)用完后,可用umount命令卸下文件系統(tǒng)。并將安裝點(diǎn)目錄的所有者改回系統(tǒng)管理員,存取許可改為755。

[目錄](méi)

--------------------------------------------------------------------------------

恢復(fù)被刪除文件

前些天被我誤刪掉的 home directory 下的幾千個(gè)文件,經(jīng)過(guò)本人數(shù)天的連續(xù)奮戰(zhàn),現(xiàn)絕大部分已恢復(fù),算是奇跡也不是奇跡。
刪掉文件其實(shí)只是將指向數(shù)據(jù)塊的索引點(diǎn) (information nodes) 釋放,只要不被覆蓋,數(shù)據(jù)其實(shí)還在硬盤上,關(guān)鍵在于找出索引點(diǎn),然后將其所指數(shù)據(jù)塊內(nèi)的數(shù)據(jù)抓出,再保存到另外的分區(qū)。

我先在網(wǎng)上查有關(guān) linux undelete 的信息,找到一個(gè) ext2fs-undeletion 的mini-Howto,后發(fā)覺(jué)在RH6.2的 /usr/doc/HOWTO 內(nèi)也有,按它的方法,先將被刪掉數(shù)據(jù)的盤區(qū) umount 掉(防止寫盤覆蓋被刪除的數(shù)據(jù),顯然這一步在誤刪數(shù)據(jù)后做得越快越好,尤其是對(duì)多人使用的計(jì)算機(jī)),然后查文件系統(tǒng)中哪些索引點(diǎn)最近被釋放:

#debugfs /dev/hda6 (my 'home' partition)
debugfs: lsdel

即給出相應(yīng)信息,包括索引點(diǎn),文件屬主,大小,刪除日期等。也可將結(jié)果輸出到一個(gè)文件中

debugfs: quit
# echo lsdel | debugfs /dev/hda6 > lsdel.out

還可用 debugfs 中 stat 查看某一索引點(diǎn)的詳細(xì)信息:

debugfs: stat <148003>

尤其注意其數(shù)據(jù)塊是否連續(xù)!

然后將該索引點(diǎn)所指數(shù)據(jù)塊內(nèi)的數(shù)據(jù)抓出并存到另一盤區(qū):

debugfs: dump <148003> /dosd/tmp/recovered.001

按該 mini-Howto 的說(shuō)法,以上方法只使用于大小不超過(guò) 12 個(gè) block 的文件,對(duì)于超過(guò) 12 個(gè) block 的文件,由于 unix 是將數(shù)據(jù)分段保存的,需要將各段數(shù)據(jù)分別取出再拼接,所以比較麻煩。但我用 stat 檢查的結(jié)果,大文件的數(shù)據(jù)塊也都是緊挨著的,并沒(méi)有被分段, 于是我試著用同樣的方法將文件 dump 出來(lái),發(fā)覺(jué)結(jié)果完全正確,對(duì)六百多兆的大文件也適用!不知道 linux 就是連續(xù)保存文件的,還是因?yàn)槲业挠?jì)算機(jī)只有我一個(gè)用戶而使然,反正我用上述簡(jiǎn)單方法將我誤刪的絕大部分文件都恢復(fù)了。

需要說(shuō)明的一點(diǎn)是,恢復(fù)的文件是沒(méi)有保留文件名的,需要你查看文件內(nèi)容后,再重新命名。

靠人不如靠己,當(dāng)初沒(méi)有輕易放棄看來(lái)是正確的,盡管我有少量備份。不過(guò)經(jīng)過(guò)這場(chǎng)"災(zāi)難",本人的指法倒是又熟練了不少:幾千個(gè)文件得一個(gè)一個(gè)恢復(fù)!

[目錄](méi)

--------------------------------------------------------------------------------

undelete簡(jiǎn)單方法

發(fā)信人: DA (窮開(kāi)心), 信區(qū): LINUX
標(biāo) 題: linux環(huán)境下如何undelete
發(fā)信站: 武漢白云黃鶴站 (Sun Feb 4 16:35:32 2001), 轉(zhuǎn)信
在bashrc加入以下指令,但是先要在/目錄下創(chuàng)建一個(gè)名為.trash的子目錄

alias rm 'mv -f !* ~/.trash'
alias undel 'mv ~/.trash/!* ./!*'
alias cleantrash '/bin/rm -rf ~/.trash; mkdir ~/.trash; sync'
alias lrm 'ls ~/.trash'

若文檔是直接用rm命令刪除的,理論上 ext2 內(nèi) rm 掉的檔案還是可以用debugfs , ext2ed 救回來(lái)的.當(dāng)然... 被 overwrite 掉就沒(méi)救了.

[目錄](méi)

--------------------------------------------------------------------------------

ncheck命令

用于檢查文件系統(tǒng),只用一個(gè)磁盤分區(qū)名作為參數(shù),將列出i節(jié)點(diǎn)號(hào)及相應(yīng)的文件名。i節(jié)點(diǎn)相同的文件為建鏈文件。注意所列出的清單文件名與mount命令的 第一個(gè)域相同的文件名前部分將不會(huì)列出來(lái)。因?yàn)槭亲鑫募到y(tǒng)內(nèi)部的檢查,ncheck并不知道文件系統(tǒng)安裝點(diǎn)以上部分的目錄。
也可用此命令來(lái)搜索文件系統(tǒng)中所有的SUID和SGID程序和設(shè)備文件,使用-s選項(xiàng)來(lái)完成此項(xiàng)功能。


[目錄](méi)

--------------------------------------------------------------------------------

UUCP的安全問(wèn)題

UUCP系統(tǒng)未設(shè)置限制,允許任何本系統(tǒng)外的用戶執(zhí)行任何命令和拷貝進(jìn)/出uucp用戶可讀/寫的任何文件。在具體的uucp應(yīng)用環(huán)境中應(yīng)了解這點(diǎn),根據(jù) 需要設(shè)置保護(hù)。在UUCP中,有兩個(gè)程序處理安全問(wèn)題。第一個(gè)是uucico程序,該程序在其他系統(tǒng)調(diào)用本系統(tǒng)時(shí)啟動(dòng)。這個(gè)程序是本系統(tǒng)uucp安全的關(guān) 鍵,完成本系統(tǒng)文件傳輸?shù)膫鬟M(jìn)和傳出。第二個(gè)程序是uuxqt,該程序?yàn)樗械倪h(yuǎn)程命令執(zhí)行服務(wù)。

[目錄](méi)

--------------------------------------------------------------------------------

USERFILE文件

uucico用文件/usr/lib/uucp/USERFILE確定遠(yuǎn)程系統(tǒng)發(fā)送或接收什么文件,其格式為:
login,sys[c]path_name[path_name.]
其中l(wèi)ogin是本系統(tǒng)的登錄名,sys是遠(yuǎn)程系統(tǒng)名,c是可選的call_back標(biāo)志,path_name是目錄名。
uucico作為登錄外殼啟動(dòng)時(shí),將得到遠(yuǎn)程系統(tǒng)名和所在系統(tǒng)的登錄名,并在USERFILE文件中找到匹配login和sys的行。如果該行含有 call_back標(biāo)志c,uucico將不傳送文件,連接斷開(kāi),調(diào)用遠(yuǎn)程系統(tǒng)(即,任何系統(tǒng)可以告訴本系統(tǒng)它的名是xyz,于是本系統(tǒng)掛起,調(diào)用實(shí)際的 xyz執(zhí)行文件傳輸),若無(wú)c,uucico將執(zhí)行遠(yuǎn)程系統(tǒng)請(qǐng)求的文件傳送,被傳送的文件名被假定為以path_name開(kāi)頭的。

用戶需要了解以下幾點(diǎn):
·如果遠(yuǎn)程系統(tǒng)使用的登錄名未列于USERFILE的登錄域中,uucico將拒絕允許其他系統(tǒng)做任何事,并掛起。
·如果系統(tǒng)名未列于sys域中,uucico將使用USERFILE中有匹配的登錄名和空系統(tǒng)名的第一行,如:nuucp,/usr/spool /uucppublic應(yīng)用到作為nuucp登錄的所有系統(tǒng)。cbuucp,c將迫使作為cbuucp登錄的所有系統(tǒng)自己執(zhí)行文件傳輸?shù)恼?qǐng)求。若調(diào)用系統(tǒng) 名不匹配sys系統(tǒng)中的任何一個(gè),并且無(wú)空入口項(xiàng),uucico也將拒絕做任何事。
·若兩個(gè)機(jī)器都設(shè)置了call_back標(biāo)志,傳送文件的請(qǐng)求決不會(huì)被執(zhí)行,兩個(gè)系統(tǒng)會(huì)一直互相調(diào)用,直到兩個(gè)系統(tǒng)中的一個(gè)取消call_back時(shí),才能進(jìn)行文件傳送。
·如果一個(gè)用戶的登錄名列于USERFILE文件的login域中,則當(dāng)調(diào)用本系統(tǒng)的uucico為該用戶傳送文件時(shí),uucico只傳送至 path_name指定的目錄中的文件??盏卿浢糜谒形疵鞔_列于USERFILE文件中的用戶進(jìn)行登錄。所以pat,/usr/pat只允許pat傳 送/usr/pat目錄結(jié)構(gòu)中的文件。/usr/spool/uucppublic/tmp其他用戶僅允許傳送目錄/usr/spool /uucppublic和/tmp中的文件。不要允許uucico將文件拷進(jìn)/出到除了/usr/spool/uucppublic目錄以外的其他任何目 錄,否則可能會(huì)有人用下面的命令拷貝走本系統(tǒng)的重要信息:
uucpyoursys!/etc/passwdto-creep

[目錄](méi)

--------------------------------------------------------------------------------

L.cmds文件

uuxqt利用/usr/lib/uucp/L.cmds文件確定要執(zhí)行的遠(yuǎn)程執(zhí)行請(qǐng)求命令。該文件的格式是每行一條命令。如果只需uuxqt處理電子郵件,該文件中就只須一行命令:
rmail
系統(tǒng)管理員可允許登錄用戶執(zhí)行netnews(rnews)的命令或遠(yuǎn)程打印命令(lp),但決不允許用戶執(zhí)行拷貝文件到標(biāo)準(zhǔn)輸出的命令,如cat命令或網(wǎng)絡(luò)命令uucp,否則這些人只需在他們自己的系統(tǒng)上敲入:
uux"yoursys!uucpyoursys!/etc/passwd(outside!~/passwd)"
然后就可等待本系統(tǒng)發(fā)送出命令文件。

[目錄](méi)

--------------------------------------------------------------------------------

uucp登錄

UUCP系統(tǒng)需要兩個(gè)登錄帳戶,一個(gè)是其他系統(tǒng)登錄的帳戶,另一個(gè)是系統(tǒng)管理使用的帳戶。例如,數(shù)據(jù)傳輸?shù)卿泿羰莕uucp,管理登錄帳戶是uucp,則在/etc/passwd文件中應(yīng)當(dāng)有兩行。
UID和GID的5號(hào)通常留給uucp,由于uucico具有管理登錄的SUID許可,因此nuucp帳戶的UID和GID應(yīng)當(dāng)用其他值。

[目錄](méi)

--------------------------------------------------------------------------------

uucp使用的文件和目錄

/usr/lib/uucp用于存放不能由用戶直接運(yùn)行的各種uucp,如uuxqt和uucico。該目錄還含有若干個(gè)確定uucp如何操作的文件,如 L.cmds和USERFILE。這些文件只能對(duì)uucp管理帳戶可寫(系統(tǒng)管理員一定不愿讓用戶更改遠(yuǎn)程可執(zhí)行命令表)。根據(jù)安全的觀點(diǎn),該目錄中另一 個(gè)系統(tǒng)管理員必須清楚的文件是L.sys。該文件中含有uucico能調(diào)用的每個(gè)系統(tǒng)的入口項(xiàng)。入口項(xiàng)數(shù)據(jù)包括uucico所調(diào)用系統(tǒng)的電話號(hào)碼、登錄 名、未加密的口令。不用說(shuō),L.sys應(yīng)當(dāng)屬于uucp管理帳戶所有,且應(yīng)當(dāng)具有400或600存取許可。
uucp用/usr/spool/uucp目錄存放工作文件。文件名以C.開(kāi)頭的文件是送到其他系統(tǒng)的命令文件,含有在其他系統(tǒng)上拷入(/出)數(shù)據(jù)和執(zhí)行 命令的請(qǐng)求。文件名以D.開(kāi)頭的文件用作C.文件的數(shù)據(jù)文件。文件名以X.開(kāi)頭的文件是來(lái)自其他系統(tǒng)的遠(yuǎn)程執(zhí)行請(qǐng)求,由uuxqt解釋。文件名以TM.開(kāi) 始的文件是從其他系統(tǒng)傳送數(shù)據(jù)到本系統(tǒng)過(guò)程中uucp所使用的暫存文件。

XQTDIR是uuxqt用于執(zhí)行X.文件的目錄。LOGFILE可有助于管理uucp的安全,它含有執(zhí)行uucp請(qǐng)求成功與否的信息。系統(tǒng)管理員可時(shí)常查看該文件,了解有哪些系統(tǒng)正登錄本系統(tǒng)執(zhí)行uucp請(qǐng)求,是什么請(qǐng)求,特別要檢查這些請(qǐng)求是否試圖做不允許的操作。

[目錄](méi)

--------------------------------------------------------------------------------

/etc/group

/etc/group文件含有關(guān)于小組的信息,/etc/passwd中的每個(gè)GID在本文件中應(yīng)當(dāng)有相應(yīng)的入口項(xiàng),入口項(xiàng)中列出了小組名和小組中的用戶。這樣可方便地了解每個(gè)小組的用戶,否則必須根據(jù)GID在/etc/passwd文件中從頭至尾地尋找同組用戶。
/etc/group文件對(duì)小組的許可權(quán)限的控制并不是必要的,因?yàn)橄到y(tǒng)用UID和GID(取自/etc/passwd)決定文件存取權(quán)限,即使/etc/group文件不存在于系統(tǒng)中,具有相同的GID用戶也可以小組的存取許可權(quán)限共享文件。
小組就像登錄用戶一樣可以有口令。如果/etc/group文件入口項(xiàng)的第二個(gè)域?yàn)榉强?,則將被認(rèn)為是加密口令,newgrp命令將要求用戶給出口令,然 后將口令加密,再與該域的加密口令比較。給小組建立口令一般不是個(gè)好方法。第一,如果小組內(nèi)共享文件,而某人猜中小組口令,則該組的所有用戶的文件就可能 泄密:其次,管理小組口令很費(fèi)事,因?yàn)閷?duì)于小組沒(méi)有類似的passwd命令??捎?usr/lib/makekey生成一個(gè)口令寫入/etc /group。

以下情況必須建立新組:
·可能要增加新用戶,該用戶不屬于任何一個(gè)現(xiàn)有的小組。
·有的用戶可能時(shí)常需要獨(dú)自為一個(gè)小組。
·有的用戶可能有一個(gè)SGID程序,需要獨(dú)自為一個(gè)小組。
·有時(shí)可能要安裝運(yùn)行SGID的軟件系統(tǒng),該軟件系統(tǒng)需要建立一個(gè)新組。

要增加一個(gè)新組,必須編輯該文件,為新組加一個(gè)入口項(xiàng)。由于用戶登錄時(shí),系統(tǒng)從/etc/passwd文件中取GID,而不是從/etc/group中取 GID,所以group文件和口令文件應(yīng)當(dāng)具有一致性。對(duì)于一個(gè)用戶的小組,UID和GID應(yīng)當(dāng)是相同的。多用戶小組的GID應(yīng)當(dāng)不同于任何用戶的 UID,一般為5位數(shù),這樣在查看/etc/passwd文件時(shí),就可根據(jù)5位數(shù)據(jù)的GID識(shí)別多用戶小組,這將減少增加新組和新用戶時(shí)可能產(chǎn)生的混淆。


全文結(jié)束

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多