Linux Shell 脚本的10个有用的 面试问题和解答

发布于 2024-11-20 20:03:09 字数 4620 浏览 15 评论 0

首先致上每日问候。Linux 的浩瀚无垠,使人总能每次都提交与众不同的内容。我们“ The-Tecmint-Team ”的工作是给我们的读者提供一些独特的内容,这些内容不仅对他们的职业生涯很有用,同时也让他们增长知识。在此,我们就尝试这么去做,至于能取得多大的成功,就由我们的读者朋友们来判断吧。

Questions on Shell Scripting

我们为各类用户提供了关于 Shell 脚本 语言和 面试问题 的很多教程,可以访问以下链接去阅读这些文章。

在此,作为 shell 脚本的附加内容,在本文中我们将从面试的角度解读与 Linux Shell 相关的问题。

1. 在 shell 脚本成功执行前,如何中断脚本执行?

解答 :我们需要使用 exit 命令来实现以上描述的情境。exit 命令被强制输出非 0 值时,脚本会报错并退出。在 Unix 环境下的 shell 脚本中,0 值表示成功执行。因此,在脚本终止前执行一个不带引号的 exit -1 命令将使脚本中止。

例如,创建以下一个名为 anything.sh 的脚本。

#!/bin/bash
echo "Hello"
exit -1
echo "bye"

保存文件并执行。

# sh anything.sh

Hello
exit.sh: 3: exit: Illegal number: -1

从上面的脚本中可以清楚地看到,在 exit -1 命令前,脚本执行得很好。

2. 如何使用 Linux 命令来移除文件头?

解答 :当我们需要删除文件中的指定行时,‘sed’命令可以用来解决该问题。

这个是用来删除文件头(文件的首行)的正确命令。

# sed '1 d' file.txt

上面命令的问题是,它会在标准输出设备上输出不带首行的文件内容。为了保存输出到文件,我们需要使用重定向操作符,它将帮助你将输出重定向到文件。

# sed '1 d' file.txt > new_file.txt

好吧,其实 sed 命令内建的‘ -i ’开关就可以干这活,就不需要重定向符了吧。

# sed -i '1 d' file.txt

3. 你怎么检查一个文本文件中某一行的长度?

解答 :‘sed’命令也可以用来查找文本文件中的某一行或者检查其长度。

sed -n ‘n p’ file.txt ’可以解决,这里‘ n ’表示行号,‘ p ’打印出匹配内容(到标准输出),该命令通常与 -n 命令行选项连用。那么,怎样来获取长度计数呢?很明显,我们需要通过管道输出给‘ wc ’命令来计算。

# sed –n 'n p' file.txt | wc –c

要得到文本文件‘ tecmint.txt ’的第五行的长度,运行如下命令:

# sed -n '5 p' tecmint.txt | wc -c

4. 可以在 Linux 系统上查看到所有非打印字符吗?你是怎么做到的?

解答 :可以。可以在 Linux 中查看所有的非打印字符。要实现上面所讲的方案,我们需要‘vi’编辑器的帮助。 怎样在‘ vi ’编辑器中显示非打印字符?

  • 打开 vi 编辑器。
  • 先按[esc]键,然后按‘:’进入到 vi 编辑器的命令模式。
  • 最后,从‘vi’编辑器的命令界面输入 set list 命令并执行。

: 这种方式可以查看文本文件中的所有非打印字符,包括 ctrl+m(^M)

5. 假如你是一个员工组的团队领导,为 xyz 公司工作。公司要求你创建一个‘dir_xyz’目录,让该组成员都能在该目录下创建或访问文件,但是除了文件创建者之外的其他人不能删除文件,你会怎么做?

解答 :这真是个有趣的工作方案。好吧,上面所讲的方案,我们需要通过下面的步骤来实施,这简直就是小菜一碟。

# mkdir dir_xyz
# chmod g+wx dir_xyz
# chmod +t dir_xyz

第一行命令创建了一个目录( dir_xyz ),上面的第二行命令让组(g)具有‘写’和‘执行’的权限,而上面的最后一行命令——权限位最后的‘+t’是‘粘滞位’,它用来替换‘x’,表明在这个目录中,文件只能被它们的拥有者、目录的拥有者或者是超级用户 root 删除。

6. 你能告诉我一个 Linux 进程经历的各个阶段吗?

解答 :一个 Linux 进程在它的一生中,通常经历了四个主要阶段。

这里是 Linux 进程要经历的四个阶段。

  • 等待:Linux 进程等待资源。
  • 运行:Linux 进程当前正在执行中。
  • 停止:Linux 进程在成功执行后或收到杀死进程信号后停止。
  • 僵尸:如果该进程已经结束,但仍然留在进程表中,被称为‘僵尸’。

7. Linux 中 cut 命令怎么用?

解答 :‘cut’是一个很有用的 Linux 命令,当我们要截取文件的指定部分并打印到标准输出,当文本区域以及文件本身很大时,这个命令很有用。

例如,截取‘ txt_tecmint ’文件的前 10 列。

# cut -c1-10 txt_tecmint

要截取该文件中的第二,第五和第七列。

# cut -d;-f2 -f5 -f7 txt_tecmint

8. ‘cmp’和‘diff’命令的区别是什么?

解答 :‘cmp’和‘diff’命令用来获取相同的东西,但各有侧重。

diff ’命令输出为了使两个文件一样而应该做的修改。而‘ cmp ’命令则将两个文件逐字节对比,并报告第一个不匹配的项。

9. 可以用‘echo’命令来替换‘ls’命令吗?

解答 :可以的。‘ls’命令可以用‘echo’命令来替代。‘ls’命令列出目录内容,从替换上述命令的角度讲,我们可以使用‘echo *’,两个命令的输出完全一样。

10. 你可能听过 inode 吧。你能简要描述一下 inode 吗?

解答 :‘inode’是一个‘数据结构’,在 Linux 上用于文件标识。每个文件在 Unix 系统上有一个独立的‘inode’和一个‘唯一的’inode 号。

到此为止吧。在下一篇文章中,我们将讨论另外一些有趣味性而又有知识性的面试问题。到那时,别跑开,请上 Tecmint.com,别忘了在下面的评论部分给我们提供一些有价值的反馈哦。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

瀟灑尐姊

暂无简介

文章
评论
27 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文