Shell 是种命令解释程序, 也可以看作是一种命令语言的解释器. 用户在与 Shell 交互时所输入的命令行必须符合 Shell 命令的语法和语义规范, 才能够被 Shell 理解并执行. Shell 所使用的这种命令语言称为 Shell 语言. Shell 语言不仅仅是一种交互式语言, 它还是一种可编程的程序设计语言. 将若干个 Shell 命令行写入个文件就构成了一个 Shell 程序, 它可以被 Shell 逐条地解释执行. 用 Shell 语言编写的 Shell 程序可以使用各种变量, 参数和控制结构来组织命令流程, 自动化地完成各种复杂冗繁的处理工作.
Linux https://www.linuxprobe.com/ 系统中广泛使用了 Shell 程序来实现系统的初启, 配置, 管理和维护等工作. 因此, 熟练掌握 Shell 语言可以更加深入地理解系统的运行机制, 更加有效地使用和管理系统.
Shell 语言的特点:
与其他编程语言相比, Shell 语言具有如下特点:
(1) Shell 是一种解释性语言. 这就是说, 用 Shell 语言写的程序不需编译, 可以直接由 Shell 进程解释执行. 解释性语言的特点是快捷方便, 可以即编即用, 但与编译性语言的目标程序来比, 解释性语言程序的运行速度要低一些.
(2) Shell 是基于字符串的语言. Shell 只是做字符串处理, 不支持复杂的数据结构和运算. Shell 的输出也全部是字符方式的.
(3) Shell 是命令级语言. Shell 程序全部由命令而不是语句组成, 几乎所有的 Shell 命令和可执行程序都可用来编写 Shell 程序. Shell 命令十分丰富, 命令的组合功能也十分强大. 所以, 用简单的命令和命令组合形成的 Shell 程序即简洁又高效, 可以实现各种复杂的功能. 另外需要说明的是, 不同版本的 Shell 程序不完全兼容, 差别可能是细微的, 也可能是明显的.
Shell 程序也称 Shell 脚本(script), 是由一系列 Shell 命令为基本元素构成的文本文件. 简单的 Shell 程序可以只是一个命令序列, 高级 Shell 程序中还可以包含复杂的命令组合, 定义各种参数和变量, 使用条件命令, 控制结构以及其他高级特性.
Shell 程序的建立与执行
Shell 脚本文是文本文件, 因此可以用任何文本编辑器 (如 vi, Emacs 等) 建立和编辑脚本. Shell 脚本文件的名称没有限定的拓展名, 通常不带拓展名或者带 ".sh" 拓展名.
Shell 脚本的执行方式主要有 3 种.
(1)将脚本作为可执行文件执行:
- $ chmod a+x hello
- $ ./hello
用文本编辑器生成的脚本文件默认是没有 x 权限的, 也就是说是不可直接执行的. 赋予 x 权限后, 脚本就可以像一般的 Shell 命令那样执行了. 如果脚本不在系统存放命令的标准目录下, 需要在执行时指定脚本的路径. 上例中脚本 hllo 放在当前目录下, 所以要用. hello 来运行.
(2)启动一一个 Shell 子进程来执行脚本文件:
$ bash hello #或 bash < hello
执行此命令行时, Shell 进程先启动一个 bash 子进程, 让它执行 hello 脚本的内容, 执行完毕后 bash 子进程也终止. 在这种方式中, 脚本是作为命令参数传给子 Shell 的. 子 Shell 运行时读取该文件并执行其内容, 因此脚本文件不必有执行权限. 这种方法常用于运行一个其他版本的 Sbell 脚本. 假如当前 Shell 是 bash, 而 chello 是用 C Shell 语言写的脚本, 则要执行这个脚本时可以用 csh chello 命令启动一个 csh 进程来执行它.
(3)让当前 Shell 进程执行脚本文件:
$.hello
"." 是一个 shell 内部命令, hello 是它的参数. 命令的功能是读取参数指定的文件, 执行其内容. 这种执行方式与第 2 种方式类似, 区别在于此方式是由当前 Shell 进程来执行脚本文件的.
前面大致简介了一下什么是 Shell 脚本, 它有什么特点, 做什么用的, 想必现在大家对这个有了一定程度的了解, 当然这只是学习 Linux 操作系统中所接触到的冰山一角, 想要学好 Linux 操作系统, 就必须学好 Shell, 那怎么样才能学好 Shell 呢? 我们先看一个简单的 Shell 程序:
- $ cat hello # hello program
- # this is a shell script to say hello
- echo Hello World!
- echo -n "Today is"
- date "+%A,%B %d,%Y."
- $.hello # run
- Hello World!
Today is Sunday, July 15, 2018.
$_
这个 hello 程序的第二行是注释, 后面 3 行是命令, 在执行程序时, shell 依次执行这 3 个命令, 并输出显示信息. 这就是一个简单的 hello world 代码, 几乎所有的程序员学习如何编写代码都是从这里起家的.
学习 Linux 运维, 这是必经之路, 不知道各位读者是自学呢, 还是在校老师教导, 不过在我看来, 学习技术还是的有一个完整的体系, 前几天逛网页, 看到一个关于 Linux 学习的网站, 叫 linuxprobe, 配套有书籍叫《Linux 就该这么学》 https://www.linuxprobe.com/ , 进去瞄了一眼, 感觉还不错, 里面的知识架构很好, 如果各位有兴趣可以一阅! 不管你学不学, 资料就在哪里不断增多; 不管你学不学习, 时间就那么多, 逐渐流逝!
祝各位运维人前程似锦! 加油!!!
来源: http://www.bubuko.com/infodetail-3098935.html