linux shell题库,Shell脚本面试题Top50

Shell脚本面试题Top50

[TOC]

1:什么是Shell?

Shell是用户和内核之间的接口。即使只有一个内核; 一个系统可以同时运行许多shell。因此,只要用户通过键盘输入命令,shell就会与内核通信以执行它,然后将输出显示给用户。

2:典型Linux系统上常用的shell有哪些不同类型?

csh,ksh,bash,Bourne。今天使用的最常用和高级shell是"Bash”。

3:在Linux系统上有一个窗口的文件快捷方式相当于什么?

使用Linux上的"链接”创建快捷方式。可以使用两种类型的链接,即"软链接”和"硬链接”。

4:软链接和硬链接有什么区别?

软链接是文件名的链接,也可以驻留在不同的文件名中; 但硬链接链接到文件的inode,并且必须与文件的文件系统相同。删除原始文件会使软链接处于非活动状态(断开链接),但不会影响硬链接(硬链接仍将访问该文件的副本)

5:如何在Linux中传递和访问脚本的参数?

参数可以传递为:

scriptName"Arg1”"Arg2”...."Argn”并且可以在脚本内部以$ 1,$ 2 .. $ n进行访问

6:$#的意义是什么?

$#显示传递给脚本的参数计数。

7:

math?formula=*%E5%92%8C @有什么区别?

math?formula=%40%E5%B0%86%E6%AF%8F%E4%B8%AA%E5%BC%95%E7%94%A8%E7%9A%84%E5%8F%82%E6%95%B0%E8%A7%86%E4%B8%BA%E5%8D%95%E7%8B%AC%E7%9A%84%E5%8F%82%E6%95%B0%EF%BC%8C%E4%BD%86 *将整个位置参数集视为单个字符串。

8:使用sed命令替换文件内容(模拟tac命令)

例如:

if cat fille

ABCD

EFGH

然后O / p应该是

EFGH

ABCD

sed'1!G; h; $!d'file1

这里G命令附加到模式空间,

h命令复制模式缓冲区以保存缓冲区

和d命令删除当前模式空间。

9:给定一个文件,将所有出现的单词"ABC”替换为"DEF”,从第 5 行直到结尾仅包含单词"MNO”

sed -n'5,$p' file1|sed '/MNO/s/ABC/DEF/'

10:给定一个文件,写一个命令序列来查找每个单词的计数。

tr -s"(backslash)040”

其中"(backslash)040”是"space”的八进制等价物

"(反斜杠)011”是"制表符”的八进制等效值

"(反斜杠)012”是换行符的八进制等效值。

11:如何仅使用tail和head命令找到文件的第 99 行?

tail +99 file1 | head -1

12:打印10 个行,而无需使用尾部和头部命令。

sed -n'10p'file1

13:在我的bash shell中,我希望我的提示格式为'$'当前工作目录":”hostname">并在我登录时加载包含用户定义函数列表的文件,如何自动执行此操作?

在bash shell中,我们可以创建".profile”文件,该文件在我登录后自动被调用,并将以下语法写入其中。

export PS1 ='$`pwd`:`hostname`>'.File1

这里File1是包含用户定义函数和"。”的文件。在当前shell中调用此文件。

14:解释一个文件中的"s”权限位?

"s”位称为"设置用户ID”(SUID)位。

文件中的"s”位使得进程在程序实例期间具有文件所有者的特权。

例如,执行"passwd”命令更改当前密码会导致用户将其新密码写入影子文件,即使它具有"root”作为其所有者。

15:我想创建一个目录,以便组中的任何人都可以创建文件并访问其中的任何人的文件,但是没有人能够删除除他自己创建的文件之外的文件。

我们可以创建一个目录,为组中的每个人提供读取和执行访问权限,并将其粘滞位设置为"t”,如下所示:

mkdir direc1

chmod g + wx direc1

chmod + t direc1

16:你怎么知道系统运行了多长时间?

我们可以使用命令"uptime”找到它。

17:任何用户如何找到有关特定用户的所有信息,例如他的默认shell,现实名称,默认目录,他何时以及使用系统多长时间?

>finger "loginName”

//其中loginName是的登录名

预期信息的用户。

18:$$和$之间的区别是什么?

$$给出了当前正在执行的进程的进程ID,而$!显示最近进入后台的进程的进程ID。

19:什么是僵尸进程?

这些过程已经死亡,但其退出状态仍未被父进程选中。即使不起作用,这些进程仍然在进程表中具有其进程id条目。

20:如何将文件从一台机器复制到另一台机器?

我们可以使用"ftp”,"scp”或"rsync”等实用程序将文件从一台机器复制到另一台机器。

例如,使用ftp:

