分享

Bash Shell编程0-基础知识

 mingjiu 2019-04-29

 版权声明:可以转载,但是请注明出处 https://blog.csdn.net/m0_37194132/article/details/85219943

简介

写个博客系统记录自己学习Bash Shell编程的过程。使用环境为Ubuntu 16.04.5 Gnome,使用bash的版本为4.3.48。
如果你想在虚拟机上安装相同的linux系统可以参考之前的文章写给萌新的教程:win10下使用VMware安装Ubuntu16.04.5 Gnome

5656674-471b435ce0492f6e.png

bash

在学习shell编程之前,我们需要了解一些相关的概念。我们日常所使用的计算机是有很多硬件组合在一起的复杂的系统,这些硬件如CPU、内存、显卡、声卡、键盘、鼠标、显示器等提供基本的计算资源。对于用户而言,直接使用这些硬件资源是繁琐而又复杂的,因而有了各种各样的应用程序帮助用户更好地使用计算机硬件。当使用计算机硬件时,这些应用程序会发生资源申请冲突,因而需要一个特殊的应用程序管理分配硬件资源的申请和使用。这个特殊的"应用程序"就是操作系统,操作系统一直运行在计算机上(通常称为内核,kernel)。操作系统的内核并不直接为我们提供各种问题的解决方案,它提供了大量的服务供应用程序使用以便更好地利用计算机硬件资源。

那么shell又是什么呢?shell字面意思是外壳,刚好与操作系统的内核相对应,它为用户提供了一个访问操作系统服务的接口。在unix/linux中shell既是一个命令解释器也是一门编程语言。作为一个命令行解释器,shell提供了一个用户接口使用各种各样的实用程序工具(比如coreutils、binutils等),而且shell允许我们将这些程序组合起来使用。现在所使用的shell有很多种,比如sh、csh、ksh、dash、bash、fish、zsh等。在最初的unix系统中使用的shell是sh,并且有一个sh的标准。bash是GNU/Linux系统中默认的shell, 它完全兼容sh,这意味着最新sh语法所写的shell脚本可以不加修改地直接使用bash执行。此外,bash吸收借鉴了csh和ksh中的一些特性,比如作业控制、命令行历史等。

注:之后的shell指的基本上都是bash,特殊情况会另外说明。

shell分为两种运行模式:交互式shell和非交互式shell。交互式shell就是在终端上执行,shell接受从键盘的输入并执行。非交互式shell是指shell执行文件中的命令。

shell也提供了一些内置的命令(称为builtins)实现了一些功能,比如cd,break,continue,exec等。

如何查看shell提供的内置命令呢?可以在终端下执行compgen -b。

结果如下:

  1. compgen -b

  2. # 输出结果如下

  3. .

  4. :

  5. [

  6. alias

  7. bg

  8. bind

  9. break

  10. builtin

  11. caller

  12. cd

  13. command

  14. compgen

  15. complete

  16. compopt

  17. continue

  18. declare

  19. dirs

  20. disown

  21. echo

  22. enable

  23. eval

  24. exec

  25. exit

  26. export

  27. false

  28. fc

  29. fg

  30. getopts

  31. hash

  32. help

  33. history

  34. jobs

  35. kill

  36. let

  37. local

  38. logout

  39. mapfile

  40. popd

  41. printf

  42. pushd

  43. pwd

  44. read

  45. readarray

  46. readonly

  47. return

  48. set

  49. shift

  50. shopt

  51. source

  52. suspend

  53. test

  54. times

  55. trap

  56. true

  57. type

  58. typeset

  59. ulimit

  60. umask

  61. unalias

  62. unset

  63. wait

与任何高级语言一样,shell提供变量,流控制结构,引用和函数。Shell提供了专门用于交互式使用的功能,而不是增强编程语言。这些交互式的功能包括作业控制,命令行编辑,命令历史和别名。

shell的第一个程序

交互式

打开终端输入echo "Hello world"

脚本文件

创建一个文件命名为hello.sh
内容如下:

  1. #!/bin/bash

  2. echo "Hello,world"

如果要直接执行,需要为其添加可执行权限chmod +x ./hello.sh
或者用bash解释运行,bash ./hello.sh

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多