Unix shell,通常被稱作“命令行”,為Unix和類Unix操作系統(tǒng)提供了傳統(tǒng)的用戶界面。用戶通過輸入shell所執(zhí)行的命令,引導(dǎo)計(jì)算機(jī)的操作。在微軟Windows操作系統(tǒng)平臺,類似程序是command.com,或者基于Windows NT內(nèi)核操作系統(tǒng)的cmd.exe。
shell術(shù)語最普通的解釋就是:用戶用來輸入命令的任何程序。自從在Unix操作系統(tǒng)中用戶能夠選擇所使用的shell(登錄時(shí)應(yīng)當(dāng)執(zhí)行哪種程序)以來,許多shell已經(jīng)被開發(fā)出來。之所以被稱為“shell”,是因?yàn)樗[藏了shell界面下面的操作系統(tǒng)的細(xì)節(jié)(這與最底層的“kernel”相反)。類似地,Unix圖形化用戶界面,注入GNOME、KDE和Xfce等,偶爾被稱作“可視shell”或“圖形shell”。shell術(shù)語通常與命令行相關(guān)聯(lián)。在Unix中,任何程序都可能是用戶的shell。希望使用不同語法輸入命令的用戶,可以指定一個(gè)不同的程序作為他們的shell。
術(shù)語shell也與一個(gè)特殊的程序相關(guān),比如Bourne shell,sh。Bourne shell是早期版本Unix所使用的shell,并成為一個(gè)事實(shí)上的標(biāo)準(zhǔn);任何類Unix系統(tǒng)至少擁有一個(gè)與Bourne shell相兼容的shell。Bourne shell程序位于Unix系統(tǒng)的“/bin/sh”。在某些系統(tǒng)中,比如BSD,“/bin/sh”是一個(gè)或等同于Bourne shell,但在Linux等其他系統(tǒng)上,“/bin/sh”更多的是一個(gè)兼容的、更加富功能性的shell鏈接。POSIX將其標(biāo)準(zhǔn)shell制定為Korn shell的一個(gè)嚴(yán)格子集。
UNIX中常用的shell命令
用戶一旦注冊到UNIX中,系統(tǒng)將為該用戶創(chuàng)建一個(gè)用戶進(jìn)程作為該用戶所創(chuàng)建的所有進(jìn)程的根進(jìn)程,
它為用戶所鍵入的每條shell命令創(chuàng)建相應(yīng)的進(jìn)程以執(zhí)行這條命令。UNIX的shell命令已經(jīng)遠(yuǎn)遠(yuǎn)不只是解釋
命令,它具有許多一般操作系統(tǒng)(如DOS、WINDOWS)的人機(jī)命令所沒有的特殊功能。例如:后臺處理、輸入輸出重定義、管道線等。實(shí)際上,由于UNIX的shell命令具有控制結(jié)構(gòu)(if-then、for、while、case等結(jié)構(gòu)),它可稱得上新一代的編程語言。其強(qiáng)大功能、簡潔結(jié)構(gòu)使shell命令成為了UNIX中常用的人機(jī)接口。直接鍵入MAN命令,可以看到命令列表(包括命令、其參數(shù))。通過MAN[cmd]可以看到UNIX的常用命令。
☆ 文件和目錄管理命令:ls、mkdir、rmdir、pwd、cd、rm、cp、mv、chown、chmod等。
Ls------請求列出一個(gè)目錄中的文件名。
◆ 若命令行中無參數(shù),列出當(dāng)前目錄下的文件名。
◆ 若在命令參數(shù)中指定了目錄,則列出指定目錄下的文件名。
例: ls -l //顯示當(dāng)前目錄下的文件名、屬主、保護(hù)模式、文件大小、建立的日期和時(shí)間。
mkdir---請求系統(tǒng)建立一個(gè)新目錄,在輸入命令的同時(shí)要給出建立的目錄名。
◆ 若目錄名以“/”開始,它是從根目錄到新目錄的路徑名。
◆ 若目錄名不以斜杠開始,則mkdir建立的目錄是當(dāng)前目錄的子目錄。
例: mkdir accounts //在當(dāng)前目錄中建立新目錄 accountsrmdir---刪除一個(gè)空目錄,在命令行中應(yīng)給出欲刪除的目錄名。
例: rmdir elvis //刪除空目錄elvis
注:在刪除一個(gè)非空目錄前,應(yīng)先刪除它所包含的文件和子目錄。
pwd-----顯示用戶的當(dāng)前目錄。
cd------更改當(dāng)前目錄,在命令參數(shù)中指定目錄名。當(dāng)執(zhí)行cd命令之后,用
戶的當(dāng)前目錄就是命
令參數(shù)中指定的目錄。
rm-----用于刪除文件的命令。Rm的命令解釋程序是通過系統(tǒng)調(diào)用unlink來刪指定文件的,因而實(shí)際上只是刪除了文件的一個(gè)名字。若該文件有其他鏈接,則文件繼續(xù)存在。
例:rm -f myfile.doc //強(qiáng)制刪除文件myfile.doc(即使是寫保護(hù)的)
cp------拷貝文件,使用該命令時(shí)要指定兩個(gè)文件名。
例: cp lonestar texas //將文件lonestar的內(nèi)容拷貝到texas文件
中。如果texas不存在,則生成;如果texas已存在,則原先的內(nèi)容被覆蓋并且丟失。
mv-----用于更名或移動文件的命令。
例: mv file1 file2 //將文件file1的內(nèi)容移動到文件file2中。
chown---改變文件所有權(quán)的命令。
例: chown brenda myfile/cha
pterl.doc
//將文件myfile/chapterl.doc的所有者變成brenda
chmod-改變文件的訪問權(quán)限。
例:chmod =r myfile.doc //將文件myfile.doc的權(quán)限置為只讀權(quán)限。
☆ 文件操作命令:cat、nl、more、find等。
cat-----顯示指定的文本文件,用于查看文件內(nèi)容。
nl------給一個(gè)文本文件加行號的命令。
例: nl -bt first_draft|more //將文件first_draft中的所有行編號,
并將結(jié)果顯示在
終端上,一次一屏地顯示。
more---可一屏一屏的顯示指定的文件。每顯示一屏后就暫停,直到用戶按了空格鍵后再
顯示下一屏,
用Q鍵可停止more命令的顯示。
find----在UNIX目錄樹上查找符合某種指定標(biāo)準(zhǔn)的文件的命令。
例: find 。-print //從當(dāng)前目錄開始向所有子目錄搜索,列出所有文件
名和目錄。
☆ 口令管理命令:passwd。
☆ 查詢當(dāng)前登錄在系統(tǒng)中的用戶信息:who。
☆ 查詢當(dāng)前登錄在系統(tǒng)中的用戶行為:w。
☆ 與其他用戶實(shí)時(shí)通信:mesg、write、wall(鍵入Ctrl-D結(jié)束輸入消息)。
mesg----用于控制終端上發(fā)布信息的命令。
write----打開與另一個(gè)用戶的交互式通信會話的命令。
wall-----一個(gè)向所有登錄的用戶廣播消息的命令。
注:有些命令可能用MAN命令無法查閱。那就用該命令帶上參數(shù)help,即 $command--he
lp。
3. 輸入/輸出重定義命令。
UNIX系統(tǒng)設(shè)置了三個(gè)有關(guān)輸入和輸出的標(biāo)準(zhǔn)文件,它們是標(biāo)準(zhǔn)輸入(stdin)、標(biāo)準(zhǔn)輸出
(stdout)、
標(biāo)準(zhǔn)錯誤輸出(stderr)。在缺省情況下,標(biāo)準(zhǔn)輸入(stdin)是鍵盤,標(biāo)準(zhǔn)輸出(std
out)是顯示器,
標(biāo)準(zhǔn)錯誤輸出(stderr)也是顯示器。但可以通過小于符號(《)改變輸入,大于符號(
》)改變輸出,
符號(2》)改變錯誤輸出。另外,符號(》》)也改變輸出。但它與符號(》)含義上有所
區(qū)別。前者是將
命令或程序的執(zhí)行結(jié)果寫到其后的文件原內(nèi)容后面存放,而不更新該文件。如果其后指
定文件不存在,就
將建立新文件,并把命令的執(zhí)行結(jié)果寫入其中。后者是將命令或程序的執(zhí)行結(jié)果寫到其
后的文件中,而不
管該文件是否存在。如果該文件已存在并有內(nèi)容存在,則命令的執(zhí)行結(jié)果將更新該文件
的內(nèi)容,原內(nèi)容則
不存在。因此在使用該符號時(shí),一定要注意該文件是否已存在,其內(nèi)容是否還需要保存
。
其次格式為:
$command《inputfile 》》outputfile 2》errorfile
$command《inputfile 》outputfile 2》errorfile
4. 管道“|”。
UNIX系統(tǒng)提供了一種把一條命令的標(biāo)準(zhǔn)輸出作為另一條命令的標(biāo)準(zhǔn)輸入的方法。這種方
法形象的稱為管道
,用“|”符號表示。這是UNIX的一大特點(diǎn)。它可以簡化命令串,而無須建立臨時(shí)文
件。以
此方法建立的多
個(gè)命令的行就稱之為管道線。其格式為:$command1|command2|command3…
例:當(dāng)命令的執(zhí)行結(jié)果過長影響觀看,常用的命令是$command|more,這樣命令command的
執(zhí)行結(jié)果會
分頁顯示。
5. 后臺命令“&”。
若不需要立刻知道所鍵入命令的執(zhí)行結(jié)果,就可以使用后臺命令,這樣在該命令執(zhí)行的
同時(shí)可以在前臺
執(zhí)行其他命令。在鍵入后臺命令后,系統(tǒng)返回其進(jìn)程的進(jìn)程號。如果想終止該后臺進(jìn)程
,可以用“kill進(jìn)
程號”的命令來實(shí)現(xiàn)。
其格式:$command &。
例:
$command &
[1] 44295 //該命令的進(jìn)程號
$
$kill -9 44295
44295+Terminated
$
6. 重復(fù)執(zhí)行上一條命令的命令“!!”。該命令可以使上一條命令得以再次執(zhí)行。
其格式:$!!
例:$ps
322 1 S 0:00 /bin/login-- --lchen
323 1 S 0:00 -bash
10260 1 R 0:00 ps
$!!
ps
PID TTY STAT TIME COMMAND
322 1 S 0:00 /bin/login-- --lchen
323 1 S 0:00 -bash
10267 1 R 0:00 ps
$
?
評論
查看更多