从这篇博客开始,我们将进入Linux的shell脚本的学习,这对于Linux学习爱好者而言是特别重要的一节,也是特别有意思的一节,shell 脚本就像我们知道的Java,php类似的编程语言一样,通过shell脚本,我们能完成很多有意思的应用程序。在学习中找到乐趣,这也是最重要的。

  本篇博客我们先给大家介绍一下什么是shell,以及bash的基本功能。

1、Shell 是什么?

  和大家通常说的shell是一门编程语言的说法其实是不完全正确的。

  ①、shell 是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序,用户可以用 shell 来启动、挂起、停止甚至是编写一些程序。

    比如,我们现在操作的界面就是shell,我们输入一些命令,通过shell 去翻译为机器语言,然后由硬件去执行这些命令。

  ②、shell 是一个功能很强大的编程语言,它易编写、易调试,而且灵活性强。shell 是解释执行的脚本语言,在 shell 中可以直接调用 Linux 系统命令。

  

  其实windows类似于shell的就是它的图形交互界面,我们在windows系统中打开文件,删除文件等操作,就是向windows系统发送命令。

2、Shell 的分类

  

  

  

  

3、查看Linux系统支持的 shell:/etc/shells

  

  我们可以在shell解释器中直接输入shell名称进行切换

  

4、echo 输出命令

  这个命令如果学过Java的类似于 System.out.println(),如果学过C语言的类似于 printf(),在shell 当中语法形式如下:

echo 【选项】【输出内容】

  -e  表示支持反斜杠控制的字符转换,也就是转义字符。

  

  范例:

  

5、脚本执行方式

  首先我们编写一个shell 脚本。通过 vi hello.sh,打开 hello.sh 文件,然后在文件中添加如下内容:

  

  ①、我们说Linux系统是不区分文件后缀名的,这里我们学习的是 bash,所以创建文件 hello.sh,后缀名最好加上.sh(虽然不加也没问题),便于我们识别。

  ②、脚本的第一行 #!,这是一个约定的标记,它告诉系统这个脚本需要用什么解释器去执行,即使用哪一种 shell,所以学习 bash,第一行固定都是 #!/bin/bash。这是不能省略的。

  创建完毕之后,接下来执行该脚本,有如下两种方式:

  ①、作为可执行程序

cd /tmp                     #进入到脚本所在的目录
chmod +x ./hello.sh #使得脚本具有可执行权限
./hello.sh #执行脚本

  注意,一定要写成 ./hello.sh,而不是 hello.sh,运行其它二进制的程序也一样,直接写 hello.sh,linux 系统会去 PATH 里寻找有没有叫 hello.sh 的(这是后面会讲的环境变量的配置),而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 hello.sh 是会找不到命令的,要用 ./hello.sh 告诉系统说,就在当前目录找。

  

  ②、作为解释器参数

  也就是直接运行解释器,其参数就是 shell 脚本的文件名,如下:

/bin/sh hello.sh
或者
bash hello.sh

  注意:这种方式执行脚本,并不需要第一行写上 #!/bin/bash。

