Shell,Bash和脚本:有关Shell脚本的全部内容。

在这个新机会中(条目8)“学习Shell脚本” 我们将更多地关注理论而非实践。 也就是说,我们不会安装或研究代码,也不会安装特定的软件(程序包),而是深入研究什么是 Shell脚本 正确地说,是通过下面显示的一些小而直接的问题的答案来澄清到目前为止所学的大部分内容,这些内容并不直接涉及已编程的内部代码:

Shell脚本

什么是GNU / Linux操作系统中的Shell?

在西班牙语中表示CONCHA的外壳(外壳,盖子,保护层)。 在操作系统中应用此术语是指操作系统的命令解释器。 通常,它是一个高性能的文本界面,以终端(控制台)的形式显示,并且主要用于以下三个重要的工作区域:

1.-管理操作系统,
2.-运行应用程序并与之交互,以及
3.-用作基本的编程环境。

所以, GNU / Linux的 通过终端编辑其配置文件,可以更加有效地管理它们。 通常,这些位于目标路径上: «/等等”,并且位于每个应用程序的特定目录中。 例如程序 星际 (代表Linux Loader)是通过编辑位于以下位置并称为的文本文件来配置的 “ /Etc/lilo/lilo.conf”。 对于程序(应用程序),如果在所有可执行文件的路径(默认路径)中找到了可执行文件,则通过写入可执行文件的名称来启动(执行/激活)它们(通常是这样)。 “ / Usr / bin” ,或键入可执行文件的名称,并在前面加上: ./,位于它们所在的目录中。

所有这一切对于任何Shell用户都是众所周知的。 但是,它作为编程环境的功能并不是众所周知的。 Shell中制作的脚本(程序)不需要编译。 命令行管理程序逐行解释它们。 因此,这些被称为或称为Shells脚本,范围从简单的命令到用于启动OS本身的一系列复杂的指令。 它们具有相当干净的语法(构造,排序)(很明显),使它们成为入门编程世界的良好起点。

什么是Shell脚本?

它是使用操作系统的Shell(最好是)或文本编辑器(图形或终端)设计和创建Script(任务自动化文件)的技术(技能/技巧)。 这是一种通常被解释的编程语言。 也就是说,虽然大多数程序都是经过编译(编码)的,但是由于它们在执行(编译过程)之前已被永久转换为特定的(特殊)代码,因此shell脚本保持其原始形式(其代码)文本源),并在每次执行时按命令进行解释。 尽管可能不常见,但也可以编译脚本。

基于Shell脚本编程的程序的特征是什么?

1.-它们易于编写(编程),但执行时处理成本较高。

2.-他们使用解释器而不是编译器来运行

3.-它们与用其他编程语言编写的组件具有通信关系。

4.-包含它们的文件以纯文本格式存储。

5.-最终设计(代码)通常小于编译后的编程语言中的等效代码。

Shell脚本下最受欢迎的语言类型是什么?

1.-任务和外壳控制语言:

a)cmd.exe(Windows NT,Windows CE,OS / 2),
b)COMMAND.COM(DOS,Windows 9x),
c)csh,Bash,AppleScript,sh,
d)通过Windows脚本宿主的JScript,
e)通过Windows脚本宿主的VBScript,
f)REXX等。

2.- GUI脚本(宏语言):

a)自动热键,
b)AutoIt,
c)期望,
d)自动化器等。

3.-特定应用程序的脚本语言:

a)Flash中的ActionScript,
b)MATLAB,
c)mIRC脚本,
d)QuakeC等。

4.- Web编程(用于动态页面):

a)在服务器端:

-PHP,
-ASP(Active Server Pages),
-JavaServer Pages
-ColdFusion,
-IPTSCRAE,
-套索
-MIVA脚本,
-SMX,
-XSLT等。

b)在客户端:

-JavaScript
-JScript,
-VBScript,
-Tcl等。

5.-文字处理语言:

