• 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)咨询.
  • 相关阅读:
    结队项目----第一次作业
    小学四则运算(2.0版本)
    小学算法(四则运算)
    (读书笔记)基于CMMI的软件工程及实训指导------第一章软件工程基础
    数学建模------线性规划
    初出茅庐-----微信好友分析与微信机器人
    初出茅庐----数据库的学习应用
    初出茅庐---程序测试与爬虫
    初出茅庐----体育竞技分析
    Unity使用小剧场—创建的按钮On Click()只有MonoScript怎么办
  • 原文地址:https://www.cnblogs.com/harrymore/p/5121408.html
Copyright © 2020-2023  润新知