• linux系统命令行基本组成元素


    一、shell prompt(PS1) 命令行提示符

    1. 游标(coursor)

    当你成功登录进一个文字界面之后,大部份情形下,你会在荧幕上看到一个不断闪烁的方块或底线(视不同版本而别),我们称之为"游标"(coursor)。

    游标的作用就是告诉你接下来你从键盘输入的按键所插入的位置,且每输入一键游标便向右边移动一个格子,若连续输入太多的话,则自动接在下一行输入。假如你刚完成登录还没输入任何按键之前,你所看到的游标所在位置的同一行的左边部份,我们称之为"提示符号"(prompt)。一般来说,就最接近游标的一个可见的提示符号来分析,通常是如下两者之一:

    $:给一般使用者账号使用

    #:给  root (管理员)账号使用

    2. shell prompt的意义

    shell prompt 的意思很简单是shell告诉使用者:您现在可以输入命令行了。

    二、CR(Carriage Return,由Enter键产生),回车字符

    CR 的意思也很简单:是使用者告诉shell:可以执行命令行了。

    三、IFS(Internal Field Seperator)内部字段分隔符

    把单个数据流划分成不同的数据元素的定界符,内部字段分隔符就是用于特定用途的定界符。可以由一个及多个如下按键组成:

    • 空格键(White Space)
    • 表格键(Tab)
    • 回车键(Enter)

    四、命令行

    (1) 在shell prompt与CR字符之间所输入的文字。

    (2) 一般情况下,一个标准的命令行格式为如下所列:

        Command-name  Options  Argument

    (3) shell会依据IFS将命令行所输入的文字给拆解为"字段"(word)。 然后再针对元字符(meta)先作处理,最后再重组整行命令行。

    系统可接受的命令名称(command-name)可以从如下途径获得:
    * 明确路径所指定的外部命令
    * 命令别名(alias)
    * 自定功能(function)
    * shell 内建命令(built-in)
    * $PATH 之下的外部命令

    (4) 简单而言,命令行的每一个字符分为如下两种:

    • literal:也就是普通纯文字,对 shell 来说没特殊功能。
    • meta:对 shell 来说,具有特定功能的特殊保留字符。

    literal 没甚么好谈的,凡举 abcd、123456 这些"文字"都是 literal

    meta包括 :

    • IFS:由space或tab或enter三者之一组成(我们常用 space )。     
    • CR:由enter产生。


    IFS是用来拆解命令行的每一个词(word)用的,因为命令行是按词来处理的。而CR则是用来结束命令行用的。除了 IFS 与 CR ,常用的 meta 还有:

    • = : 设定变量。
    • $ : 作变量或运算替换(请不要与 shell prompt 搞混了)。     
    • > :重导向 stdout。     
    • < :重导向 stdin。     
    • |:命令管线。     
    • & :重导向 file descriptor ,或将命令置于后台执行。     
    • ( ):将其内的命令置于 nested subshell 执行,或用于运算或命令替换。     
    • { }:将其内的命令置于 non-named function 中执行,或用在变量替换的界定范围。     
    • ; :在前一个命令结束时,而忽略其返回值,继续执行下一个命令。     
    • && :在前一个命令结束时,若返回值为 true,继续执行下一个命令。     
    • || :在前一个命令结束时,若返回值为 false,继续执行下一个命令。     
    • !:执行 history 列表中的命令

    五、参考

    1. 《shell十三问》 

    (完)

    本文版权归作者(https://www.cnblogs.com/harrymore/)和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,如有问题, 可邮件(harrymore@126.com)咨询.
  • 相关阅读:
    Linux下c开发 之 线程通信(转)
    mount -t nfs 的使用
    window共享linux下的文件 samba
    C/C++ 的使用
    php获取格式时间和时间戳
    php压缩文件夹
    php递归删除文件夹
    php生成文件夹(递归生成)
    QQ音乐API分析记录
    $(this)与this的区别
  • 原文地址:https://www.cnblogs.com/harrymore/p/5121408.html
Copyright © 2020-2023  润新知