从新手到系统管理员(一):理解Linux Shell和基本的Shell脚本

2017年Gdevops全球敏捷运维峰会-成都站(限时优惠),运维派作为本次峰会协办方,您可以点击这里了解详情

本文由 [茶话汇] – [Qing] 编译自 [Avishek Kumar] 转载请注明出处

关于GNU/Linux的架构和shell所处的位置,图片比语言表述的更加清楚,如下图所示。
Understanding-Linux-Shell

理解Linux Shell

Shell:Shell是基于命令行的解释器,它连接用户和操作系统,允许通过编写脚本来执行系统的命令。

进程:用户在系统中运行的任何一个任务都以进程的形式存在。进程比任务要稍微复杂一些。

文件:存储于硬盘之上,包含用户拥有的数据。

X-窗口:Linux运行的一种模式。它可以将显示器分为若干个不同的窗口,允许用户并行做几件事情,并可以通过图形界面的方式从一个任务切换到另一个任务。

字符终端:只能显示字符或者非常简单的图形界面。

会话:登陆系统和登出系统之间的时间。

标准Linux发行版常见的Shell类型

Bourne shell:这是Linux下最常见的shell之一。它是由贝尔实验室的Stephen Bourne编写的。每一个类Unix的系统都至少包含一个与其兼容的shell。Bourne shell的名字叫做“sh”,通常它被放置在/bin/sh。

C shell:它是Bill Joy为伯克利软件发行创建的。它的语法基于C编程语言。它主要被用于交互式终端,很少用于编写脚本语言和系统控制。C shell有很多交互式的命令。

开始娱乐之旅吧!

Linux有成千上万的命令行命令,统统记住这些是不可行的。计算机真正强大的魅力在于其可以简化我们的工作。你可以通过编写脚本语言来自动化你要做的事情。

脚本是保存在文件中的一系列命令的组合。Shell可以读取这些命令并运行它们,如同分别在终端输入它们一样。Shell同时也提供了一些非常有用的特性。这些特性使得脚本变得更加强大。

Shell编程基础

1. 打开一个终端;
2. 查看当前使用的是哪种shell:echo $SHELL;
3. 在Linux下,美元符号($)后面跟着的是shell变量;
4. ‘echo’命令返回你紧随其后输入的内容;
5. 管道符号(|)用来连接不同的命令;
6. #!/bin/sh——被称为shebang。它出现在每个shell脚本的第一行,用来指明这个脚本被/bin/sh执行。

关于Shell脚本

Shell脚本是以”.sh”为后缀的文本文件,它可以被赋予可执行的权限。

编写和执行脚本的过程

1. 打开终端;
2. 通过“cd”命令切换到你想保存shell脚本的目录;
3. 使用“touch”命令创建一个文件,如touch hello.sh
4. 使用“vi hello.sh”或者“nano hello.sh”编辑文件;
5. 赋予hello.sh可执行的权限:chmod 744 hello.sh
6. 运行脚本:sh hello.sh或者./hello.sh

编写第一个脚本

[code language=”bash”]#!/bin/bash
# My first script

echo "Hello World!"[/code]

将上面的内容保存到一个文件,赋予其可执行的权限并运行它,输出结果如下所示:

[code language=”bash”]Hello World![/code]

在上面的代码中:

[code language=”bash”]#!/bin/bash (is the shebang.)
# My first script (is comment, anything following ‘#’ is a comment)
echo “Hello World!” (is the main part of this script)[/code]

编写第二个脚本

这个脚本会打印出你的名字和当前正在运行的进程。

[code language=”bash”]#! /bin/bash
echo "Hello $USER"
echo "Hey i am" $USER "and will be telling you about the current processes"
echo "Running processes List"
ps
[/code]

脚本运行的结果:

[code language=”bash”]Hello tecmint
Hey i am tecmint and will be telling you about the current processes
Running processes List
PID TTY TIME CMD
1111 pts/0 00:00:00 bash
1287 pts/0 00:00:00 sh
1288 pts/0 00:00:00 ps
[/code]

这些还是比较酷的吧!当然,如果你需要更加强大和全面的功能,如稳定性、健壮性、性能和效率,你可以使用其它一些更强大的语言,如C/Perl/Python。

编写第三个脚本

这个脚本演示如何与shell脚本进行交互。

[code language=”bash”]#! /bin/bash
echo "Hey what’s Your First Name?";
read a;
echo "welcome Mr./Mrs. $a, would you like to tell us, Your Last Name";
read b;
echo "Thanks Mr./Mrs. $a $b for telling us your name";
echo "*******************"
echo "Mr./Mrs. $b, it’s time to say you good bye"
[/code]

脚本运行的结果:

[code language=”bash”]Hey what’s Your First Name?
Avishek
welcome Mr./Mrs. Avishek, would you like to tell us, Your Last Name
Kumar
Thanks Mr./Mrs. Avishek Kumar for telling us your name
******************************************************
Mr./Mrs. Kumar, it’s time to say you good bye
[/code]

第一部分到此结束,请继续关注我们后续的四个部分。

网友评论comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注

  1. […] [茶话汇注]第一部分的译文链接:这里 […]

Copyright © 2012-2017 YUNWEIPAI.COM - 运维派 - 粤ICP备14090526号-3
扫二维码
扫二维码
返回顶部