「速通Shell」初次走近Shell,Shell是什么?
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
目录
对于开发者来说除了掌握Java、C/C++等主要编程语言外还需要掌握支撑性的工具语言和库学习和掌握Shell能够帮助我们高效便捷的编译和运行程序让系统代替复杂的人工操作。通过速通Shell系列我们一起走近Shell读懂Shell用好Shell提高程序执行效率和日常工作效率。
初次走进Shell
要想走进Shell的世界我们需要先观其貌识其才进而攻其心得其人所谓知己知彼无往不利。我们从Shell的概念、原理、分类和优点开始。
Shell是什么
Shell 是一种脚本语言一种命令语言也是一种程序设计语言。脚本语言最显著的特点是解释执行而非编译执行一个Shell脚本主要由原本需要在命令行输入的命令组成Shell可以控制进程和文件以及启动和控制其它程序。Shell 通过提示输入向操作系统解释该输入然后处理来自操作系统的结果输出管理用户与操作系统之间的交互。
Shell工作原理
计算机设备是由一个个物理硬件组成的本身不具备运行处理能力需要通过内核和驱动对硬件进行操作驱动其工作。在计算机系统中内核接口是隐藏起来的用户不能直接操作内核我们需要通过一个中间程序接收用户操作命令将其传递给内核推动内核工作进而推动硬件工作。Shell便是这个中间程序起到连接操作系统内核和用户的作用。
所以Shell起到一个代理商的作用通俗点说有点像一个代购。一般情况下我们难以直接获得海外商品可以将需求提给代购。代购理解消化需求后去海外供应商采购商品供应商就是内核。供应商收到采购指令将商品返回给代购代购将商品可视化的呈现给用户。
Shell分类
随着历史发展和技术演进Shell诞生了数个版本它们彼此借鉴学习推陈出新使得Shell更容易被用户接受和使用极大释放了生产力。主要Shell版本如下
-
Bourne Shell
标识为sh由Steve Bourne在贝尔实验室开发在UNIX系统中被普遍使用在编程方面比较优秀但在用户交互方面没有其他Shell优秀。 -
Bourne-Again Shell
标识为bash该Shell是linux操作系统上使用最为广泛的Shell也是现在的主流Shell在Bourne Shell基础上增强了很多特性如命令补全命令历史表等。 -
Korn Shell
标识为ksh二十世纪八十年代早期由David Korn在贝尔实验室编写开发。它完全向上兼容Bourne Shell并包含了C Shell的很多特性集成了C Shell和Bourne Shell优点。 -
C Shell
标识为cshC Shell开发于二十世纪七十年代末作为编程语言使用时语法类似于C更容易被接受。此外C Shell还提供了增强交互使用的功能如作业控制、命令行历史和别名等。但是类C的特点使其降低了作为脚本语言的灵活性因此C Shell对于个人用户而言运行比较慢。
现如今在我们日常系统中bash已经成为Shell编程的不二人选因此速通Shell系列也是全部采用bash版本。
Shell的优势
没有金刚钻就揽不了瓷器活Shell能够在软件系统中有着举足轻重的作用自然有着它的天然优势简单、易用、高效是其三大基本原则。
-
语法简单
Shell看似复杂实际上语法和结构是比编译执行的编程语言要简单主要内容是命令调用、语句拼接、文件读写等逻辑复杂度一般不会非常高 -
使用方便
Shell将一系列操作复杂的命令存储在一个或几个脚本文件内只需要一次调用就可以顺序执行完所有命令 -
适用范围广
Shell是解释执行灵活性高适用场景多例如代码编译、版本打包发布、软件安装、程序运行、log存储、进程监控等一系列操作繁琐、重复性高的工作均可以依靠Shell来高效准确完成。
第一个Shell脚本
Hello World
按照惯例我们编写一个最基本的Shell脚本hello.sh
#!/bin/bash
echo "hello world"
代码只有两行但也值得进行一下分析。
脚本文件第一行使用#符号指定一个脚本的解释器如#/bin/bash、#/bin/sh等该行被#注释所以不会被当作命令来执行但计算机通过该注释信息得知应该使用什么解释器来解释整个脚本文件中的所有有效代码在上面的例子中使用的解释器是/bin/bash。
脚本文件第二行echo 命令用于向窗口输出文本hello word被双引号括起来表示是一个字符串。
Shell脚本文件以sh作为扩展名sh代表Shell。脚本写完下面看一下脚本怎么运行。
Shell执行方式
Shell是解释型语言常用执行方法有四种绝对路径执行、相对路径执行、脚本命令执行、系统命令执行。
绝对路径执行
刚创建出来的脚本文件是没有可执行权限的因此绝对路径执行时需要先给脚本文件赋予可执行权限使用命令chmod +x hello.sh即可。执行完毕打印hello world。
相对路径执行
相对路径就是通过./来执行脚本文件操作最为方便。
脚本命令执行
通过sh或者bash命令来执行脚本不需要为脚本文件分配可执行条件。该方式下脚本默认解释器类型为运行命令所指定不受脚本文件开头的#/bin/bash、#/bin/sh所控制。
系统命令执行
通过source命令来执行脚本在执行时hello.sh作为了参数source命令的参数因此也不需要hello.sh有执行权限。
总结
在项目开发中脚本是工具性语言受到的关注不如C/C++、Java等语言高但它是操作系统和软件项目运行的推进器和管理员尤其是在运维上起到了关键作用。掌握Shell编程实现软件自动化大大提升了我们的工作效率提高了系统的运行效率。
一支战队是否优秀C位非常重要辅助也要出彩相辅相成。
下一篇我们将进入shell编程非常关键的变量。
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |