26 个必读的 Shell 脚本面试问题和答案 [适合新手和有经验者]

已发表: 2020-12-17

Shell 是命令行解释器或设计用于运行命令、shell 脚本和程序的完整环境。 将命令输入 shell 后,它将根据您的输入执行程序。

本质上,它翻译输入命令并将它们转换为与内核兼容的语言。 Shell 脚本是指由 Unix Shell 运行的程序中的命令列表。 该脚本包括按执行顺序定义命令的注释。

如果介绍让您想了解更多关于 Shell Scripting 的信息,请继续滚动到最后——我们编制了 Shell Scripting 面试问题和答案列表,以帮助您启动学习过程! 如果您想了解有关数据科学的更多信息,请查看我们的数据科学课程。

目录

Shell 脚本面试问题和答案

  1. Shell 脚本的优点是什么?

Shell 脚本的最大好处是:

  • 它允许您创建自定义操作系统以最适合您的要求。
  • 它使您可以根据所使用的平台设计软件应用程序。
  • 它节省时间,因为它有助于自动化系统管理任务。

2.什么是Shell变量?

Shell 变量构成了 Shell 程序或脚本的核心部分。 这些变量允许Shell 在Shell 程序中存储和操作信息。 Shell 变量通常存储为字符串变量。

3. 列出Shell Scripting 中使用的变量类型。

通常,Shell 脚本有两种类型的变量:

  • 系统定义的变量——它们由操作系统(Linux)创建并以大写字母定义。 您可以使用 Set 命令查看它们。
  • 用户定义的变量——这些是由系统用户创建和定义的。 您可以使用 Echo 命令查看变量值。
  1. 如何使变量不可更改?

您可以使用只读方式使变量不可更改。 假设您希望变量“a”的值保持为 5 并保持不变,因此您可以像这样使用 readonly:

$ a=5

$只读一个

  1. 命名不同类型的壳。

Shell有四种核心类型,即:

  • 伯恩壳牌 (sh)
  • C 外壳 (csh)
  • Korn 壳牌 (ksh)
  • Bourne Again Shell (bash)
  1. 解释“位置参数”。

位置参数是由 Shell 定义的变量。 它们用于通过在命令行中指定参数来将信息传递给程序。

  1. UNIX 环境中有多少个 Shell 和内核可用?

通常,UNIX 环境只有一个内核。 但是,有多个可用的 Shell。

  1. 您是否需要单独的编译器来执行 Shell 程序?

不,您不需要单独的编译器来执行 Shell 程序。 由于 Shell 本身是 shell 程序中的命令行并执行它们。

  1. 如何在 Shell Scripting 中修改文件权限?

您可以通过 umask 修改文件权限。

  1. 什么是“。” (点)开头的文件名表示?

以“.”开头的文件名是一个隐藏文件。 通常,当您尝试列出 Shell 中的文件时,它会列出除隐藏文件之外的所有文件。 但是,隐藏文件存在于目录中。 如果您想查看隐藏文件,您必须运行带有“-a”标志的 Is 命令。

  1. 如何在 Linux 中创建快捷方式?

您可以通过两个链接在 Linux 中创建快捷方式:

硬链接——这些链接链接到文件的 inode。 它们始终与文件存在于同一文件系统中。 即使您删除了原始文件,硬链接也不会受到影响。

软链接——这些链接链接到文件名。 它们可能与文件驻留在同一文件系统上,也可能不驻留在同一文件系统上。 如果删除原始文件,软链接将变为非活动状态。

12. 命名 Linux 进程的不同阶段。

通常,Linux 进程会遍历四个阶段:

  • 等待——在这个阶段,Linux 进程必须等待必要的资源。
  • 运行——在这个阶段,进程被执行。
  • 已停止 – 成功执行后,Linux 进程停止。
  • Zombie – 在最后一步,即使进程不再运行,它在进程表中仍然处于活动状态。
  1. “回声”是否有替代命令?

是的, tput 是 echo 命令的替代品。 tput 命令允许您控制输出在屏幕上的显示方式。

  1. 一个文件系统包含多少块?

一个文件系统有四个块:

  • 超级块——该块提供有关文件系统状态的信息,例如块大小、块组大小、使用信息、空/填充块及其各自的计数、inode 表的大小和位置等。
  • Bootblock – 该块包含引导加载程序,该程序在用户引导主机时执行。
  • 数据块——这个块包括文件系统的文件内容。
  • 索引节点表——UNIX 将所有元素都视为文件,所有与文件相关的信息都存储在索引节点表中。

必读:Python 面试题

  1. 命名vi编辑器的三种操作模式。

三种操作模式是:

  • 命令模式 - 此模式将用户按下的任何键视为编辑器命令并将其解释为编辑器命令。
  • 插入模式 - 您可以使用此模式插入新文本、编辑现有文本等。
  • Ex-command 模式——用户可以在命令行中输入所有命令。
  1. 定义“控制指令”。 Shell 中有多少种控制指令可用?

