• Unix/Linux下的Shell命令解释程序


    Unix的Shell是作为操作系统的最外层,也称外壳。它有以下几种身份:

    作为命令语言:为用户提供使用操作系统的接口,用户利用该接口与机器交互;

    作为程序设计语言:用户可以利用多条Shell命令构成一个文件,称为Shell文件或Shell过程;

    作为Shell命令解释程序:用于对从标准输入或文件中读入的命令进行解释执行。

    本章主要介绍Shell命令语言。

    一 简单命令

    简单命令是一个能完成某种功能的目标程序的名字,按功能将命令分为如下五大类:

    (1)进入与退出系统

    进入系统也成为注册,用户须与系统管理员商定一个唯一的用户名,管理员用该名字在系统文件树上,为用户建立一个子目录树的根节点。打开终端后,屏幕上会出现Login:提示,键入后系统会询问用户口令,通过检查后,用户便能进入系统。

    当用户用完系统后,应向系统报告自己不再往系统装入任何处理要求,系统得知后,便马上为用户记账,清除用户的使用环境。在多用户情况下,通过Ctrl-D可以重新供另一用户登入。

    用户的进入与退出个过程,是由系统直接调用Login及Logout程序完成的。

    (2)文件操作命令

    a. 显示文件内容命令cat

    $cat filename1 filename2 ...

    b. 复制文件副本命令cp

    $cp source target

    c. 修改文件名命令mv

    $mv oldname newname

    d. 撤销文件命令rm

    $rm filename1 filename2 ...

    e. 确定文件类型命令file

    $file filename1 filename2 ...

    (3)目录操作命令

    a. 建立目录mkdir

    $ mkdir dirname1 dirname2 ...

    b. 撤销目录rmdir

    $ rmdir dirname1 dirname2 ...

    c. 改变工作目录cd

    d. 改变对文件的存取方式chmod

    格式:chmod user op-code permission filename

    其中,user用于指明访问者的身份,可以是用户自己、用户组、所有其他用户及全部,分别用u、g、o和a表示;op-code是操作码,分别用+、-及=表示增加、消除及赋予访问者某种权利;permission则是分别用r、w及x表示读、写及执行许可,如命令:

    chmod go-w temp

    表示消除用户组和其他所有用户对文件temp的写许可。

    (4)系统询问命令

    a. 访问当前日期和时间命令date,若在命令后给出参数,则date程序把参数作为重置系统时钟的时间;

    b. 询问系统当前用户的命令who,它将列出当前每一个处在系统中的用户的注册名、终端名和注册进入时间,并按终端标志的字母顺序排序,

    用户可用who命令了解系统的当前负荷,以及核实登陆用户的注册名、终端名信息等;

    c. 显示当前目录路径名的命令pwd

    二 重定向与管道命令

    (1)重定向命令

    在Unix系统中,系统定义了三个文件,其中有两个分别称为标准输入和标准输出文件,各对应于终端键盘输入和终端屏幕输出。它们是在用户注册时,由Login程序打开。这样,用户程序执行时,隐含的标准输入是键盘输入,标准输出是屏幕显示。如果用户想要改变输入或输出文件,即标准输入与标准输出的重定向,可用重定向符“<”和“>”实现输入和输出转向。如:

    $ cat file1 > file2 表示把文件file1的内容打印输出到文件file2上

    $ wc < file3 表示对file3中读出的行中的字和字符进行计数

    此外,cat file4>>file2表示将file4的内容附加到现有文件file2的末尾,它与cat file1 file4>>file2的效果是一样的。

    在一个命令行中,可以同时改变输入与输出,如:

    a.out<file1>file0 表示在可执行文件a.out执行时,将从文件file1中提取数据,同时把a.out的执行结果数据输出到文件file0中。

    (2)管道命令

    用符号"|"来连接两条命令,使前一条命令的输出作为后一条命令的输入,如

    cat file | wc 使cat命令把file中的数据作为wc命令的输入。

    其机制是系统将为管道建立一个作为通信通道的pipe文件,这时cat命令的输出既不出现在终端上,也不存在某中间文件中,而是由Unix系统来缓冲第一条命令的输出,并作为第二条命令的输入。这种用管道线所连接的命令之间是单向、同步运行的。

    三  通信命令

    Unix系统为用户提供了实时和非实时两种通信方式,分别用write及mail命令。联机用户也可以根据自己的当前情况,决定是否接受其他用户与其进行通信的要求。

    (1)邮箱通信命令mail

    mail采用信箱通信方式,是Unix各用户进行非交互式通信的工具。发信者把要发送的消息写成信件,“邮寄”到对方的信箱中。用mail进行通信时,不要求接收者利用终端与发送者会话。即,在发信者发送信息时,虽然接收者在系统中注册过,但允许他此时没有系统;或者虽在使用系统,但拒绝接收任何信息。mail命令在用于发信时,把接收者的注册名当做参数打入后,便可在新行开始键入信件正文,最后仍在一个新行上用"."来结束信件或用"^D"退出mail程序。

    接收者也用mail命令读取信件,命令格式:

    mail [-r][-q][-p][-file][-F persons]

    其中选项r、q、p、file分别表示:按先进先出顺序显示各信件的内容;再输入终端字符后,退出mail程序但不改变信箱的内容;一次性显示信箱全部内容而不带询问;把指定文件当作信件来显示。

    (2)对话通信命令write

    write命令使得用户与当前在系统中的其他用户直接进行联机通信。命令格式:

    write user[ttyname]

    当接收者只有一个终端时,终端名可以缺省。当接收者的终端被允许接收消息时,屏幕提示会通知接收者源用户名及其所用终端名。

    (3)允许或拒绝接收消息命令mesg

    mesg命令格式:

    mesg[-n][-y]

    选项n表示拒绝接收消息,选项y表示恢复对方的写许可,即允许接收消息。不带自变量的mesg命令只报告当前状态而不改变它。

    四 后台命令

    在命令后加上“&”号,是告诉Shell将该命令放在后台执行,以便用户在前台继续键入其他命令。此时,标准输入文件会自动地从终端定向到一个被称为"/dev/null"的空文件中。若shell未重定向标准输入,那么shell和后台进程都会同时从终端进行读入,此时用户键入终端的字符就不能确定被送到哪一个进程中,因而必须为后台运行的命令重定向标准输入,以使键入的字符都被送到shell进程。

  • 相关阅读:
    MSSQl分布式查询
    欲善其事,必利其器 Librame Utility R1 实用工具包(.NET Framework 3.5)
    可复用的WPF或者Silverlight应用程序和组件设计(3)——控件级别
    Asp.Net 网站优化 数据库优化措施 使用主从库
    .NET独有的精巧泛型设计模式
    Javascript 使用 "大杂烩"
    淘宝下单高并发解决方案
    时间戳(timestamp)
    MSSQL锁机制
    maven开发过程实践
  • 原文地址:https://www.cnblogs.com/sophia-yun/p/3245916.html
Copyright © 2020-2023  润新知