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: @有什么区别?
*将整个位置参数集视为单个字符串。
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”<file1 | tr -s"(backslash)011"| tr"(backslash)040(backslash)011"""(backslash)012"| uniq -c
其中"(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 <file1 1> 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行确定用于执行脚本的引擎的位置。
网友评论