-AWK,
-Perl,
-口渴,
-XSLT,
-重击,等等。

6.-通用动态语言:

-APL,
-嘘
迪伦
-铁素体
-Groovy,
-IO
-Lisp
卢阿
-腮(M),
-NewLISP,
-Nuva,
-Perl,
-PHP,
-Python
露比
-方案
- 短暂聊天,
-超级卡,
-Tcl,
-革命,等等。

什么是GNU / Linux中的Bash?

它是一个计算机程序,其功能是解释订单。 它基于 Unix外壳 它支持 POSIX。 它是为GNU项目编写的,是大多数Linux发行版的默认外壳。

什么是GNU / Linux中的Shell脚本?

Shell脚本 它们非常有用。 编写我们所拥有的那些需求,然后编辑可以为我们完成这项工作的脚本是一个好主意。 现在,是时候问问自己脚本到底是什么了。 它是一个文本文件,其中包含一系列shell命令,系统从上到下以有序的方式执行这些命令。 要编辑它们,您仅需要一个文本编辑器,例如Emacs,Vi,Nano等。 它们以“ .sh”扩展名保存(在某些情况下没有扩展名),并使用以下命令从命令行管理程序运行:sh scriptname.sh。 脚本的行为与Shell命令相同。

我个人习惯的教学方法 “学习Shell脚本” 这是非常实用和直接的,即检查一个功能完整的脚本,将其分解,逐句,逐行,逐个命令,逐个变量地研究它,直到您了解每个元素如何单独工作以及如何将其包含在代码中一般。 有点 逆向工程或软件再工程。 所有这些都是为了适当地利用知识,对其进行改进(优化)并进行共享,以实现集体利益以及更好地管理和优化免费操作系统。

它如何在GNU / Linux Shell中运行和工作?

使用Shell的第一步是运行Shell。 似乎是不言而喻的存在是有原因的。 在某些面向最终用户的GNU / Linux发行版中,shell相当隐蔽。 通常将其称为:Konsole,Terminal,X Terminal或类似名称。 另一种选择是使用虚拟控制台。 使用:Ctrl + Alt + f1,或f2,或f3至f7或f8,具体取决于您使用的GNU / Linux发行版。 在GNU / Linux中,最常用的Shell是Bash,尽管还有其他一些,例如ksh或C Shell。 就我而言,我的出版物非常特别,我使用Bash Shell。

给定在Bash Shell中制作的脚本称为 hello_world.sh 可以解释以下内容:

内容:

#!/斌/庆典
回声你好世界

分解:

脚本的第一行
#!/斌/庆典

指示脚本应运行的程序。 如果找不到该程序,则会发生错误。

脚本第二行
回声你好世界

使用Hello World参数执行echo命令,使它们显示在屏幕上。

执行: 我们可以通过两种方式运行脚本

调用解释器以运行脚本:
#bash hello_world.sh

它也可以运行为:
#sh hello_world.sh

但是由于未调用正确的Shell,因此它可能会工作一半。 理想情况下,在第一行中调用的Shell是用于执行它的Shell。

您还可以直接运行脚本,如下所示:
#./hello_world.sh

注意: ./表示从当前目录运行。

剩下要分析的是您插入其中的代码。 我希望您像往常一样(根据学习和知识的需求,比其他人更喜欢)这一系列的 Shell脚本.

网路上有许多关于这个主题的好连结,但我给您留在这里的这份小指南 DesdeLinux净 还有这个 外部指南.

