初识Shell与Shell脚本

初识Shellphp

Shell 是一个用 C 语言编写的程序,Shell 既是一种命令语言,又是一种程序设计语言。java

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户经过这个界面访问操做系统内核的服务。实际上,shell是一个提供给用户用来交互的软件shell并非内核的一部分,却经过系统调用来执行程序,好比建立文件等linux

Shell 脚本:shell

Shell 脚本(shell script),是一种为 shell 编写的脚本程序。shell 和 shell script 是两个不一样的概念。编程

Shell 版本:ubuntu

 

Shell 环境:vim

Shell 编程跟 java、php 编程同样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就能够了。bash

Linux 的 Shell 种类众多,常见的有:编辑器

1Bourne Shell(/usr/bin/sh或/bin/sh)ide

2Bourne Again Shell(/bin/bash)--Bash (用和免费,Bash 在平常工做中被普遍使用。同时,Bash 也是大多数Linux 系统默认的 Shell

3C Shell(/usr/bin/csh)

4K Shell(/usr/bin/ksh)

5Shell for Root(/sbin/sh)

……

在通常状况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,因此,像 #!/bin/sh,它一样也能够改成 #!/bin/bash。

#! 告诉系统其后路径所指定的程序便是解释此脚本文件的 Shell 程序。

Shell脚本:

打开文本编辑器(可使用 vi/vim 命令来建立文件),新建一个文件 test.sh,扩展名为 sh(sh表明shell),扩展名并不影响脚本执行,见名知意就好,若是你用 php 写 shell 脚本,扩展名就用 php 好了。

shell一般都是一些交互指令,你经过键盘输入指令,shell执行而且返回结果。当有大量命令须要执行时,一条一条交互就显得太没有效率,这时候就能够把这些指令存入文本文件,而且能够添加控制语句,像程序流程那样控制指令的运行。这就是shell script。

例如:

#!/bin/bash

echo "Hello World !"

#! 是一个约定的标记,它告诉系统这个脚本须要什么解释器来执行,即便用哪种 Shell。

echo 命令用于向窗口输出文本。

如何查看系统支持的shell:

$ cat /etc/shells

查看当前正在使用的shell: 

$ echo $SHELL

运行 Shell 脚本有两种方

一、做为可执行程序

将上面的代码保存为 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 告诉系统说,就在当前目录找。

二、做为解释器参数

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

/bin/sh test.sh

/bin/php test.php

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

sh/bash/csh/Tcsh/ksh/pdksh等shell的区别

     ·     sh(全称 Bourne Shell): 是UNIX最初使用的 shell,并且在每种 UNIX 上均可以使用。
    Bourne Shell 在 shell 编程方面至关优秀,但在处理与用户的交互方面作得不如其余几种 shell。

     ·     bash(全称 Bourne Again Shell): LinuxOS 默认的,它是 Bourne Shell 的扩展。
    与 Bourne Shell 彻底兼容,而且在 Bourne Shell 的基础上增长了不少特性。能够提供命令补全,命令编辑和命令历史等功能。它还包含了不少 C Shell 和 Korn Shell 中的优势,有灵活和强大的编辑接口     ,同时又很友好的用户界面。

     ·      csh(全称 C Shell): 是一种比 Bourne Shell更适合的变种 Shell,它的语法与 C 语言很类似。

     ·      Tcsh: 是 Linux 提供的 C Shell 的一个扩展版本。
    T csh 包括命令行编辑,可编程单词补全,拼写校订,历史命令替换,做业控制和相似 C 语言的语法,他不只和 Bash Shell 提示符兼容,并且还提供比 Bash Shell 更多的提示符参数。

     ·    ksh (全称 Korn Shell): 集合了 C Shell 和 Bourne Shell 的优势而且和 Bourne Shell 彻底兼容。

     ·    pdksh: 是 Linux 系统提供的 ksh 的扩展。
   p dksh 支持人物控制,能够在命令行上挂起,后台执行,唤醒或终止程序。

 ubuntu(linux)下 source、sh、bash、./ 执行脚本的区别是什么?

1. source命令用法:

source FileName

做用:在当前 bash 环境下读取并执行 FileName 中的命令。该 filename 文件能够无 "执行权限"。

注:该命令一般用命令 . 来替代。

2. sh、bash的命令用法:

sh FileName或

bash FileName

做用:打开一个子 shell 来读取并执行 FileName 中命令。该 filename 文件能够无 "执行权限"。

注:运行一个shell脚本时会启动另外一个命令解释器。

三、./的命令用法:

./FileName

做用: 打开一个子 shell 来读取并执行 FileName 中命令,该 filename 文件须要 "执行权限"。

注:运行一个 shell 脚本时会启动另外一个命令解释器。

 

如何写一个shell脚本:

根据如下步骤咱们来写一个shell脚本: 
1. 使用编辑器,能够是vi/vim,emacs,固然也能够是gedit , sublime这一类的软件 
2. 编辑好你的shell 脚本后,为你的脚本添加可执行权限: 
语法格式:chmod 权限 脚本名称 
例:

$ chmod +x your-script-name

$ chmod 755 your-script-name

 

Note: 755意味着user拥有读写执行的权限,group和other只拥有读和执行权限,更多有关的知识可查看Linux文件权限。 
3. 执行shell脚本 
语法格式:

bash your-script-name

sh your-script-name

./your-script-name

通常你们都是用 ./your-script-name 来执行, . 意味着当前文件夹内,可是若是仅仅使用 . your-acript-name,shell不会另起一个进程执行你的命令,意味着执行完你的脚本后,shell就会退出,你能够在你的机器上试一下。

好吧,让咱们开始写一个shell脚本吧! 
使用vim新建一个脚本vim fisrt.sh, 内容以下:

## My fisrt shell script#

clear

echo "Hello,shell!"

执行 ./fisrt.sh ,很明显没法运行。添加执行权限:

$ chmod 755 fisrt.sh$ ./fisrt.sh

脚本命令

含义

My fisrt shell script

在shell脚本里面起到注释的做用,单行注释

clear

清屏命令

echo “Hello,shell!”

向屏幕输出内容

下面写个更复杂的吧,vim ginfo:

 #

 #

 # Script to print user information who currently login , current date & time

 #

 clear

 echo "Hello $USER"

 echo -e "Today is \c ";date

 echo -e "Number of user login : \c" ; who | wc -l

 echo "Calendar"

 cal

 exit 0

添加可执行权限后,./ginfo输出如图: 

 

上面这段脚本输出当前用户,打印当前时间,输出日历信息。 

相关文章
相关标签/搜索