控制指令是允许您指定脚本中的不同指令应如何执行的命令。 因此,它们的主要目的是确定 Shell 程序中的控制流。

Shell 有四种类型的控制指令:

  • 顺序控制指令强制指令按照它们在程序中的相同顺序执行。
  • 使计算机能够确定接下来应该执行哪条指令的选择/决定控制指令。
  • 允许计算机重复运行一组语句的重复/循环控制指令。
  • 当您需要从一系列替代方案中进行选择时,使用案例控制说明。
  1. 定义“IFS”。

IFS 是指内部字段分隔符。 它是一个系统变量,其默认值为空格、制表符,后跟一个新行。 IFS 表示一个字段或单词在一行中的结束位置和另一个开始的位置。

  1. 定义“元字符”。

Shell 由元字符组成,元字符是数据字段或程序中的特殊字符,提供有关其他字符的信息。 例如,Shell 中的“ls s*”命令列出所有以字符“s”开头的文件。

  1. 区分 $* 和 $@。

$* 将一组完整的位置参数视为单个字符串,而 $@ 将每个带引号的参数视为单独的参数。

另请阅读:印度的 Python 开发人员薪水

21.在Shell Scripting中编写while循环的语法。

在 Shell Scripting 中,当您想要多次重复其命令块时使用 while 循环。 “while”循环的语法是:

while [测试条件]

命令…

完毕

  1. break 和 continue 命令有何不同?

break 命令用于在执行中退出循环。 您可以使用 break 命令退出任何循环命令,包括 until 和 while 循环。 另一方面, continue 命令用于退出循环的当前迭代而不离开完整的循环。

23. 为什么我们在Shell Scripting 中使用Shebang 行?

Shebang 行位于 Shell 脚本/程序的顶部。 它通知用户执行脚本的引擎的位置。

这是 Shebang 线的示例:

#!/bin/sh

克拉 1 美元

  1. 你可以在一个 Shell 中执行多个脚本吗?

是的,可以在一个 Shell 中执行多个脚本。 多个脚本的执行允许您从另一个脚本调用一个脚本。 为此,您必须在希望调用它时提及要调用的脚本名称。

  1. 您应该使用哪个命令来了解系统运行了多长时间?

您需要使用 uptime 命令来了解系统运行了多长时间。 以下是 uptime 命令的示例:

u/user1/Shell_Scripts_2018> 正常运行时间

  1. 您应该使用哪个命令来检查磁盘使用情况?

您可以使用以下三个命令来检查磁盘使用情况:

  • df - 用于检查可用磁盘空间。
  • du - 用于检查目录磁盘使用情况。
  • dfspace – 它检查以兆字节 (MB) 为单位的可用磁盘空间。

27. Crontab 是什么意思?

Crontab 是 cron table 的缩写,其中 Cron 是一个执行任务的作业调度器。 Crontab 是您要按计划运行的命令列表,以及您要用于管理该列表的命令。

28. 什么时候不应该使用 Shell Scripting?

我们不应该在这些情况下使用 Shell Scripting:

  • 如果任务非常复杂,例如编写完整的工资单处理解决方案,我们不应该使用 Shell Scripting。
  • 如果工作需要高水平的生产力,我们不应该使用 Shell Scripting。
  • 如果工作需要多个软件解决方案,我们不应该使用 Shell Scripting。

29. 如何比较 Shell 脚本中的字符串?

我们使用 test 命令来比较文本字符串。 它通过比较每个字符串中存在的每个字符来比较文本字符串。

阅读:数据工程师面试问题

30. 文件系统是什么意思?

文件系统是文件的集合以及与这些文件相关的信息。 它控制如何检索和存储数据。 如果没有文件系统,存储中的数据将只是大量数据,无法判断一个数据在哪里结束,另一个数据从哪里开始。

31. 你能区分单引号和双引号吗?

是的。 我们在不想执行变量对值的评估时使用单引号。 另一方面,我们使用双引号来执行变量对值的评估。

32. GUI 脚本是什么意思?

我们使用 GUI 来控制计算机及其应用程序。 通过 GUI 脚本,我们可以根据操作系统处理各种应用程序。

33. 你对 Shell 脚本中的 Super Block 了解多少?

超级块是具有特定文件系统记录的程序。 它包含的特征包括块大小、填充块和空块及其各自的计数、inode 表的位置和大小、使用信息、磁盘块映射等。

34、社帮线的重要性是什么?

Shebang 行仍位于脚本的顶部。 它提供有关执行脚本的引擎所在位置的信息。

35. 提供一些最流行的 UNIX 命令。

