[shell]Shell简介

Shell简介

虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Unix/Linux系统的关键。可以说,shell使用的熟练程度反映了用户对Unix/Linux使用的熟练程度

Shell有两种执行命令的方式:

  • 交互式(Interactive):解释执行用户的命令,用户输入一条命令,Shell就解释执行一条。
  • 批处理(Batch):用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。

Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell脚本是解释执行的,不需要编译,Shell程序从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本中的命令一行一行敲到Shell提示符下执行。

几种常见的Shell

Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本。

Unix/Linux上常见的Shell脚本解释器有bash、sh、csh、ksh等,习惯上把它们称作一种Shell。我们常说有多少种Shell,其实说的是Shell脚本解释器。

  • bashbash是Linux标准默认的shell。bash由BrianFox和ChetRamey共同完成,是BourneAgain Shell的缩写,内部命令一共有40个。
  • sh:sh 由Steve Bourne开发,是BourneShell的缩写,sh 是Unix 标准默认的shell。
  • ash:ash shell 是由Kenneth Almquist编写的,Linux中占用系统资源最少的一个小shell,它只包含24个内部命令,因而使用起来很不方便。
  • cshcsh 是Linux比较大的内核,它由以William Joy为代表的共计47位作者编成,共有52个内部命令。该shell其实是指向/bin/tcsh这样的一个shell,也就是说,csh其实就是tcsh。
  • ksh:ksh 是Korn shell的缩写,由Eric Gisin编写,共有42条内部命令。该shell最大的优点是几乎和商业发行版的ksh完全兼容,这样就可以在不用花钱购买商业版本的情况下尝试商业版本的性能了。

注意:bash是 Bourne Again Shell 的缩写,是linux标准的默认shell,它基于Bourneshell,吸收了C shell和Korn shell的一些特性。bash完全兼容sh,也就是说,用sh写的脚本可以不加修改的在bash中执行。 

Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支

第一个Shell脚本

打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了。输入一些代码:

#!/bin/bash
echo "Hello World !"

“#!” 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。echo命令用于向窗口输出文本。

运行Shell脚本有两种方法。

  • 1 作为可执行程序
#将上面的代码保存为test.sh,并 cd 到相应目录:
chmod +x ./test.sh #使脚本具有执行权限
./test.sh #执行脚本

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

通过这种方式运行bash脚本,第一行一定要写对,好让系统查找到正确的解释器。这里的"系统",其实就是shell这个应用程序,但我故意写成系统,是方便理解,既然这个系统就是指shell,那么一个使用/bin/sh作为解释器的脚本是不是可以省去第一行呢?是的。

  • 2作为解释器参数

这种运行方式是,直接运行解释器,其参数就是shell脚本的文件名,如:

/bin/sh test.sh
/bin/php test.php

这种方式运行的脚本,不需要在第一行指定解释器信息,写了也没用。

shell教程

[shell]Shell简介,布布扣,bubuko.com

时间: 2024-10-13 01:00:52

[shell]Shell简介的相关文章

Linux Shell——bash shell 脚本简介

bash shell 脚本简介 shell 运行环境 如果你运行的是 Unix 或 Linux 系统,例如 Ubuntu,Red Hat,SUSE Linux,还有macOS,都是内置了 bash shell 的,所以你不需要额外配置所谓的开发环境. 我的 shell 环境是 macOS Sierra 版本,如果你用的是其他 Linux 系统,后面的例子基本上都是可以运行的. 首先,打开Terminal 命令行,先检查下你的系统的 shell 版本: echo $BASH_VERSION bas

shell脚本简介及常用文本编辑命令

什么是脚本? 脚本简单地说是一条条的文字命令(一些指令的堆积),这些文字命令是可以看到的,可以通过记事本打开和编辑 为什么要学习和使用shell shell属于内置脚本 程序开发的效率非常高,依赖于功能强大的命令可以迅速的完成开发任务(批处理) 语法简单,代码写起来比较轻送,简单易学 shell简介 shell是一个C语言编写的脚本语言,它是用户与linux的桥梁,用户输入命令交给shell处理,shell将相应的操作传递给内核,内核把处理的结果输出给用户 Linux 基本思想有两点:第一,一切

Linux - Shell - shell 执行方式

概述 shell 的执行方式 背景 偶尔执行个 shell 脚本 一般都用 ./ 执行 最近忽然看到 有不同的执行方式, 感觉有必要整理一下, 然后和大家分享 准备 os centos7 shell bash 1. shell 脚本的普通执行 shell 脚本执行 最常用的执行方式 > cd <path/to/scriptDir> > ./<script> [option and args] 其实 shell 脚本, 还有 其他的 执行方式 2. 其他的执行方式 普通方

[Shell]Shell基本功能:历史命令 &amp; 别名

-------------------------------------------------------------------------------------------------------- 一. 历史命令 history    #查看历史命令 history -c #清空历史命令 history -w #不等退出,直接把缓存中的历史命令写入历史命令保存文件-/.bash_history vim /etc/profile  #默认历史命令保存1000条,可修改HISTSIZE保

[shell]shell输入输出重定向

Unix 命令默认从标准输入设备(stdin)获取输入,将结果输出到标准输出设备(stdout)显示.一般情况下,标准输入设备就是键盘,标准输出设备就是终端,即显示器. 一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件: 标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据. 标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据. 标准错误文件(stderr):stderr的文件描述符为2,

[Shell]Shell脚本的执行方式

---------------------------------------------------------------------------------------------------------- 能完成大部分输出任务的命令:echo echo helloworld; #正确 echo "hello world";   #正确 echo "hello world !"; #中间有空格须加引号,且!在Linux中有特殊含义,不能加双引号,而用单引号(注

[Shell]Shell基本功能:输入输出重定向

/*----------------------------------------------------------------------------------------------- @黑眼诗人 <www.chenwei.ws> -----------------------------------------------------------------------------------------------*/ 输入输出重定向的作用: 输出重定向就是把命令的执行结果保存到

[shell]shell运算

算术运算 首先这里所说的算术运算是指加法(+), 减法(-),乘法(*),整除(/), 求余(%)四种运算,可以通过添加括号改变优先级,并且只能对整数进行运算(Linux Bash Shell默认不支持浮点数运算) #!/bin/bash val=`expr 2 + 2` #expr 参数要为整数 echo "Total value : $val" a=10 b=-5 c=`expr $a + $b` #+前后空一格,否则输a+b=10+20 echo "a+b=$c&quo

SDK/JDK,Shell/Shell脚本,Apache/APR ,MTK

SDK 软件开发工具包(SoftwareDevelopmentKit) API(Application Programming Interface,应用编程接口)其实就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的 API而使操作系统去执行应用程序的命令(动作). Android SDK 指的是Android专属的软件开发工具包 DLL,即 Dynamic Link Library(动态链接库).在 Windows 环境下含有大量 .dll格式的文件,.dll 文件不能直接执行