直到下一篇文章!


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   第四天

    Lilo .. Linux Loader ..其余的非常好的信息..谢谢.. salu2 d4ny.-

  2.   Ing。Jose Albert

    很快向所有正在学习“学习Shell脚本”在线课程的人致以问候,我们将继续使用其他基本脚本来继续分配知识并将其社会化。

    我希望您能保持关注,因为很快我将开始使用更高级的代码,但尽管其复杂性也以可视化的方式公开。

    请记住,使用Shell脚本,您可以使用很小的文件来完成许多跨平台的复杂任务(不同发行版)。 我将把这个小屏幕录像留给您,我将很快教给那些继续看这门课程的人,而只有50Kb的承诺将带来很多收获! 它只是Shell脚本只能完成的一半。

    LPI-SB8测试ScreenCast(LINUX POST安装-脚本BICENTENARIO 8.0.0)
    (lpi_sb8_adecuación-audiovisual_2016.sh/ 43Kb)

    参见截屏视频: https://www.youtube.com/watch?v=cWpVQcbgCyY

    1.    阿尔贝托·卡多纳(Alberto Cardona)

      您好,您的贡献令人难以置信,非常感谢!
      我有点怀疑,我可以用bash编写编译器吗?
      或者至少是词法分析器?
      有力量吗?

  3.   Ing。Jose Albert

    很快向所有正在学习“学习Shell脚本”在线课程的人致以问候,我们将继续使用其他基本脚本来继续占用知识并将其社会化。 我希望您能保持关注,因为很快我将开始使用更高级的代码,但尽管其复杂性也以可视化的方式公开。

    请记住,使用Shell脚本,您可以使用很小的文件来完成许多跨平台的复杂任务(不同发行版)。 我将把这个小屏幕录像留给您,我将很快教给那些继续看这门课程的人,而只有50Kb的承诺将带来很多收获! 它只是Shell脚本只能完成的一半。

    LPI-SB8测试ScreenCast(LINUX POST安装-脚本BICENTENARIO 8.0.0)
    (lpi_sb8_adecuación-audiovisual_2016.sh/ 43Kb)

    参见截屏视频: https://www.youtube.com/watch?v=cWpVQcbgCyY

  4.   阿尔贝托

    嗨何塞,
    首先,感谢您分享您的知识。 您的文章非常有趣。

    两件事,我认为使用双引号“ Hello World”并在出口0处获得脚本的干净输出非常重要。

  5.   Ing。Jose Albert

    感谢您的贡献,在下一个脚本中,您将看到出口0,中断等的使用!

  6.   威兰德

    问候。
    非常有趣,您看起来很简单; 现在,我发现我无法在Linux上使用cron或在shutdown / suspend / hibernate上进行编程,因此会使用rtcake命令自动启动,我不知道使用该命令的脚本是否会有所帮助,否则它们将遵循cron并且什么都不做,或者根本无法完成,或者做起来不同,或者我非常有野心,但是在Windows上,这样做相对简单。 我想迁移到Linux,但是安排关机/暂停/休眠并自行启动PC对我来说很重要。 问候。

  7.   威兰德

    谢谢,我会仔细阅读它们,对我有帮助。 问候。

  8.   爱德华多·库莫(Eduardo Cuomo)

    前一段时间我开始了一个项目,我认为这是其中的一种。 它是Framewok Bash的原型。 它只需要系统上的Bash。
    如果其他人有兴趣,请他们尝试并合作!

    https://github.com/reduardo7/bashx

    的问候!

    1.    蜥蜴

      亲爱的 Eduardo,我认为这是一个很棒的项目,也许您可​​以与整个社区分享 desdelinux,请记住,您可以在我们的网站上发布有关您的项目的文章,如果您不知道如何操作,我建议您阅读 https://blog.desdelinux.net/guia-redactores-editores/ 在哪里创建文章的最佳实践 desdelinux 以及要执行的程序。对于社区来说,首先了解项目的好处,然后学习如何做此类事情可能是非常好的。我们邀请您和其他人与我们以及我们周围的大型社区分享他们的项目。

  9.   米格尔·乌罗萨·鲁伊斯(Miguel Urosa Ruiz)

    你好,早上好。
    我是Linux机器管理领域的新手,我想知道您对此有何建议:ksh,bash,perl,php,python...。
    非常感谢和问候。
    米格尔