答案:以下命令中涉及到文件路径的,写绝对路径或相对路径都可以给分。
1. 任意目录下输入: mkdir /test /目录下输入:mkdir test
2. /etc目录下输入: cp *.conf /test 以及 cp -r acpi /test
3. /test目录下输入:mv adduser.conf useradd.conf 以及 mv apg /tmp
4. cd /test/acpi 以及pwd
5. touch file
6. cat > file1 回车
输入 Hello World
按ctrl+d退出
7. rm file file1 或者 rm fil*
8. rm *.conf
9. rm -r acpi
10. rm -r /test 或者 rmdir /test (因为此时test目录为空)
cd ~
mkdir test (5分)
cd test (5分)
cat > character (5分,字符任意)
cat > num (5分,数字任意)
12
sort character 或者 cat character | sort (5分)
sort -n num 或者 cat num | sort(5分)
sort character | uniq 或者 cat character | sort -u 或者cat character | sort |uniq (5分)
sort num | uniq 或者cat num| sort -u或者 cat num| sort |uniq (5分)
cp /etc/passwd test/
cat passwd | grep daemon (5分)
cat passwd | grep -c daemon 或者 cat passwd | grep daemon | wc -l (5分)
find /etc -name named.conf (10分)
find ~/test -ctime -5 (10分)
locate num (5分)
没查到,因为num文件刚创建不久,而后台数据库一天更新一次,还没到数据库更新的时间。(5分)
此题多种方法都可实现,只要答案是对的即可(答案为1820)。常见的正确答案有:
cat userurl_20150911 | cut -d $’\t’ -f 3 | sort | uniq | wc -l
cat userurl_20150911 | cut -d $’\t’ -f 3 | sort -u | wc -l
cut -f 3 userurl_20150911 -d $’\t’ | sort | uniq | wc -l
cut -f 3 userurl_20150911 -d $’\t’ | sort -u | wc -l
cut -f 3 userurl_20150911 -d ‘ ‘ | sort -u | wc -l (注意:此处的tab输入方法是首先输入一对单引号;然后按ctrl+v;最后再按Tab键)
mkdir backup backup1 backup2
cp /etc/*.conf backup
cp /etc/*.conf backup1
cp /etc/*.conf backup2
gzip backup1/abcde.conf
bzip2 backup2/abcde.conf
ls -l backup/abcde.conf backup1/abcde.conf.gz backup2/abcde.conf.bz2
user01@ubuntu:~$ gzip backup
gzip: backup is a directory -- ignored
弹出信息如上,提示backup为目录,被忽略,说明gzip命令不能直接对目录进行压缩。
tar -cvf backup.tar backup
打包后,不会删除原文件。
mkdir backup3
tar -xvf backup.tar -C backup3
gzip backup.tar
压缩后,文件自动加上.gz扩展名。
tar -cvf backup.cpp backup
tar -xvf backup.cpp -C test
将文件解压缩到test目录中,发现能正确解开。
tar -jcvf backup1.tar.bz2 backup1 或者
tar -zcvf backup1.tar.gz backup1
压缩后,不会删除原文件。
tar -jxvf backup1.tar.bz2 -C test 或者
tar -jcvf backup1.tar.gz -C test
cp /etc/services /root/test.txt
vi /root/test.txt
:set nu
5↓ 5→ 5← 5↑
Ctrl + f
Ctrl + b
49G
$
^
G
gg
/services 找到一个按回车,按n找下一个 13个
:1,3 s/services/service/g
u
:1,$ s/light/lighting/g
文件里没有light这个单词 (换成其它词的也可得分)
50G 将光标移动到“#” x (第50行可能没有#,命令对即可)
u
dd
u
37G 6dd
u
48G yy 51G P 或者52G p
u
37G 6yy 44G P 或者43G p
u
:37,42 m 19 或37G 6yy 6dd 19G p
u
gg 按i进入编辑模式,按要求修改即可。(首行可能没有sh)
Esc o输入”# Hello!”
Esc :wq
1、查看当前系统用户Shell定义的环境变量,并使用命令搜索HOME变量的值;(20分)
A、查看环境变量
user01@ubuntu:~/Desktop$ env
B、查看环境变量并使用命令搜索HOME变量的值
user01@ubuntu:~/Desktop$ env | grep HOME
或者
user01@ubuntu:~/Desktop$ echo $HOME
2、测试主进程变量和子进程变量区别;(不作要求)
user01@ubuntu:~/Desktop$ var_a=10 //设置主进程变量
user01@ubuntu:~/Desktop$ echo $var_a //查看主进程变量
10 //显示主进程变量值
user01@ubuntu:~/Desktop$ bash //进入子进程
user01@ubuntu:~/Desktop$ echo $var_a //子进程中查看主进程变量
//值为空
user01@ubuntu:~/Desktop$ var_b=20 //子进程中设置子进程变量
user01@ubuntu:~/Desktop$ echo $var_b //查看子进程中设置的变量
20
user01@ubuntu:~/Desktop$ exit //退出子进程
exit
user01@ubuntu:~/Desktop$ echo $var_a //查看主进程变量
10
user01@ubuntu:~/Desktop$ echo $var_b //查看子进程变量
user01@ubuntu:~/Desktop$
结论:主进程变量在主进程有效,在子进程中无效;子进程变量在子进程中有效,在主进程中无效。
3、设计一个Shell程序,当程序运行时要求从键盘读入一个字符串(如:hadoop)并将其赋值给user变量,程序输出:“Current user is :hadoop”。其中输出字符串“hadoop”是变量user中的内容。(30分
#!/bin/bash
#This is a simple program!
# XL version 0.1
read -p "Please keyin your name:" -t 30 named
echo "Current user is :$named"
4、userurl_20150911文件是用户上网记录,每一行代表用户的一条浏览记录,同一个用户可能有多条浏览记录。试设计一个shell程序命名为userAnalysis.sh用来计算该文件中任一用户浏览记录总条数。(30分)
要求:1、命令行运行程序时传递手机号码参数
2、命令运行时输出查找用户浏览记录总条数
#!/bin/bash
#This is a user-statistical program!
# XL version 0.1
cd ~/Desktop
cat userurl_20150911 | cut -d $'\t' -f 3 | grep $1 | wc -l
1、编写shell脚本score。根据输入的学生成绩判断等级。当成绩≥90时为A级;80≤成绩<90时为B级;70≤成绩<80时为C级;60≤成绩<70时为D级;成绩<60时为E级。
show_date()
{
cal $1 $2
}
while true
do
echo "请输入2020年的月份"
year=2020
read month
if [ $month == "Q" ];
then
break;
fi
show_date $month $year
done
2、编写一个程序,它的作用是:
a、 创建1000个目录,目录名依次为1,2,3,……,1000;
b、 在每个目录下创建一个文件,文件名与目录名相同;
c、 向文件中写入数值,文件名为1的文件写入的数值为1,文件名为2的写入的数值为2,以此类推
t="url20180301"
for((i=2;i<=30;i++))
do
if [ $i -lt 10 ];then
mkdir url2018030$l
a="url2018030$i"
s="$a "
t="$t $s"
else
mkdir url2018030$l
a="url201803$i"
s="$a "
t="$t $s"
fi
done
mkdir url201803$l
s="url201803$l"
t="$t $s"
echo $t
user01@ubuntu:~$ sed '5i Hello sed' /etc/fstab
user01@ubuntu:~$ sed 's/device/DEVICE/g' /etc/fstab > fstab
user01@ubuntu:~$ sed '/identifier/,/none/ s/dev/DEV/' /etc/fstab
user01@ubuntu:~$ sed '/^#/,s/^# *//' /etc/fstab
a、 将文件/etc/fstab复制到当前用户的家目录;
b、然后再使用sed命令直接对该文件进行操作,执行第1、2、3、4步操作。其中,对第2步操作不需要重定向。
#!/bin/bash
cp /etc/fstab ~/fstab
sed -i '5i Hello sed' fstab
sed -i 's/device/DEVICE/g' fstab
sed -i '/identifier/,/none/ s/dev/DEV/' fstab
sed -i '/^#/ s/^# *//' fstab
注意:(1)中括号及其中的数值表示区号;
(2)姓名包括姓和名,人名仅表示名字。
Mike Harrington:[510] 548-1278:250:100:175
Christian Dobbins:[408] 538-2358:155:90:201
Susan Dalsass:[206] 654-6279:250:60:50
Archie McNichol:[206] 548-1348:250:100:175
Jody Savage:[206] 548-1278:15:188:150
Guy Quigley:[916] 343-6410:250:100:175
Dan Savage:[406] 298-7744:450:300:275
Nancy McNeil:[206] 548-1278:250:80:75
John Goldenrod:[916] 348-4278:250:100:175
Chet Main:[510] 548-5258:50:95:135
Tom Savage:[408] 926-3456:250:168:200
Elizabeth Stachelin:[916] 440-1763:175:75:300
要求:
a.显示所有电话号码 (5分)
user01@ubuntu:~$ awk -F : '{print $2}' awk_exercise 或cat awk_exercise | awk -F : '{print $2}'#此两种写法都可得分,以下仅采用一种写法。[510] 548-1278[408] 538-2358[206] 654-6279[206] 548-1348[206] 548-1278[916] 343-6410[406] 298-7744[206] 548-1278[916] 348-4278[510] 548-5258[408] 926-3456[916] 440-1763
b. 显示Dan的电话号码 (5分)
user01@ubuntu:~$ awk -F : /Dan/'{print $2}' awk_exerciseDan Savage [406] 298-7744
c. 显示Susan的姓名和电话号码 (5分)
user01@ubuntu:~$ awk -F : /Susan/'{print $1,$2}' awk_exercise Susan Dalsass [206] 654-6279
d. 显示所有以D开头的姓 (10分)
user01@ubuntu:~$ awk '{print $2}' awk_exercise | awk -F: '/^D/{print $1} 'DobbinsDalsass
e. 显示所有以一个C或E开头的名 (10分)
user01@ubuntu:~$ awk '/^[CE]/{print $1}' awk_exercise ChristianChetElizabeth
f. 显示所有只有四个字符的名 (10分)
user01@ubuntu:~$ awk '{print $1 }' awk_exercise | awk '{if(length($1)==4) print $1}'MikeJodyJohnChet
g. 显示所有区号为916的人名 (10分)
user01@ubuntu:~$ awk -F : '/916/{print $1}' awk_exercise | awk '{print $1}'GuyJohnElizabeth
h. 显示Mike的总捐款 (5分)
user01@ubuntu:~$ awk -F: '/Mike/ {print $3+$4+$5 }' awk_exercise525
i. 显示姓,其后跟一个逗号和名 (10分)
user01@ubuntu:~$ awk -F: '{print $1 }' awk_exercise | awk '{print $2,",",$1}'Harrington , MikeDobbins , ChristianDalsass , SusanMcNichol , ArchieSavage , JodyQuigley , GuySavage , DanMcNeil , NancyGoldenrod , JohnMain , ChetSavage , TomStachelin , Elizabeth
j. 显示Savage的全名和电话号码 (5分)
user01@ubuntu:~$ awk -F: '/Savage/ {print $1,$2 }' awk_exercise Jody Savage [206] 548-1278Dan Savage [406] 298-7744Tom Savage [408] 926-3456
k.显示Chet的捐款 (5分)
user01@ubuntu:~$ awk -F: '/Chet/ {print $3,$4,$5 }' awk_exercise 50 95 135
l.显示所有头一个月捐款$250的人名 (10分)
user01@ubuntu:~$ awk -F: '$3==250 {print $1 }' awk_exercise | awk '{print $1}'MikeSusanArchieGuyNancyJohnTom
1、查看某个普通用户目前所有的进程;(10分)
2、找出普通用户下的update-notifier进程(若没有,可换其它的),并将其kill掉;(15分)
3、列出系统下所有用户运行bash进程的详细信息,并尝试kill不同用户的bash进程,在kill哪个进程时会关闭终端?它跟其它bash进程显示有何不同?(20)
若当前用户kill其他用户进程时,会提示“不允许的操作”,如图中显示。画方框进程是当前终端对应的进程,若执行命令 kill -9 99929 会关闭当前终端窗口。与其它进程相比,该进程运行的时间是当前时间,用户为当前用户,除此之外,该进程终端为pts/1。
注意:终端字段显示为?的进程是系统内核启动的进程,不是用户启动的。
4、找出任意进程的父进程具体是哪个进程?(15分)
如图所示,ps -axl | grep bash 这个进程的父进程号为99929,其对应的进程为bash。
5、修改/etc/crontab文件实现自动备份,使得每星期一的11:00将/etc目录及其子目录经打包压缩存放到/root/backup目录中,压缩后的文件名称包含备份日期,例如:etc_20190527.tar.gz;(20)
通过编辑文件 /etc/crontab,在文件的最后增加以下语句。
0 11 * * 1 root tar -zcvf /root/backup/etc_$(date -d “today” +“%Y%m%d_%H%M”). tar.gz /etc
有些系统可能需要对符号“%”加转义字符,结果为:
0 11 * * 1 root tar -zcvf /root/backup/etc_$(date -d “today” +“%Y%m%d_%H%M”).tar.gz /etc
还可以将 命令tar -zcvf /root/backup/etc_$(date -d “today” +“%Y%m%d_%H%M”).tar.gz /etc放入crontab.sh文件,然后执行 chmod 755 crontab.sh
本次实验可以使用u盘或者虚拟硬盘。
使用U盘请按照以下步骤操作:
1、请将u盘在Windows环境下格式化为FAT格式的文件系统。
2、虚拟机开机状态下,点击Vmware菜单栏虚拟机->可移动设备->找到你的设备->点击连接到设备->可将设备连接到linux操作系统中。
3、使用fdisk –l 命令查看当前系统的硬盘,查看U盘相关信息,此时看到的U盘应该只有一个分区,名叫sdb1。
4、为你的虚拟机添加一块磁盘,并且新建六个分区,六个分区要求如下:
ü sdb1为主分区,500M的容量,文件格式为ext3;
ü sdb2为主分区,容量不限,文件格式为FAT;
ü sdb3为主分区,容量不限,文件格式为FAT;
ü sdb4为扩展分区
ü sdb5为逻辑分区,容量不限,文件格式为ext3;
ü sdb6为逻辑分区,容量不限,文件格式为ext3.
使用虚拟硬盘按照以下步骤操作:
1、新建一块虚拟硬盘;
2、使用fdisk –l 命令查看当前系统的硬盘,若新建硬盘成功,则会看到有一个名叫sdb的硬盘;
3、将sdb硬盘分为六个分区,六个分区要求如下:
ü sdb1为主分区,500M的容量,文件格式为ext3;
ü sdb2为主分区,容量不限,文件格式为FAT;
ü sdb3为主分区,容量不限,文件格式为FAT;
ü sdb4为扩展分区
ü sdb5为逻辑分区,容量不限,文件格式为ext3;
ü sdb6为逻辑分区,容量不限,文件格式为ext3.
实验步骤:
1、新建硬盘成功,大小为6GB
2、打印磁盘的相关信息
3、新建第一个分区
设置文件格式
4、新建第二个分区(一开始忘记设置大小,删除后重新设置分区)
设置文件格式
5、新建第三个分区
设置文件格式
6、新建第四个分区
7、新建第五个分区
设置文件系统
8、设置第六个分区
设置文件格式:
9、打印分区信息
1、请查看你的虚拟机的IP地址;
2、测试虚拟机与网关以及网站www.baidu.com的连通性;
查看虚拟网络编辑器,找到网关IP地址为:192.168.190.2
3、测试你的主机是如何到达网站www.baidu.com的;
4、请为你的虚拟机设置静态IP地址;
(1)关机,修改虚拟网络编辑器,将红箭头所指框中的勾去掉;
(2)根据虚拟网络编辑器中的内容编辑/etc/network/interfaces文件,如下图所示。
5、请修改你的Linux主机的主机名
将/etc/hostname文件中的字符串改成你喜欢的字符串。
6、为ubuntu安装openssh服务器,并使用secureCRT软件进行远程连接。
输入以下命令,安装openssh服务器,然后使用secureCRT进行远程连接。
1、 创建用户zhangsan、lisi、wangwu,并设置其登录密码为123456;
答:
root@ubuntu:~# useradd zhangsan
root@ubuntu:~# useradd lisi
root@ubuntu:~# useradd wangwu
root@ubuntu:~# passwd zhangsan
输入新的 UNIX 密码:
重新输入新的 UNIX 密码:
passwd:已成功更新密码
root@ubuntu:~# passwd lisi
输入新的 UNIX 密码:
重新输入新的 UNIX 密码:
passwd:已成功更新密码
root@ubuntu:~# passwd wangwu
输入新的 UNIX 密码:
重新输入新的 UNIX 密码:
passwd:已成功更新密码
2、 创建两个组linux以及hadoop;
root@ubuntu:~# groupadd linux
root@ubuntu:~# groupadd hadoop
3、 将用户zhangsan、lisi加入到linux组;
root@ubuntu:~# gpasswd -a zhangsan linux
正在将用户“zhangsan”加入到“linux”组中
root@ubuntu:~# gpasswd -a lisi linux
正在将用户“lisi”加入到“linux”组中
4、 将lisi与wangwu加入到hadoop组;
root@ubuntu:~# gpasswd -a lisi hadoop
正在将用户“lisi”加入到“hadoop”组中
root@ubuntu:~# gpasswd -a wangwu hadoop
正在将用户“wangwu”加入到“hadoop”组中
5、 设置lisi的主组群为hadoop;
root@ubuntu:~# usermod -g hadoop lisi
root@ubuntu:~# groups lisi
lisi : hadoop linux
6、 查看/etc/passwd文件,分别说出zhangsan、lisi、wangwu三个用户的UID和GID分别是什么?
答:查看/etc/passwd文件,可知zhangsan的UID为1001,GID为1002;lisi的UID为1002,GID为1000;wangwu的UID为1003,GID为1004. (注意:大家的答案可能不同,需要根据以下内容来鉴别)
zhangsan:x:1001:1002::/home/zhangsan:/bin/bash
lisi:x:1002:1000::/home/lisi:/bin/bash
wangwu:x:1003:1004::/home/wangwu:/bin/bash
7、 将lisi从linux组删除;
root@ubuntu:~# gpasswd -d lisi linux
正在将用户“lisi”从“linux”组中删除
root@ubuntu:~# gpasswd -d lisi hadoop
正在将用户“lisi”从“hadoop”组中删除
root@ubuntu:~# groups lisi
lisi : hadoop
8、 试试能否将lisi从hadoop组中删除?并说明为什么?
答:不能,因为hadoop组是lisi的主组群。