什么是shell

简单点理解,就是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具。实际上,在shell和计算机硬件之间还有一层东西那就是系统内核了。打个比方,如果把计算机硬件比作一个人的躯体,而系统内核则是人的大脑,至于shell,把它比作人的五官似乎更加贴切些。回到计算机上来,用户直接面对的不是计算机硬件而是shell,用户把指令告诉shell,然后shell再传输给系统内核,接着内核再去支配计算机硬件去执行各种操作。

Bash

Unix中有两种主要的shell类别:

Bourne shell − If you are using a Bourne-type shell, the $ character is the default prompt.

C shell − If you are using a C-type shell, the % character is the default prompt.

linux的发布版本之一——Redhat/CentOS——系统默认安装的shell叫做bash,即Bourne Again Shell,它是sh(Bourne Shell)的增强版本。Bourn Shell 是最早行起来的一个shell,创始人叫Steven Bourne,为了纪念他所以叫做Bourn Shell,检称sh。那么这个bash有什么特点呢?

记录命令历史

我们敲过的命令,linux是会有记录的,预设可以记录1000条历史命令。这些命令保存在用户的家目录中的.bash_history文件中。

指令和文件名补全

按tab键,它可以帮你补全一个指令,也可以帮你补全一个路径或者一个文件名。连续按两次tab键,系统则会把所有的指令或者文件名都列出来。

别名

前面也出现过alias的介绍,这个就是bash所特有的功能之一了。我们可以通过alias把一个常用的并且很长的指令别名一个简洁易记的指令。

4 . 通配符

在bash下,可以使用*来匹配零个或多个字符,而用?匹配一个字符。

输入输出从定向

输入重定向用于改变命令的输入,输出重定向用于改变命令的输出。输出重定向更为常用,它经常用于将命令的结果输入到文件中,而不是屏幕上。输入重定向的命令是,另外还有错误重定向2>,以及追加重定向>>。

管道符

前面已经提过过管道符”|”,就是把前面的命令运行的结果丢给后面的命令。

作业控制。

当运行一个进程时,你可以使它暂停(按Ctrl+z),然后使用fg命令恢复它,利用bg命令使他到后台运行,你也可以使它终止(按Ctrl+c)。

Bash如何解析命令

按行读取命令

处理引用问题

双引号内的字符将失去其原有意义,除了$, "和\。

单引号内的字符将失去其原有意义,包括$, "和\。

将输入的一行字符串按照 ; 分割成多个命令。

处理特殊字符

{..},

重定向符号会被从命令行中移除,所以在执行命令时... > log, 2>&1这些命令都是不会提交给内核处理命令的进程的。

其他符号会被其对应的结果表达所替代,如{..}命令:

$ echo {a..c}

a b c

变量替换

将带 $ 符号的变量 $parameter替换成变量内容, 术语叫Parameter Expansion.

$ echo $PWD

/z/ros

将命令行分割成被执行命令和参数

分割的原则是任何空白(空格、Tab)都将作为分隔符将一整条命令分割成一个一个的词。分割后结果的第一个词作为命令,其他词作为参数。如果命令词中包含空白,需要用引号括起来。

$ My Command /foo/bar ## This will execute the command named 'My' because it is the first word.

$ "My Command" /foo/bar ## This will execute the command named 'My Command' because the space inside the quotes has lost its special meaning allowing it to split words.

Tips: 在从Windows或MacOS将文件复制到Linux时,有些文件的文件名可能包含Linux不支持的特殊字符,如空格,#等,如文件名file 1127.txt在Windows下是合法的,但是在Linux不合法,删除这个文件的命令:

$ rm file 1127.txt // not work

$ rm "file 1127.txt" // work

执行命令

a. 如果命令是 function or builtin,该命令将会被接收命令的同一个Bash process处理。

b. 否则 (像是 hadoop fs 等命令), Bash 将会 fork off,创造一个新的Bash子进程,将解析好的命令传递给它,并等待它返回结果。一般情况下,子进程将会继承父进程的标准流。

Ref:

