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
$
评论
查看更多