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