FTP 主机名

>put file1

>bye

上面的副本,文件file1从本地系统到指定了主机名的目标系统。

21:我想监视一个不断更新的日志文件,可以用什么命令最有效地实现这个目的?

我们可以使用tail -f filename。这将导致仅在std o / p上显示默认的最后10行,这连续显示文件的更新部分。

22:我想连接远程服务器并执行一些命令,我该如何实现?

我们可以使用ssh来做到这一点:

ssh username@serverIP -p sshport

ssh [root@122.52.251.171](mailto:root@122.52.251.171) -p 22

执行上述命令后,系统将要求你输入密码

23:我有2个文件,我想打印两个共同的记录。

我们可以使用"comm”命令如下:

comm -12 file1 file2

24:编写一个脚本来打印Fibonacci系列的前10个元素。

#!/bin/sh

a = 1

B = 1

echo $ a

echo $ b

for I in 1 2 3 4 5 6 7 8

do

c = a

b = $a

b = $(($a+ $c))

echo $b

DONE

25:如何从Linux连接到数据库服务器?

我们可以使用开放客户端驱动程序附带的isql实用程序,如下所示:

isql -S serverName -U username -P password

26:Linux中的3个标准流是什么?

0 - 标准输入1 - 标准输出2 - 标准错误

27:我想从file1读取命令的所有输入,将所有输出直接输出到file2,将错误读取到文件3,我该如何实现?

command file2 2> file3

28:当我使用exec执行命令时,当前进程会发生什么?

"exec”覆盖了当前流程中新分叉的流程; 所以当我使用exec执行命令时,该命令在当前shell上执行而不创建任何新进程。

例如,在命令提示符下执行"exec ls”将执行ls,一旦ls退出,该进程将关闭

29:你将如何使用awk模拟wc -l?

awk'END {print NR} fileName'

30:给定一个文件找到包含单词"ABC”的行数。

grep -c "ABC" file1

31:grep和egrep有什么区别?

egrep是扩展grep,支持添加grep功能,如"+”(前一个字符出现1次或多次),"?”(前一个字符出现0或1次)和"|” (备用匹配)

32:如何打印系统上所有用户的登录名?

/etc/shadow

文件列出了所有用户。

awk -F':''{print $ 1} / etc / shadow'| uniq -u

33:如何在Linux中设置数组?

ksh中的语法:

Set –A arrayname= (element1 element2 ….. element)

In bash

A=(element1 element2 element3 …. elementn)

34:记下"for”循环的语法

语法

for iterator in (elements)

do

execute commands

done

35:你如何找到特定用户使用的总磁盘空间?

du -s / home / user1

其中user1是需要找到总磁盘空间的用户。

36:在Linux中编写"if”条件的语法?

语法

If condition is successful

then

execute commands

else

execute commands

fi

37:$的意义是什么?

命令$?给出最后执行的命令的退出状态。

38:我们如何删除文件中的所有空行?

sed '^ [(backslash)011(backslash)040]*$/d' file1

其中(反斜杠)011是空格的八进制等价物

(反斜杠)040是选项卡的八进制等效值

39:我怎么会在每100插入行"ABCDEF” 第一个文件的行?

sed '100i \ ABCDEF'file1

40:编写命令序列以查找在不到2天内修改的所有文件并打印每个文件的记录数。

find . –mtime -2 –exec wc –l {} \;

41:如何在当前shell中创建的每个文件上为所有用户设置默认的rwx权限?

我们可以用:

umask 777

这将为为每个用户创建的每个文件设置默认的rwx权限。

42:我们如何从进程ID中找到进程名称?

ps –p ProcessId

43:Linux上每个文件系统的四个基本组件是什么?

Bootblock,超级块,inode块和数据块是Linux上每个文件系统的基本组件。

44:什么是引导块?

该块包含一个名为"主引导记录”(MBR)的小程序,它在系统引导期间加载内核。

45:什么是超级块?

超级块包含有关文件系统的所有信息,例如文件系统的大小,其空闲数据块数使用的块大小以及空闲inode和数据块的列表。

46:什么是inode块?

此块包含文件系统的每个文件的inode以及除其名称之外的所有文件属性。

47:如何将带有压缩文件的邮件作为附件发送?

zip file1.zip file1|mailx –s "subject" Recipients email id

Email content

EOF

48:我们如何在shell中创建命令别名?

别名Aliasname ="要创建其别名的命令”。

49:文件的"c”和"b”权限字段是什么?

"c”和"b”权限字段通常与设备文件相关联。它指定文件是特殊字符文件还是块特殊文件。

50:shebang线的用途是什么?

每个脚本顶部的Shebang行确定用于执行脚本的引擎的位置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值