Linux Shell和Shell脚本简介

如果你使用的是任何主要的操作系统,你都会间接地与之交互 .如果您运行的是Ubuntu、Linux Mint或任何其他Linux发行版,则每次使用终端时都会与shell进行交互。在本文中,我将讨论linux shell和shell脚本,因此在理解shell脚本之前,我们必须熟悉以下术语-

null
  • 内核
  • 航空站

      什么是内核

      内核是一个计算机程序,它是计算机操作系统的核心,可以完全控制系统中的一切。它管理Linux系统的以下资源——

      • 文件管理
      • 过程管理
      • I/O管理
      • 内存管理
      • 设备管理等。
          人们经常错误地认为 托瓦兹 他开发了Linux操作系统,但实际上他只负责Linux内核的开发。 完整的Linux系统=内核+ GNU 系统实用程序和库+其他管理脚本+安装脚本。

          什么是贝壳

          shell是一种特殊的用户程序,它为用户提供一个使用操作系统服务的接口。Shell接受用户可读的命令,并将其转换为内核可以理解的内容。它是一种命令语言解释器,执行从键盘或文件等输入设备读取的命令。shell在用户登录或启动终端时启动。

          linux shell

          命令

          壳牌大致分为两类:

          • 命令行Shell
          • 图形外壳

          命令行Shell

          用户可以使用命令行界面访问Shell。一个叫做 航空站 在linux/macOS或 命令提示符 在Windows操作系统中,输入人类可读的命令,如“cat”、“ls”等,然后执行。结果随后在终端上显示给用户。Ubuntu 16.4系统中的终端如下所示——

          linux command line

          linux命令行

          在上面的截图中 “ls” 指挥 “-l” 选项被执行。

          它将以长列表格式列出当前工作目录中的所有文件。 对于初学者来说,使用命令行shell有点困难,因为很难记住这么多命令。它非常强大,允许用户将命令存储在文件中并一起执行。这样,任何重复的任务都可以轻松地自动化。这些文件通常被称为 批处理文件 在窗户和 Linux/macOS系统中的脚本。

          图形外壳

          图形shell通过允许打开、关闭、移动和调整窗口大小等操作,以及在窗口之间切换焦点,提供了基于图形用户界面(GUI)操作程序的方法。Windows操作系统或Ubuntu操作系统可以被认为是一个很好的例子,它们为用户提供GUI,以便与程序进行交互。用户不需要为每个操作键入命令。Ubuntu系统中的典型GUI——

          GUI shell

          GUI外壳

          Linux系统有几种shell,如——

          每个shell执行相同的任务,但理解不同的命令,并提供不同的内置函数。

          Shell脚本

          Shell通常是交互式的,这意味着它们接受来自用户的命令作为输入并执行它们。然而,有时我们想要常规地执行一系列命令,所以我们每次都要在终端中输入所有命令。 由于shell也可以从文件中获取命令作为输入,我们可以将这些命令写入文件,并在shell中执行它们,以避免重复工作。这些文件称为 Shell脚本 Shell程序 .Shell脚本与 批处理文件 在MS-DOS中。每个shell脚本都保存为 文件扩展名。 我的脚本。嘘

          shell脚本的语法与任何其他编程语言一样。如果你以前有过Python、C/C++等编程语言的经验,那么就很容易开始使用它。 shell脚本包含以下元素——

          • Shell关键字–if、else、break等。
          • Shell命令–cd、ls、echo、pwd、touch等。
          • 功能
          • 控制流量——如果。。然后除此之外,还有外壳和外壳循环等。

          为什么我们需要shell脚本

          编写shell脚本有很多原因——

          • 避免重复性工作和自动化
          • 系统管理员使用shell脚本进行例行备份
          • 系统监控
          • 向shell添加新功能等。

          shell脚本的优点

          • 命令和语法与直接在命令行中输入的完全相同,所以程序员不需要切换到完全不同的语法
          • 编写shell脚本要快得多
          • 快速启动
          • 交互式调试等。

          shell脚本的缺点

          • 容易出现代价高昂的错误,一个错误就可以更改命令,这可能是有害的
          • 执行速度慢
          • 语言语法或实现中的设计缺陷
          • 不太适合大而复杂的任务
          • 提供与其他脚本语言不同的最小数据结构。等

          使用Bash shell编写shell脚本的简单演示

          如果你在终端上工作,你会在目录中深入遍历一些东西。然后,对于路径中接下来的几个目录,我们必须执行如下所示的命令,才能到达“python”目录—— 图片[4]-Linux Shell和Shell脚本简介-yiteyi-C++库

          这是非常令人沮丧的,所以我们为什么不可以有一个实用程序,我们只需要键入目录的名称,我们可以直接跳转到它,而无需执行 “cd…” 一次又一次地指挥。将脚本另存为 “跳,嘘”

          # !/bin/bash
          # A simple bash script to move up to desired directory level directly
          function jump()
          {
          # original value of Internal Field Separator
          OLDIFS=$IFS
          # setting field separator to "/"
          IFS=/
          # converting working path into array of directories in path
          # eg. /my/path/is/like/this
          # into [, my, path, is, like, this]
          path_arr=($PWD)
          # setting IFS to original value
          IFS=$OLDIFS
          local pos=-1
          # ${path_arr[@]} gives all the values in path_arr
          for dir in "${path_arr[@]}"
          do
          # find the number of directories to move up to
          # reach at target directory
          pos=$[$pos+1]
          if [ "$1" = "$dir" ]; then
          # length of the path_arr
          dir_in_path=${ #path_arr[@]}
          #current working directory
          cwd=$PWD
          limit=$[$dir_in_path-$pos-1]
          for ((i=0; i<limit; i++))
          do
          cwd=$cwd/..
          done
          cd $cwd
          break
          fi
          done
          }

          
          

          目前我们无法执行shell脚本,因为它没有权限。我们必须通过键入以下命令使其可执行——

        $ chmod -x path/to/our/file/jump.sh
        

        现在,为了在每一个终端会话上都能使用它,我们必须把它放进去 “.bashrc” 文件 “.bashrc” 是一个shell脚本,每当以交互方式启动Bash shell时,它都会运行。一个项目的目的。bashrc文件提供了一个地方,您可以在这里设置变量、函数和别名,定义我们的提示,并定义我们在打开新终端窗口时想要使用的其他设置。 现在打开终端并键入以下命令——

        $ echo “source ~/path/to/our/file/jump.sh”>> ~/.bashrc
        

        现在打开终端,输入以下命令,尝试新的“跳转”功能-

        $ jump dir_name
        

        就像下面的截图一样—— 图片[5]-Linux Shell和Shell脚本简介-yiteyi-C++库

        学习Bash脚本的资源

        工具书类

        本文由 阿图尔·库马尔 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享