找到这篇博文的人,一定被Linux考试弄得很爆炸吧哈哈哈。
放点资料供大家学习和参考。如有错误,还请指正。
【例题】
一、填空题。
1、ls、cp等命令文件一般位于bin目录。
2、在Linux系统中,第一个启动的进程是:init进程、其编号为:1。
3、给出文件的三种类型的名称:普通文件、目录文件、设备文件。
4、当前用户是stu,当前目录在/home/stu/mydir/,则执行cd …/…命令后当前目录是home,再执行cd命令后当前目录是home/stu。
5、env命令可以显示环境变量。
6、在多用户环境下,管理员在关机重启机器之前一般可以使用wall命令通知所有在线用户注意存盘退出。
7、root用户具有系统的最大权限。
二、选择题。
1、我们实验使用的shell是哪个?
A、bsh B、ksh C、csh D、bash
2、可以分页显示文件内容的命令是?
A、pwd B、cat C、more D、page
3、bash中默认已有的变量一般不包括?
A、find B、PWD C、HOME D、USER。
4、从标准输入读入值并赋予一个变量的命令是?
A、out B、scan C、read D、in
5、 下列哪个命令可将文本文件f.txt拷贝为f.bak?
A、cp f.txt | f.bak B、cat f.txt>f.bak C、cp f.txt > f.bak D、ls f.txt f.bak
三、简答下列问题。
1、 解释read命令的功能,举例说明其用法。
read命令是从标准输入读入变量值,例如:
read var1 var2
hello world(注:var1为hello,var2为world)
read var1 var2
hello world 0.0(注:var1为hello,var2为world!0.0)
read var1 var2
hello(注:var1为hello,var2为空)
2、 如果当前目录下只有文件abc123,解释echo abc和echo xyz=abc命令的输出。
“echo abc*”命令会输出abc123,“echo xyz=abc*”命令会输出xyz=abc*。
出现这种结果的原因为,“*”既可以作为通配符,也可以作为字符。由于目录下的文件只有abc123,那么在“echo abc*”时,*作为通配符,匹配的结果就是abc123。而由于目录下没有以xyz=abc开头的文件,所以在“echo xyz=abc*”时,*是作为一个字符串进行输出的。
3、画图示意操作系统、硬件和应用软件关系。
四、根据以下小题的要求写出相应的命令或命令组。
1、 显示当前目录下文件名以abc开头同时以123结尾的文件。
ls | grep "^abc.*123$"
2、把文本文件file1复制为file2,然后在file2尾部增加一行内容为“END”。
设置权限,自己的文件file1,只允许自己完全访问和使用,自己之外的人仅有读权限。
cp file1 file2
echo "END" >> file2
chmod 744 file1
3、 假设myprog.sh是你所写的一个脚本程序,写出命令在后台执行它。
sh myprog.sh &
4、用命令或命令组合列出当前目录下的所有目录文件(不列出其他文件)。
ls -F | grep "/"
ls -l | grep "^d"
5、在上一级目录的子目录src中建立一个空文件,文件名叫my_logfile。
touch ../src/my_logfile
6、在当前路径下建立 /letters/mail的符号链接m-soft。
ln -s /letters/mail ./m-soft
7、在屏幕上显示字符串“$abc”。
echo \$abc
五、综合题(shell脚本实现方法有很多,这里只给出我的参考方法哈~)。
1、写一个shell脚本,每隔10秒,检查当前系统中有没有进程名字为“firefox”的进程,如果有的话显示“firefox 进程出现了!”并退出,返回码设置为等待的秒数。
while true
do
process = `pgrep -f firefox`
i=0
if [ ${#process} -gt 0 ]
then
echo “firefox进程出现了!”
echo “等待时间为:$i”
break
else
i = i+10
sleep 10
fi
done
2、解释这行命令的含义。如果输入123,会显示什么?如果输入1234显示什么?
#从标准输入中读取abc的值
read abc;
#若abc小于999,则res为too small。否则,res为ok
test $abc -lt 999 && res='too small' || res=ok;
#输出res
echo $res;
3、编写一个Shell脚本,求矩形面积。长、宽参数从命令行传入。
read width height
area=$(($width*$height))
echo $area
4、写一个脚本,持续监视用户stu是否登录,如果登录了,就每隔1分钟把你的用户名和QQ号码发给他,重复发送3次为止。
while true
do
user=`who | grep -w “stu”`
if [ ${#user} -gt 0 ]
then
echo “please enter message and press ctrl + D”
write stu
sleep 60
echo “please enter message and press ctrl + D”
write stu
sleep 60
echo “please enter message and press ctrl + D”
write stu
sleep 60
break
fi
done
5、给出下脚本的执行结果。
i=1
while [ “$i” –lt 5 ]
do
j=$((i*i))
echo “$j”
i=$((i+1))
done
运行结果为:
1
4
9
16
6、试解释以下命令或命令组的含义。(15分)
(1)$grep ‘789’ l ppasswd | wc –l
统计带有789的密码个数(实际上这个命令根本执行不了)
(2)ls –l | grep ‘^d’
列出ls -l输出的内容中,d开头的内容
(3)ls -d ?[!y]*[e-f]
任意单个字符+非y字符+任意多个字符+e或f结尾
(4)echo $HOME
输出用户的根目录
(5)cat file1 file2 > cat.out 2> cat.err
将file1,2的内容输出至cat.out,并将错误信息输出到cat.err
7、假设使用ls命令: $ls –lR 显示下列信息
drwxr-xr-x 3 judy finance …. jobs
./jobs:
drwxrwxrwx 2 judy finance …. work
./work:
-rw–r-- r-- 1 judy finance …. joblog
用户 Fred是 finance 组的成员, Fred是否可以拷贝 joblog 文件到自己的目录下?简述理由。
可以拷贝文件,因为joblog的同组用户有读权限,对work目录和jobs目录有执行权限,并且对自己的目录有写权限,所以可以复制。