Linux系列教程(二十)——Linux的shell概述以及如何执行脚本的更多相关文章

  1. ComicEnhancerPro 系列教程二十:用“文件比较”看有损、无损

    作者:马健邮箱:stronghorse_mj@hotmail.com 主页:http://www.comicer.com/stronghorse/ 发布:2017.07.23 教程二十:用“文件比较” ...

  2. linux系列(二十):find命令

    1.命令格式 find pathname -options [-print -exec -ok ...] 2.命令功能 用于在文件树种查找文件,并作出相应的处理 3.命令参数 pathname: fi ...

  3. .Neter玩转Linux系列之二:Linux下的文件目录及文件目录的权限

    一.Linux下的文件目录 简介:linux的文件系统是采用级层式的树状目录结构,在此 结构中的最上层是根目录“/”,然后在此目录下再创建 其他的目录.深刻理解linux文件目录是非常重要的,如下图所 ...

  4. Spring Boot2 系列教程(二十)Spring Boot 整合JdbcTemplate 多数据源

    多数据源配置也算是一个常见的开发需求,Spring 和 SpringBoot 中,对此都有相应的解决方案,不过一般来说,如果有多数据源的需求,我还是建议首选分布式数据库中间件 MyCat 去解决相关问 ...

  5. Spring Boot2 系列教程(二十六)Spring Boot 整合 Redis

    在 Redis 出现之前,我们的缓存框架各种各样,有了 Redis ,缓存方案基本上都统一了,关于 Redis,松哥之前有一个系列教程,尚不了解 Redis 的小伙伴可以参考这个教程: Redis 教 ...

  6. Linux系列教程(十二)——Linux软件包管理之yum在线管理

    上一篇博客我们介绍了rpm包管理之rpm命令管理,我们发现在使用rpm命令手动安装rpm包的时候,会发现安装遇到到的依赖让你痛不欲生,安装一个rpm时会要先先安装某个依赖的rpm,而安装这个依赖的rp ...

  7. Linux系列教程(十四)——Linux用户和用户组管理之相关配置文件

    前面我们介绍了软件包管理.首先介绍了rpm包的相关命令,但是我们发现直接安装rpm包会被其依赖性折磨的不行,然后解决办法是yum在线管理,通过yum命令安装rpm包能自动帮助我们解决依赖性.最后又介绍 ...

  8. Linux系列教程(十六)——Linux权限管理之ACL权限

    通过前面的两篇博客我们介绍了Linux系统的用户管理,Linux用户和用户组管理之相关配置文件 讲解了用户管理的相关配置文件,包括用户信息文件/etc/passwd,用户密码文件/etc/shadow ...

  9. Linux系列教程(十八)——Linux文件系统管理之文件系统常用命令

    通过前面两篇博客,我们介绍了Linux系统的权限管理.Linux权限管理之ACL权限 介绍了通过设定 ACL 权限,我们为某个用户指定某个文件的特定权限,这在Linux只能对于一个文件只能有所有者权限 ...

随机推荐

  1. spring <context:annotation-config> 跟 <context:component-scan>诠释及区别

    <context:annotation-config> 和 <context:component-scan>的区别 Difference between <context ...

  2. zabbix灵活使用userparameters

    userparameters介绍 官网文献:https://www.zabbix.com/documentation/2.0/manual/config/items/userparameters 当我 ...

  3. SqlBulkCopy效率低下原因分析

    看到标题 应该会奇怪 SqlBulkCopy 为什么会效率低下 场景:接手项目 数据库SQLSERVER2008R2,  目前有一张流水表单表数据超过4亿,表中建有索引,有其他模块对这个表进行查询操作 ...

  4. iOS正确使用const,static,extern

    static 修饰局部变量 让局部变量只初始化一次 局部变量在程序中只有一份内存 并不会改变局部变量的作用域,仅仅是改变了局部变量的生命周期(只到程序结束,这个局部变量才会销毁) 修饰全局变量 全局变 ...

  5. PE格式第七讲,重定位表

    PE格式第七讲,重定位表 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) 一丶何为重定位(注意,不是重定位表格) 首先, ...

  6. 无限大地图:lightmap拆分

    无缝地图涉及到地形.物件的分块加载,同样,lightmap也需要动态加载.而场景烘焙时,所有物件都是一起烘焙的,那怎么把某些物件指定烘焙到某一张lightmap贴图中?网上找了很久,也没有看到具体的实 ...

  7. JavaScript之“创意时钟”项目

    “时钟展示项目”说明文档(文档尾部附有相应代码) 一.最终效果展示: 二.项目亮点 1.代码结构清晰明了 2.可以实时动态显示当前时间与当前日期 3.界面简洁.美观.大方 4.提高浏览器兼容性 三.知 ...

  8. 微信开发-微信JSSDK错误:invalid url domain

    错误类型:invalid url domain 调试返回参数: { "errMsg": "config:invalid url domain" } 截图: 环境 ...

  9. 阿里官方Java代码规范标准《阿里巴巴Java开发手册 终极版 v1.3.0》

    终极版 v1.3.0 2017年开春之际,阿里诚意献上重磅大礼:<阿里巴巴Java开发手册>,首次公开阿里官方Java代码规范标准.这套Java统一规范标准将有助于提高行业编码规范化水平, ...

  10. USACO2004 Open提交作业(区间DP)

    Description 贝西在哞哞大学选修了C门课,她要把这些课的作业交给老师,然后去车站和同学们一 起回家.老师们在办公室里,办公室要等他们下课后才开,第i门课的办公室在Ti时刻后开放. 所有的办公 ...