shell概述
shell最主要的工作就是把我们敲入的命令,比如ls
翻译成内核可以识别的二进制代码(0101这样的机器语言),然后内核才可以根据我们的要求调用硬件完成操作。
shell就是上图这个交互界面,
上图的解释执行脚本语言的意思是不需要先单独进行编译,命令在执行过程中自动进行编译。写完的脚本一回车就可以见到结果
打开上图的文件就可以看到Linux中支持的shell,看下图
主流shell是bash
shell可以切换,如下图从bash
切换到sh
又切换回来。
现在学的是Bshell系列的bash
脚本执行方式
如上图第一个hello world!
提示错误的原因是!
在Linux中有特殊作用,要去掉它的特殊作用要用单引号
如果内容中有空格的话必须要用单引号或者双引号括起来
\t
输出Tab键,也就是一大段空格
如下图\e[1
代表开启颜色输出,\e[0m
代表结束颜色输出,这是标准用法,要输出颜色都得这样
Linux不区分扩展名,但如果像上面一样把脚本的后缀名写成.sh
,作用是告诉系统我写的东西是bash
脚本。如果vim
编译器它会用颜色来帮助你。建议把所有的脚本都写成.sh
。当然非不写也行。
第二行的#!/bin/Bash
不是注释,是标识,标称以下写的程序是shell脚本
,如果没写这句,shell脚本
的执行并不影响,但是可能会出现一些更加复杂的错,比如说在shell脚本中嵌套其他语句。所以所有shell脚本都不能省略这句话
必须要写好注释
上图是bash
不是Bash
上图为执行的两种方法,第一个用绝对路径和相对路径都行,如下图
用bash hello.sh
来执行脚本的话,脚本连执行权限都不需要赋予。因为它的意思是通过shell
来解释脚本,推荐还是上图第一种赋予权限执行
Linux中所有的执行文件,不管是shell脚本还是二进制的执行命令,要想运行都必须用绝对路径或相对路径让系统找得着才可以执行,像ls
这样的其实是简化操作,后面环境变量配置再讲
如上图,cat -A
看到文件所有内容,包括隐藏内容,$
是回车的意思
Windows回车符是下图白线这样的
如果从Windows下的脚本一定要转换为Linux格式,不然格式不匹配,用dos2unix
命令转换如下图
所有当然也有unix2dos
命令