一、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十三问》

(完)

linux系统命令行基本组成元素的更多相关文章

  1. Linux 系统命令总结

    自己收集到的Linux系统命令大全! 1,查看apache2的连接状态: netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S ...

  2. 部分linux系统命令(shell 命令)和hadoop命令

    linux系统命令(shell 命令): ls :  只列出文件/目录 ls -l :  会显示文件的详情,如大小等 ls -lh :  会显示文件的详情,但大小以k或者M为单位 ls ../ :  ...

  3. 第一部分 linux系统命令

    一.linux系统命令 pwd 当前目录位置 / 根目录 cd (change direcory) cd ..返回上一层目录 ls 显示当前目录下文件 ls -l 显示目录下详细文件信息 ls -lh ...

  4. Python执行Linux系统命令方法

    Python执行Linux系统命令的4种方法 (1) os.system 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 复制代码代码如下: system(command) -> ...

  5. PHP面试题及答案解析(7)—Linux系统命令

    1.请解释下列10个shell命令的用途.top.ps.mv.find.df.cat.chmod.chgrp.grep.wc top:该命令提供了实时对系统处理器状态的监控,它能够实时显示系统中各个进 ...

  6. PHP执行linux系统命令

    本文是第一篇,讲述如何在PHP中执行系统命令从而实现一些特殊的目的,比如监控服务器负载,重启MySQL.更新SVN.重启Apache等.第二篇<PHP监控linux服务器负载>:http: ...

  7. Linux系统命令基础

    Linux系统命令基础 前面咱们已经成功安装了Linux系统--centos7,那么现在奔向Linux命令行的世界. Linux命令格式 1.一般情况下,[参数]是可选的,一些情况下[文件或路径]也是 ...

  8. Linux系统命令与脚本开发

    系统命令 # cat EFO cat >> file << EOF neirong EOF # 清空 >file 清空文件 [root@Poppy conf]# sed ...

  9. linux系统命令笔记

    一.linux系统目录 /bin 系统命令目录 /dev 设备目录 /home 每个系统用户在home下都有一个目录, 每个用户登录到系统后会自动登录到这个目录下, root用户会在/root文件夹下 ...

随机推荐

  1. linux通过wget直接下载jdk,避免用户验证

    下载地址 :http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 下载语句: wget ...

  2. OpenCL入门

    初入OpenCL,做个记录. 在Windows下开发OpenCL程序,必须先下载OpenCL的SDK,现在AMD,NVIDIA,Intel均提供各自的OpenCL库,基本是大同小异.安装好SDK后新建 ...

  3. JVM内存管理之GC算法精解(五分钟教你终极算法---分代搜集算法)

    引言 何为终极算法? 其实就是现在的JVM采用的算法,并非真正的终极.说不定若干年以后,还会有新的终极算法,而且几乎是一定会有,因为LZ相信高人们的能力. 那么分代搜集算法是怎么处理GC的呢? 对象分 ...

  4. demo 记录 通用方法什么的到这里抄一下

    function killerrors() { return true; } window.onerror = killerrors; //检查浏览器类型 function checkBrowser( ...

  5. SAE部署Django1.6+MySQL

    [解决]SAE部署Django1.6+MySQL 终于可以舒口气了,今天大部分时间都在搞这个,很是蛋疼,网上资料良莠不齐,我不信这个之前没人做过,但是他们确实分享的不够好. 废话不多说,还是记录一下今 ...

  6. web开发视频(一)之环境准备

    硬件环境: Win7+64位操作系统 1.安装 jdk.tomcat.eclipse; 2.配置 jdk 环境变量.tomcat环境变量 (jdk配置成功的标示是在命令提示符中输入 javac 给出对 ...

  7. Vmware虚拟机linux上网问题

    1.虚拟机linux上网问题 1.1 VMware中虚拟机网络的三种设置 第一种:桥接(bridged) 第二种:NAT 第三种:Host only . 这种模式下仅主机可以上网,虚拟机不能上网. 1 ...

  8. Windows下编译sqlite3

    一.下载 sqlite-amalgamation-3240000:sqlite源代码,主要需要头文件sqlite3.h sqlite-dll-win32-x86-3240000.zip:sqlite3 ...

  9. StringsUtil字符串工具类---灵活截取

    package com.js.ai.modules.pointwall.interfac; import javax.print.attribute.standard.MediaName; publi ...

  10. oracle系统表v$session、v$sql字段说明(转)

    在本视图中,每一个连接到数据库实例中的 session都拥有一条记录.包括用户 session及后台进程如 DBWR, LGWR, arcchiver等等. V$SESSION中的常用列 V$SESS ...