首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

计算机科学研究专家携你初识Shell

初识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脚本有两种方法:

作为可执行程序

将上面的代码保存为first.sh,并cd到相应目录:

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

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200306A051UQ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券