初识Shell 现在以 Ubuntu 为例介绍Shell安装: $ sudo aptitude install -y retext git nodejs npm $ sudo ln -fs /usr/bin/nodejs /usr/bin/node $ sudo aptitude install -y calibre fonts-arphic-gbsn00lp $ sudo npm install gitbook-cli -g 下载 $ git clone https://github.com/tinyclub/open-shell-book.git $ cd open-shell-book/ 编译 $ gitbook build // 编译成网页 $ gitbook pdf // 编译成 pdf 关于Shell Shell提供了用户与内核进行交互操作的一种接口。它把用户输入的命令并把它送入内核去执行。 实际上Shell是一个命令解释器,它解释用户输入的命令并且把它们送到内核。非仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,其也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。 每个Linux系统的用户可以拥有他自己的用户界面或Shell,用以满足他们自己专门的Shell需要。 Shell 编程跟java、php等编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。 Linux的Shell种类众多,常见的有: ·Bourne Shell(/usr/bin/sh或/bin/sh) ·Bourne Again Shell(/bin/bash) ·C Shell(/usr/bin/csh) ·K Shell(/usr/bin/ksh) ·Shell for Root(/sbin/sh) 在shell中可以定义函数。函数实际上也是由若干条shell命令组成的,因此它与shell程序形式上是相似的,它非一个单独的进程,而是shell程序的一部分。函数由两部分组成:函数名和函数体。 函数定义的格式为: 函数名() { 命令集合 } 或者 function 函数名() { 命令集合 } Shell函数和shell程序比较相似,它们的区别在于: Shell程序在子Shell中运行,而Shell函数在当前Shell中运行。因此在当前Shell中可以看到Shell函数对变量的修改。 现在关注的是 Bash,也就是 Bourne Again Shell,由于易用和免费,Bash在日常工作中被广泛使用。同时,Bash也是大多数Linux系统默认的Shell。 #!告诉系统其后路径所指定的程序即是解释此脚本文件的Shell程序。 我们现在写一个shell脚本,打开文本编辑器,新建一个文件first.sh,扩展名为sh代表shell,扩展名可以见名知意,如果你用php写shell 脚本,扩展名就用php好了。 输入一些代码: #!/bin/bash echo "Hello Shell !" "#!" 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。 echo命令用于向窗口输出文本。 运行Shell脚本有两种方法: 作为可执行程序 将上面的代码保存 chmod +x ./first.sh #使脚本具有执行权限 ./first.sh #执行脚本 注意,一定要写成./first.sh,而非first.sh,运行其它二进制的程序也一样,直接写first.sh,linux系统会去PATH里寻找有没有叫first.sh的,而只有/bin, /sbin, /usr/bin,/usr/sbin等在PATH里,你的当前目录通常非在PATH里,所以别写成first.sh,要用./first.sh告诉系统说,就在当前目录找。 作为解释器参数 这种运行方式是,直接运行解释器,其参数就是shell脚本的文件名,如: /bin/sh first.sh /bin/php first.php 这种方式运行的脚本,无需在第一行指定解释器信息,写了也没用。 |
|