Linux Shell的介绍和基础应用的学习笔记

什么是Shell

  Shell既是一种命令语言,又是一种程序设计语言(即Shell脚本)。作为一种基于命令的语言,Shell 交互式地解释和执行用户输入的命令;作为程序设计语言,Shell中可以定义变量、传递参数,并提供了许多高级语言所有的流程控制结构。

  Shell的原意为“壳”,它包裹在内核之外,处于用户内核之间,其主要功能为接收用户输入的命令,找到命令所在位置,并加以执行。在计算机科学中,可以认为Shell是包裹在内核外的命令接口,又因为其最重要的功能是命令解释,所以也可以认为Shell是一个命令解释器。Shell与内核及用户间的关系如图所示。

Shell的种类

常见的有:BSh、CSh、KSh、bash等

  • Bash Shell是Bourne Shell的一个免费版本,是最早的Unix Shell,包括许多附加的特点,是一个交换式的命令解释器和命令编程语言。
  • C Shell中使用“类C”语法,借鉴了Bourne Shell的许多特点,新增了命令历史、别名、文件名替换等功能。
  • Korn Shell的语法与Bourne Shell相同,同时具备了CShell的交互特性,因此广受用户青睐。Bourne Again Shell,即bash,是GNU计划的一部分,用于GNU/Linux系统大多数Linux都以bash作为缺省的shell。(常用)


用户可通过

Is /bin/*sh

命令查看系统中安装的shell.

Shell功能

Shell最重要的功能是命令解释器,Linux系统中的所有可执行文件都可以在shell中执行。Linux系统中的可执行文件可以分为五类:

  1. Linux命令:用来使系统执行某种操作的指令,存放在/bin和/sbin目录下:
  2. 内置命令:存放于Shell内部的命令的解释程序,是一些常用的命令。可以使用“type 命令名”的方式来查看某个命令是否为内置命令
  3. 实用程序:存放于/usr/bin、/usr/sbin、/usr/local/bin等目录下的程序,如lswhich等;
  4. 用户程序:由用户编写的,经过编译后可执行的文件
  5. Shell脚本:使用Shell语言编写的批处理文件

Shell对命令的解释过程:

用户输入命令,shell判断是否是内置命令,是的话执行,不是的话去硬盘寻找。

可以看出,shell承上启下,上承用户,下接Kernel(内核)。作用有两方面:1.命令解释,2.编写程序。

Shell的应用

1.输入/输出重定向

默认情况:

Linux系统中将从终端输入数据称为标准输入(鼠标,键盘,扫描仪...),将打印数据到终端称为标准输出(默认是显示器),并设置了3个标准文件,分别关联标准输入标准输出以及标准错误输出信息,标准输入文件的编号为0,默认设备是键盘;标准输出文件的编号1,默认设备是显示器;

标准错误文件的编号为2;默认设备也是显示器。

但并非任何时候用户都希望使用默认设置,这种情况下,可使用重定向,更改命令获取与信息输出的方向。

 所谓重定向,即使用用户指定的文件而非默认资源(键盘、显示器)来获取或接收文件。重定向可分为三种:(一般会用文件来替代)

  • 输入重定向
  • 输出重定向
  • 错误重定向
输入重定向:

实现输入重定向的运算符为具体格式如下

命令<文件名(把文件的内容输入给命令)

示例:(把fiel文件内容广播出去)

wall<file
输出重定向:

具体格式如下实现输出重定向的运算符为
命令>文件名(会把显示的内容写到文件当中)
示例:(把用户密码信息 写到文件中)

cat /etc/passwd >file


使用>运算符时,输出的信息将以覆盖的方式打印到文件fie中,若想保留文件file中原有的内容,可使用运算符“>>”,该运算符将以追加的形式将结果打印到fie文件。

错误重定向:

重定向标准错误信息使用运算符“>”和“>>其格式如下:

命令 2>文件名

说明:
①其中“2”代表标准错误文件的编号,实际上,输入重定向和输出重定向还可写为如下格式

命令 0<文件名
命令 1>文件名

只是当其文件编号0、1出现在重定向符号左侧时,可以被省略。
②可以使用运算符“&”通过文件编号引用文件,该运算符表示“等同于”,如“2>&1”则表示将标准错误重定向到标准输出中。 

2.管道

在shell编程中,“|” 被称为管道符号,用于连接两个命令,其格式如下
命令1 命令2 ..... 命令n

管道可使前一个命令的输出作为后一个命令的输入,由此实现较为复杂的功能。

示例:(在/etc 列出来的列表中 检索init)

ls-l /etc|grep init

3.命令连接符

Shell中提供了一些用于连接符号的符号,包括“;”,“&&” 以及 “||”,使用这些符号,可以将多条shell指令进行连接,使这些指令顺序或根据命令执行结果,有选择地执行,下面将对这些符号的功能分别进行介绍。

  1. 使用“;”运算符间隔的命令,会按照先后次序依次执行。

示例:批量处理

mkdir text;cd text; touch 23.c;vim 123.c
  1. 使用“&&”连接符连接的命令,其前后命令的执行遵循逻辑与关系,只有该连接符之前的命令执行成功后,它后面的命令才被执行

示例:tunch拼写错误,则不会继续执行

 cd text && tunch 123.c && 123.c
  1. 使用“||”连接符链接的命令,其前后命令的执行遵循逻辑或关系。只有该连接符之前的命令执行失败时,才会执行后面的命令。

4.文本提取器

Shell中常用awk提取文档或标准输出中的文本信息。awk实际上是一个强大的文本分析工具,该工具是Shel中常用的文本提取命令为awk,该命令类似于常用命令中的grep,都能从指定文本中提取指定信息,不同的是该命令可将文本按指定分隔符分割,并从分割后的文本中提取指定项。

以上就是shell的基本介绍和基础应用,关于shell脚本会持续更新。

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值