以下是一些最流行的 UNIX 命令:

  • cd – cd 命令在用作 $ cd 时将目录更改为用户的主目录。 您可以使用它来更改目录以通过 $ cd test 进行测试。
  • ls – ls 命令在用作 $ ls 时列出当前目录中的文件。 您可以将其用作 $ ls -lrt 来以长格式记录文件。
  • rm – rm 命令将在您将其用作 $ rm fileA 时删除名为 fileA 的文件。
  • cat – 当您将文件用作 $ cat 文件名时,此命令将显示文件中存在的内容。
  • mv – mv 命令可以重命名或移动文件。 例如,$ mv fileA fileB 命令将移动名为 fileA 和 fileB 的文件。
  • date – date 命令显示当前时间和日期。
  • grep – grep 命令可以搜索文件中的特定信息。 例如,$ grep Hello fileA 命令将搜索出现单词“Hello”的行。
  • finger – finger 命令显示有关用户的信息。
  • ps – ps 命令显示当前在您的机器上运行的进程。
  • man – man 命令显示有关指定命令的联机帮助或手册。 例如,$ ms rm 命令将显示 rm 命令的在线手册。
  • pwd – pwd 命令显示当前工作目录。
  • wc – wc 命令计算文件中存在的字符、单词和行数。
  • 历史 - 历史命令显示您最近使用的所有命令的列表。
  • gzip – gzip 命令压缩指定的文件。 例如,$ gzip fileA 命令将压缩 fileA 并将其更改为 fileA.gz。
  • logname – logname 命令将打印用户的日志名称。
  • head – head 命令显示文件中存在的第一行。 例如,$ head -15 fileA 命令将显示 fileA 的前 15 行。

附加说明:这是最关键的 Shell 脚本面试问题之一。 我们建议准备一份更详尽的 UNIX 命令列表,因为在面试中会问到这个问题的许多版本。

必读:数据科学面试题

36. C Shell 比 Bourne Shell 好在哪里?

C Shell 优于 Bourne Shell,原因如下:

  • C Shell 允许您为命令设置别名。 这意味着用户可以为命令提供任何所需的名称。 当用户必须多次使用冗长的命令时,这是非常有益的。 用户可以键入指定的名称,而不是多次键入命令的长名称。 它节省了大量的时间和精力,使过程更加高效。
  • C Shell 具有命令历史功能,其中 C Shell 会记住所有以前使用的命令。 您可以使用此功能来避免多次键入相同的命令。 它大大提高了效率。

由于以上两个原因,使用 C Shell 比 Bourne Shell 更有优势。

37. 编写Shell Scripts 有什么必要?

Shell 脚本有许多优点,使其变得至关重要。 它从用户那里获取输入,将其归档并显示在屏幕上。 此外,它还允许您制作自己的命令并自动执行简单的日常任务。 您还可以使用 Shell 脚本自动执行系统管理任务。 Shell 脚本可以为您节省大量精力和时间,从而使您的流程更加高效。 因此,它非常重要并被广泛使用。

结论

我们希望这 26 个 Shell Scripting 面试问题和答案能帮助您打破 Shell Scripting 的僵局,为您的下一次面试做好准备!

如果您想了解数据科学,请查看 IIIT-B 和 upGrad 的数据科学执行 PG 计划,该计划是为在职专业人士创建的,提供 10 多个案例研究和项目、实用的实践研讨会、行业专家的指导、1与行业导师一对一,400 多个小时的学习和顶级公司的工作协助。

什么是 shell 脚本?

Shell 脚本是编写脚本/代码以自动执行单调任务的过程。 您可以构建一个脚本来自动执行一系列依次运行的指令,而不是一个接一个地输入命令 n 次。 shell 脚本的基本阶段是编写脚本,使其可被 shell 访问,并授予 shell 执行权限。 Shell 脚本以 ASCII 文本编写并包含 ASCII 文本。 它们是使用文本编辑器、文字处理器或图形用户界面 (GUI) 创建的。 脚本的内容由一系列以 shell 可以理解的语言编写的命令组成。 完成后,该文件将使用扩展名保存在外壳可访问的位置。

shell脚本有哪些应用?

Shell 脚本编写简单而有效。 它在脚本中使用与在 shell 命令行中相同的语法,从而消除了任何歧义。 对于一次输入一行需要很长时间才能完成的重复性活动,shell 脚本非常方便。 用户可以将 shell 脚本用于多种目的,例如自动编译代码、运行程序或建立编程环境、完成批处理和操作文件,以及连接现有程序、执行例行备份和监控系统。

shell脚本是个好职业吗?

Shell 脚本用于自动化、编程、系统管理杂务、应用程序自动化、包设置、验证自动化、系统中的数据备份和恢复等各个领域。因此,Shell 脚本是每个公司 IT 部门的重要组成部分. 此外,它对个人的整个 IT 职业生涯都有帮助。 Shell 脚本编写的平均年薪为 6,39,000 卢比,是一个很好的职业,其学习者前景广阔。 大多数 IT 专业人员每天都将它用于适度的自动化杂务,因为它可以节省大量时间。