linux中bash是什么命令,Bash简介 Bash是如何处理命令的相关推荐

  1. 如何在 Linux 中创建并运行 Shell 脚本(Bash 初学者教程)

    文章目录 1.创建并运行第一个 shell 脚本 2.将 shell 脚本转换为 bash 脚本 3.为什么大多数 shell 脚本都包含 #! /bin/bash 在 shell 脚本的开头? 4. ...

  2. linux打印服务叹号,linux中如何通过echo输出!(叹号)? -bash: !: event not found

    需求描述: 今天在做通过echo结合passwd给用户改密码的过程中,出现无法修改的错误. 错误如下: [root@testvm ~]# useradd mytest [root@testvm ~]# ...

  3. linux管道符查看家目录,深入学习Linux之Linux中的管道符 | 和grep,awk,cut命令

    学习Linux期间最常用三个命令和一个符号,管道符 | 和grep,awk,cut,并且它们几个经常一起使用,简直就是亲兄弟呀.所以我将他们单独整理 为了让大家更容易的看清楚示例,我将附上测试文件,文 ...

  4. Linux中的文件搜索 locate,find,grep ,whereis和which命令的使用

    1.文件搜索locate Linux locate命令用于查找符合条件的文档,它会去保存文档和目录名称的数据库mlocate内,查找合乎范本样式条件的文档或目录.一般情况我们只需要输入查找指定文件名字 ...

  5. Linux 中 3 个文件打包上传和下载相关命令详解

    tar 命令 通过 SSH 访问服务器,难免会要用到压缩,解压缩,打包,解包等,这时候tar 命令就是必不可少的一个功能强大的工具.Linux 中最流行的tar是麻雀虽小,五脏俱全,功能强大. 使用t ...

  6. Linux中的date、cal、bc三个简单命令

    1.date命令:显示日期与时间的命令 (1).在终端输入命令date,可以知道Linux操作系统的当前时间,如下图所示: (2).其中date命令又可以带一些参数,如果我们想让当前的日期的显示格式为 ...

  7. linux中cat、more、less、tail、head命令的区别

    一.cat 显示文件连接文件内容的工具 cat 是一个文本文件(查看)和(连接)工具,通常与more搭配使用,与more不同的是cat可以合并文件.查看一个文件的内容,用cat比较简单,就是cat后面 ...

  8. linux中什么目录用来存放系统管理员使用的管理命令,Linux操作题6附答案

    Linux操作题6附答案 一.填空题 1.默认情况下,超级用户与普通用户的登录提示符分别就是:"#"与"$". 2.Linux内核引导时,从文件/etc/fst ...

  9. (转载)深入理解Linux中内存管理---分段与分页简介

    首先,必须要阐述一下这篇文章的主题是Linux内存管理中的分段和分页技术. 来回顾一下历史,在早期的计算机中,程序是直接运行在物理内存上的.换句话说,就是程序在运行的过程中访问的都是物理地址.如果这个 ...

  10. linux sha1sum命令,讲解Linux中校验文件的MD5码与SHA1码的命令使用

    md5sum用法:md5sum [选项]... [文件]... 显示或检查 MD5(128-bit) 校验和. 若没有文件选项,或者文件处为"-",则从标准输入读取. -b, -- ...

最新文章

  1. 25 navigator对象
  2. windows2008下VS2008发布失败
  3. T-SQL 控制流语句
  4. Openwrt系统初始时间
  5. 基于Wemos D1的感应开盖垃圾桶
  6. linux hadoop namenode_HADOOP_HDFS伪分布式安装步骤
  7. IImage--factory
  8. 为什么 1KB = 1024Byte???群里讨论。
  9. matconvnet 在 win7 64 位下的安装
  10. java 26进制转10进制_求将任意10进制数字转为26进制字母的算法
  11. 武田2020财年第三季度业绩彰显增长加速和持续的韧性;确认了2020财年全年管理层指引,并上调了自由现金流以及列报每股盈利的预测
  12. 漂亮得不像触控板,全新 Magic Trackpad 2
  13. 多元线性回归—异方差
  14. Windows10出现“ Trusted Installer 提供的权限才能对此文件进行更改”的处理
  15. 淡泊以明志,宁静而致远
  16. 最近整理的面试笔试区别题
  17. iterable、iterator和iter()
  18. python hank_python optparse模块
  19. RecyclerView clipToPadding
  20. 个人永久性免费-Excel催化剂功能第105波-批量调整不规范的图形对象到单一单元格内存储...

热门文章

  1. 【数据隐私】数据隐私执法行动加强
  2. 西汉 东汉 三国(曹魏 蜀汉 东吴)
  3. Counting Sheep_SAFIA
  4. Google封锁整个co.cc子域只能临时止血难以长治久安
  5. pytorch框架下faster rcnn使用softnms
  6. 恶魔奶爸语法1-3课
  7. BED文件与bedtools简介
  8. 软件测试面试题:黑盒测试和白盒测试是软件测试的两种基本方法,请分别说明各自的优点和缺点?
  9. beecloud轻松实现支付
  10. 应该成为一名系统工程师么?