【Linux入门】十三、Shell基础1 -- 概述&脚本执行方式
Shell基础1 -- 概述&脚本执行方式
1 概述
命令解释器
Shell是一个命令行解释器,它为用户提供一个向Linux内核发送请求以便运行程序的界面系统级程序;
最底层是硬件,系统通过内核来管理硬件,但是我们在外层应用程序或者是我们敲入的命令,内核是无法识别的;
而计算机能够识别的是0101的机器语言。Shell的作用就在于翻译我们输入的命令为内核能识别的机器语言,并将处理结果翻译为用户可以识别的返回结果;
Shell其实就是用户和计算机(内核)进行交互的界面,然后把用户的命令翻译为计算机可以识别的机器语言,
再把命令传递给硬件,硬件来执行;内核执行完之后,将其反翻译为用户可以看懂的abcd....
我们平时操作的命令界面即Linux的Shell:
用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
强大的编程语言
Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。
Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。
2 Shell的分类
Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。
Bourne Shell
从1979年起Unix就开始使用Bourne Shell,Bourne Shell(B Shell)的主文件名为sh。
Bourne家族主要包括:sh,ksh,Bash,psh,zsh;
Bourne Shell更加主流,Linux的标准shell是Bash,是Bourne家族中的一员,它的语言结构与B Shell非常类型,而且完全兼容。
Bash:Bash与sh兼容,现在使用的Linux就是使用Bash作为用户的基本Shell。
C Shell
C Shell主要在BSD版的Unix系统中使用,其语法和C语言相类似而得名;
C Shell主要包括:csh,tcsh。
3 Linux支持的Shell
Linux支持的Shell可以通过/etc/shells文件查询
Shell切换,只要在Shell中输入shell类型即可,输入exit退出。
4 脚本执行方式
echo命令
这里首先学习一个echo命令
echo [选项] [输出内容]
选项:
-e 支持反斜线控制的字符转换
用法:
不加任何选项的话,直接使用echo + 输出内容。
如果要输出的内容,中间有空格,需要加双引号,没有空格的话可以不加
举个例子:
第一个脚本
首先vim创建sh1_hello_world.sh
虽然Linux文件不区分扩展名,但这里加上sh拓展名,目的是告诉系统,该文件是bash脚本;
当使用vim编辑器时,系统会尝试使用颜色来标识,如下:
#!/bin/bash 这句并不是注释,作用是告诉操作系统使用bash来解释shell脚本。
其余以#开头的则为注释。
脚本执行方式1:
首先赋予文件执行权限,然后使用文件路径来执行。
注意:这里使用绝对路径或相对路径均可,但不能直接使用文件名,即使已经在文件目录下。
(除非将目录加入到环境变量PATH中)
脚本执行方式2:
bash 直接加文件名(如果在文件目录下可以不加路径,与上面方式1不同,而且不需要先赋予执行权限)
常用的是方式1的方法。
注意:
在Windows下编辑好的脚本文件拷贝到Linux系统下,是无法直接执行的;
原因在于Linux中回车符识别为$,而Windows中编辑的文件,回车符在Linux中识别为^M$,故无法直接运行;
可以使用:dos2unix 脚本名(Windows下编辑的文件)将其转换成Linux下可以运行的文件