linux上机复习题(部分答案)

匿名 (未验证) 提交于 2019-12-02 21:59:42

上机复习题

Shell命令上机操作题

1. 在当前目录下创建子目录dir1dir2

mkdir dir1

mkdir dir2

2.以短格式查看目录/usr中的文件清单,把该信息重定向到文件my1中。

ls /usr > my1

3. 复制my1文件到两个名为t1.txtt2.txt的文件中。

cp my1 t1.txt

cp my1 t2.txt

4. t2.txt文件的存取属性设置为对所有用户不可读,不可写和不可执行。

chmod a-rwx t2.txt

5.在当前目录下建立t2.txt文件的符号链接文件ts

6.在当前目录下创建空文件x1x2,用长格式显示当前目录信息,并把该信息附加重定向到文件my1中。

touch x1

touch x2

7. 在当前目录下查看当前系统的进程状态信息,把结果重定向到文件my2中。

8.查看环境变量PS1的值,将结果附加重定向到文件my2中。

echo $PS1 >>test2

9.在当前目录下,查看环境变量LOGNAME值,将结果重定向到文件ss.txt中。

echo $LOGNAME >ss.txt

10. 在当前目录下创建子目录d1,把ss.txt文件复制到子目录d1中。

mkdir d1

cp ss.txt d1

11. ss.txt文件复制到文件copy中,然后把ss.txt改名为you1

cp ss.txt copy

mv ss.txt you1

you1文件的存取属性设置为对所有用户可读,可写和可执行。

chmod a+rwx test1.txt

13.为系统添加一个组名,组名为pet,然后把文件copy的组名更改为pet

groupadd pet

chgrp copy pet

14.用长格式显示当前目录,把该信息附加重定向到文件you1中,然后用长格式显示子目录d1中的信息,把该信息附加重定向到文件you1中。

15. 定位man命令的可执行二进制文件的位置,且把定位结果重定向到文件you2中。


16.在当前目录下,使用shell命令查看系统日期和时间,把该信息附加重定向到文件you2中。

date >>you2

17.在当前目录下,查看20127月份的月历,把结果重定向到文件he1中。

cal 7 2012 >he1

18. 创建子目录ddff,然后把当前目录信息以长格式附加重定向到文件he1中,最后把子目录dd改名为gg

mkdir dd ff

mv dd gg

19.查看环境变量HOME的值,且把该信息附加重定向到文件he1中。

echo $HOME >>test1

20.复制he1到文件copy1和文件copy2中,对其他用户设置文件copy1具有只读属性且不可写和不可执行。

cp he1 copy1

cp he2 copy2

chmod o+r copy1

chmod o-wx copy1

21.用长格式显示当前目录信息,把该信息附加重定向到文件he1中,删除文件copy1,再用长格式显示当前目录信息,把该信息附加重定向到文件he1中。

rm copy1

22.删除子目录ff,用长格式显示当前目录信息,把该信息附加重定向到文件he1中。

rmdir dd

23. copy2文件的内容加上行号后输出到文件copy3,再把copy3内容重定向到文件he2中。

cat copy3>he2

24.在当前目录下,用awk程序把文件copy3的每行的第一个字段(即行号)输出,附加重定向到文件he2中。

awk ‘{print $1}’ copy3 >>test2

25.查找/bin目录中以字母c开头的文件,把结果重定向到文件her1中。

26.查看PATH变量的值,且把该信息附加重定向到文件her1中。

echo $PATH >>her1


复制her1文件到另外三个文件中,这三个文件的名称分别为new1,new2,new3

cp her1 new1

cp her1 new2

cp her1 new3

28.把new1文件的存取属性设置为对所有用户可读,可写和可执行。

chmod a+rwx new1


29. 在当前目录中,创建子目录xyz,把当前目录中的所有文件复制到子目录xyz中。

mkdir xyz

cp *xyz

用长格式显示当前目录包括点文件在内的所有文件,把该信息附加重定向到文件her1中,然后再以长格式显示目录xyz中包括点文件在内的所有文件,把该信息附加重定向到文件her1中。

31.删除文件new1new2,用短格式显示当前目录中的所有文件,把该信息重定向到文件her2中。

rm new1

rm new2

ls >her2

32.在当前目录下,使用shell命令查看当前系统的环境变量值,把这些信息附加重定向到文件her2中。

env>>test2

33 .在当前目录下,查看环境变量MAIL的值,把结果重定向到文件pp.txt中。

echo $MAIL > pp.txt

34.把pp.txt文件的存取属性设置为对所有用户可读,可写和不可执行。

chmod a+rw pp.txt

chmod a-x pp.txt

35. 在当前目录下,创建子目录dir1,把pp.txt文件复制到字目录dir1hello的文件中。

mkdir dir1

cp pp.txdir1/hello

36. 复制pp.txt文件到同一层目录下名为him1的文件中。把变量a赋值为12345,显示变量a的值,且把值附加重定向到him1中。

cp pp.txt him1

a=12345

echo $a >>him1

37.用长格式显示子目录dir1中的信息,把该信息附加重定向到文件him1中。

38.在当前目录中,创建空文件jjj,然后用长格式显示当前目录信息把该信息附加重定向到文件him1中。

touch jjj

为系统添加两个组,组名分别为fordwrolf,/etc/group文件的内容重定向到文件him2中。

groupadd ford

groupadd wrolf

cat /etc/group >him2

40.删除组名为ford的组,再把/etc/group文件的内容附加重定向到文件him2中。

groupdel ford

cat /etc/group >>him2

41. 显示当前用户使用的Shell,且把该信息重定向到文件they1中。

echo $SHELL >they1

42.在当前目录下,查看当前的进程状态信息,把信息附加重定向到文件they1中。

43. 复制文件they1到另外两个文件copy1copy2中。

cp they1 copy1

cp they1 copy2

44.用长格式显示当前目录信息,把该信息附加重定向到文件they1中。

45. 删除文件copy1, copy2改名为newcopy,用长格式显示当前目录信息,把该信息附加重定向到文件they1中。

rm copy1

mv copy1newcopy

在屏幕上显示文件/etc/passwd文件的内容,且把该信息输出重定向到文件they2中。

cat /etc/passwd >they2

47. 定位cat命令的可执行二进制文件的位置,且把定位结果附加重定向到文件they2中。

48.在当前目录下,使用shell命令查看当前的磁盘空间信息,把该信息附加重定向到文件they2中。

df >>they2

49. 在当前目录下,输出“hello world”的提示信息,然后把该信息重定向到文件jjj.txt中。

echo “hello world” >jjj.txt

50.显示jjj.txt文件的内容,并把该内容重定向到文件kkk.txt中。然后再次显示jjj.txt文件的内容,并把该内容附加重定向到文件kkk.txt中。

cat jjj.txt >kkk.txt

cat jjj.txt>>kkk.txt

51. kkk.txt文件的内容加上行号后,重定向到一个名为them1的文件中。

52.把kkk.txt的文件属主改成zhwang

chown zhwang kkk.txt

53.用长格式显示当前目录信息,把该信息附加重定向到文件them1中。删除文件jjj.txt, 再用长格式显示当前目录信息,且把该信息附加重定向到文件them1中。

rm jjj.txt

54为系统添加两个用户,用户名分别为wangzhu,/etc/passwd文件的内容重定向到文件them2中。

useradd wang

useradd zhu

cat /etc/passwd > them2

55. 删除用户zhu,/etc/paswwd文件的内容附加重定向到文本文件them2中,

userdel zhu

cat /etc/passwd >>them2

56.把201212月份的月历输出到文件gg.txt中,用awk程序把gg.txt文件的第2列附加重定向到文件them2中。

cal 12 2012 >gg,.txt

awk ‘{print $2}’gg.txt >>them2

57.在当前目录下,以短格式列出目录/dev中的内容,把其内容重定向到文件ttt.txt,ttt.txt文件复制到同一目录下名为all1car的文件中。

ls /dev >ttt.txt

cp ttt.txt all1

cp ttt.txt car

58. 用长格式显示当前目录,把该信息附加重定向到文件all1中,删除文件car

rm car

59.把ttt.txt文件的存取属性设置为对其他用户可读,可写和可执行,

chmod o+rwx ttt.txt

60. 创建子目录kkk,把ttt.txt文件转移至该kkk子目录中。

mkdir kkk

mv ttt.txt kkk

61.创建一个空文件fff,fff文件的属主改为wang

touch fff

chown wang fff

62.用长格式显示当前目录信息,把该信息附加重定向到文件all1中。再以长格式显示子目录kkk的信息,把该信息附加重定向到文件all1中。

63. 为系统添加三个用户,用户名分别为和student,worker,docter,/etc/passwd文件的内容重定向到文本文件all2中。

useradd student

useradd worker

useradd doctor

cat /etc/passwd >all2

64. 为系统添加一个名叫teacher的组,/etc/group文件的内容附加重定向到文本文件all2中。

groupadd teacher

cat /etc/group >>all2

65. 在当前目录下创建空文件a1,把文件a1的存取属性改为“rwxrwxr--”

touch a1

chmod u+rwx g+rwx o-r a1

66.以短格式查看目录/bin中的文件清单,把该信息重定向到文件zhu1中。

ls /bin

ls /bin>zhu1


67. 添加两个用户xyz1xyz2 /etc/passwd文件内容附加重定向到文件zhu1中。

useradd xyz1

useradd xyz2

cat /etc/passwd >>zhu1

68. a1文件复制到b1b2两个文件中。

cp a1 b1

cp a1 b2

69.删除名为xyz1的用户,然后把/etc/passwd文件内容附加重定向到文件zhu1中。

userdel xyz1

cat /etc/passwd

cat /etc/passwd >>zhu1

70.在当前目录下,用长格式显示当前目录信息,并把该信息附加重定向到文件zhu1中。

ls -l

ls -l >>zhu1

71.查看命令nslookup的帮助信息,将结果重定向到文件zhu2中。

man nslookup

man nslookup >zhu2

72.把环境变量PATH的值附加重定向到文件zhu2中。

echo $PATH

echo $PATH >>zhu2

73.查看系统当前日期和时间,将结果重定向到文件wang1中。

date

date >wang1

74. 创建空文件aa, 在当前目录下创建子目录dd

touch aa

mkdir dd

75. aa文件复制文件bb中,再复制到子目录dd中名为cc的文件中。

cp aa bb

cp aa dd/cc

76.把文件bb的存取属性设置为对文件属主可读,可写和可执行。对组用户和其他用户可读,不可写和不可执行。

chmod u+rwx bb

chmod g-rwx o-rwx bb

77.为系统添加一个组名,组名为cat,然后把文件aa的组名更改为cat

groupadd cat

chgrp cat aa

78.用长格式显示当前目录,把该信息附加重定向到文件wang1中,然后用长格式显示子目录dd中的信息,把该信息附加重定向到文件wang1中。

ls -l

ls -l >>wang1

ls -l dd >>wang1

79. 查找/bin目录中所有字母v开头的文件,且把定位结果重定向到文件wang2中。

find /bin -name “v*”

find /bin -name “v*”>wang1

80.查找ps命令的帮助信息,把该信息附加重定向到文件wang2中。

man ps

man ps >>wang2

81.查看20177月份的月历,把结果重定向到文件song1中。

cal 7 2017

cal 7 2017 >song1

82. 创建子目录dd,然后把当前目录信息以长格式附加重定向到文件song1中。

mkdir dd

ls -l >>song1

83.查看当前系统日期和时间信息,且把该信息附加重定向到文件song1中。

date

date>>song1

84.复制song1到文件copy1和文件copy2中,对组用户设置文件copy2具有只读属性且可写和不可执行。

cp song1 copy1

cp song1 copy2

chmod g+r copy2

chmod g-wx copy2

85.用长格式显示当前目录信息,把该信息附加重定向到文件song1中,删除文件copy2,再用长格式显示当前目录信息,把该信息附加重定向到文件song1中。

ls -l

ls -l >>song1

rm copy2

ls -l >>song1

86.把目录dd改名为gg 用长格式显示当前目录信息,把该信息附加重定向到文件song1中。

mv dd gg

ls -l >>song1

87. 把系统中所有环境变量的值重定向到文件song2中。

env

env >song2

88.把当前文件系统的有效空间信息,附加重定向到文件song2中。

df

df >>song2

89.显示当前目录的路径,把结果重定向到文件tang1中。

pwd

pwd>tang1

90.查看HOME变量的值,且把该信息附加重定向到文件tang1中。

echo $HOME

echo $HOME >>tang1

91. 复制test1文件到另外两个文件中,这两个文件的名称分别为new1,new2

cp test1 new1

cp test1 new2

92.当前目录下,创建目录www,把文件new1复制到www中的文件new3中。

mkdir www

cp new1 www/new3

93. 显示当前系统正在运行的进程信息,把该信息附加重定向到文件tang1中。

ps -ef

ps -ef >>tang1

94.用长格式显示当前目录包括点文件在内的所有文件,把该信息附加重定向到文件tang1中。

ls -a

ls -a >>tang1

95.删除文件new1,用长格式显示当前目录中的所有文件,把该信息重定向到文件tang2中。

rm new1

ls -l >tang2

96.在当前目录下,输出”hello world”显示信息,把该信息附加重定向到文件tang2中。

echo “hello world”

echo “hello world ” >>tang2

vi编辑器上机操作题

1.分别把2016的全年的年历输出到文件f1中,把20177月份的月历输出到文件test3中,用vi编辑器一次编辑文件f1nt3

f1文件的4,5,6月所在行开始的7行复制并粘贴到文件nt3的最后一行后。

把文件test3“July2017”所在的行删除。

在文件test3的首行前插入一行,输入文字“information of year”

在文件test3的最后一行后面附加上/bin目录中的文件清单。



2.把下面一段文字用vi编辑器输入到文本文件bj3中:

Time: PM 3:30 2012.5.30

PlaceComputer Hall 408

LectureHistory of Computer Science

把第1行到第3行连续复制3遍。

在第一行前面添加标题“Meeting Notes”

把最后一行的“History”改成“Future”

4在最后一行后面添加上20125月月历。


3.vi编辑器新建文件文件gd3,输入下面一行语句:

The vi editor was developed at the Univesity of California,Berkeley.

把该行语句复制10行。

把最后一行中出现的所有大写字母均改为相应的小写字母。

在第一行前面插入标题,内容是“vihistory”

在最后一行附加上当前日期和时间。


4.分别把20143月输出到文件f1中,把20133月份月历输出到文件test3中,用vi编辑器一次编辑文件f1test3

f1文件的第2行到第5行内容复制并粘贴到文件test3的第3行后。

在文件test3的第1行前面插入标题 newinformation

删除文件test3的最后两行。

在文件test3的最后一行后面附加上当前注册的用户信息。


5.ps -ef命令查看进程信息,把结果信息重定向到文本文件wh3中,用vi编辑器编辑该文件。

1)仅仅保留该文件的前面5行,把后面的行都删除。

2)把该文件第1行中的字符串“PID”改成“Process ID”

3)把第1行内容整体复制到最后一行下面。

4)在最后一行后面附加上20125月份的月历。


6.df命令查看文件系统,把结果信息重定向到文本文件nj3中,用vi编辑器编辑该文件。

1)在文件的第1行前面插入一行,添加标题“file system information”

2)把添加的标题行再复制5遍到最后一行下面。

3)把该文件中的出现的所有%号都删除掉。

4)在最后一行后面附加上当前目录的清单。


7.2012年的5月份的月历重定向到文本文件te3中,用vi编辑器编辑该文件。

1)把文件第一行的标题“May 2012” 改为“year 2012 month 5”

2)把关于星期的第二行复制到最后一行后面。

3)整体删除日期2026号所在的行。

4)在最后一行后面附加上当前磁盘上文件系统的信息。


8.2013年的年历重定向到文本文件tt3中,用vi编辑器编辑该文件。

1)删除1月份,2月份和3月份的月历。

2)4,5,6月的月历整体复制到最后一行。

3)把文件第一行的标题“2013”改为“2013 year”

4)在最后一行后面附加上20126月份的月历。


9.2018年的年历重定向到文本文件qq3中,用vi编辑器编辑该文件。

1)删除从首行开始的9行。

2)4,5,6月的月历整体复制到最后一行。

3)在第一行前面插入标题“2018 year”

4)在最后一行后面附加上/etc/group文件的内容。


10.2019年的5月份的月历重定向到文本文件pp3中,用vi编辑器编辑该文件。

1)把文件第一行的标题“May 2019” 改为“This is year 2019 month 5”

2)把关于是星期几的第二行复制到最后一行后面。

3)整体删除日期16号所在的那一行。

4)在最后一行后面附加上目录/proc的清单内容。


11.vi编辑器编辑新文件test3

1)test3文件的第1行输入“hello world ”

2)接下来附加上文件系统的有效空间信息。

3)然后删除test3文件中的最后1行。

4)把第1行的内容复制5行,放到test3文件的最后一行后面。


12.env命令查看环境变量,把结果信息重定向到文本文件dd3中,用vi编辑器编辑该文件。

1 仅仅保留该文件的前面5行,把后面的行都删除。

2 在该文件第1行前面插入一行“environment variable”

3 把新的第1行内容整体复制5行到最后一行下面。

4 在最后一行后面附加上当前系统日期和时间。


Shell编程上机操作题

1编写Shell程序,首先显示提示信息:“below is the information of command line”,然后显示命令行中的程序名称,接着一行显示实际给出的所有实参字符串,最后一行再显示命令行上参数的个数。

echo "below is the infomaion of command line"

echo $0

echo $*

echo $#


2编写Shell程序,首先显示进程状态信息,接着把值12345赋给变量A1,然后输出一行信息“the value of A1 is,然后输出变量A1的值。

A1=12345

echo "the vlue of A1 is:"

echo $A1


3编写Shell程序test4,首先着输出一行提示信息please input a integer,然后从键盘读入一个整数,接着显示该整数值,最后显示文件test4的内容。

echo "please input a integer"

read x

echo $x

cat test4


4编写Shell程序,首先显示一行信息:“input x and y”,然后从键盘读入两个整数,接着显示“the sum oftwo input is ”,然后把两个数的和输出到屏幕上,最后输出系统当前日期和时间信息。

echo "inputx and y"

read x y

echo "the sum of two input is"

((s=x+y))

echo $s

date


5编写Shell程序,首先输出一行“this is the information of users”的提示信息,接着查看当前注册的用户信息,然后查找目录/bin中的所有以字母l开头的文件,最后显示当前工作路径。

echo "this is the infomation of users"

who

pwd


6编写Shell程序,首先输出提示信息"please input x",然后从键盘读入一个整数,接着判断该数是否大于11,如果是则输出201212月份的月历,否则输出201311月份的月历。

echo "please input x"

read x

if ((x>=11))

then

cal 12 2012

else

cal 11 2013

fi


7编写Shell程序,首先输出一行提示信息:“please input a integer ”,接着从键盘输入一个整数,然后把该整数乘以10之后的值输出。

echo "please input a number "

read x

((x=x*10))

echo $x


8编写Shell程序,首先输出一行提示信息:“hello world”,接着给变量A赋值54321,然后把变量A的值减去10,接着输出变量A的值,最后显示该文件的内容。

echo "hello world "

A=54321

((A=A-10))

echo $A

cat test4


9编写Shell程序,首先显示日期和时间,然后显示当前工作目录,接着添加一个名为ecnomics的组,最后查找/usr目录下字母m开头的文件。

date

pwd

groupadd ecnomics

find /usr -name “m*”


10 编写Shell程序,首先显示命令ps的帮助信息,然后查看当前注册用户,查询域名 HYPERLINK "http://www.ntu.edu.cn" www.ntu.edu.cn 对应的IP地址,最后显示“all done”信息。

man ps

w

nslookup www.ntu.edu.cn

echo “all done “


11编写Shell程序,首先输出一行“hello everybody”的提示信息,接着添加一个名为xyz的用户信息,然后查找目录/proc中的所有以字母c开头的文件,最后删除名为yyy的文件。

echo “hello everybodyman”

useradd xyz

find /proc -name “c*”

rm -fyyy


12编写Shell程序test4,首先显示当前与主机连接的主机名和网卡硬件信息,然后查询域名 HYPERLINK "http://www.edn.cn" www.edn.cn 对应的IP地址,接着查找/bin目录下属于用户root的文件,最后显示文件test4的内容。

arp

nslookup www.edu.cn

find /bin -user root

cat test4



13编写Shell程序,使其执行时在屏幕上输出整数1~50,但其中位于2030之间的偶数不输出。

for ((i=1;i<=50;i++))

do

if ((i>=20 && i<=30 && i%2==0))

then continue

fi

echo $i

done


14编写Shell程序,在屏幕上输出10行,第一行输出1“*”号,第二行输出3“*”号,第二行输出5“*”号,依此类推。

for ((i=1;i<=10;i++))

do

for ((j=1;j<=2*i-1;j++))

do

echo -n "*"

done

echo

done


15编写Shell程序,输入一批正整数(以0为结束标志),请统计其中奇数的个数,并把统计结果输出。

sum=0

echo "please enter the interger,ended by 0"

read num

while((num!=0))

do

if((num%2==1))

then ((sum=sum+1))

fi

read num

done

echo "the number of ji shu is $sum"


16 编写Shell程序,求1*1+2*2+3*3+…….+50*50的总和。

sum=0

for ((i=1;i<=50;i++))

do

((ji=i*i))

((sum=sum+ji))

done

echo $sum


17编写Shell程序,列出等差数列1,3,5,7,9,…的前20项及其总和。(上机)

n=1

s=0

for ((i=1;i<=20;i++))

do

echo $n

((s=s+n))

((n=n+2))

done

echo "sum=$s"


18编写Shell程序,把100分转换为5级计分制,从键盘输入百分值,根据情况,显示具体的等级,其中90-100之间对应A80-89之间对应B70-79之间对应C60-69之间对应D60以下对应E

echo "please input x="

read x

if(($x<=100 && $x>=90))

then

echo "A"

else

if(($x>=80 && $x<=89))

then

echo "B"

else

if(($x>=70 && $x<=79))

then

echo "C"

else

if(($x>=60 && $x<=69))

then

echo "D"

else

echo "E"

fi

fi

fi

fi


19编写Shell程序,在屏幕上输出如下格式的九九表。

1*1=1

2*1=2 2*2=4

……………….

8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64

9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81


for ((i=1;i<=9;i++))

do

for ((j=1;j<=i;j++))

do

((b=i*j))

echo -n "$i*$j=$b "

done

echo

done


20编写程序test5,对命令行传给它的数字参数求和并显示结果,例如

用户键入test5 10 20 30回车,则显示如下:

10 + 20 + 30 = 60

count=$#

s=0

i=1

while [ $i -le $count ]

do

((i=i+1))

echo -n "$1"

((s=s+$1))

shift

if [ $i -le $count ]

then

echo -n "+"

fi

done

echo "=$s"


21编写程序test5,对命令行传给它的数字参数求积并显示结果,例如用户键入test5 243后回车,则屏幕显示如下:2 * 4 * 3 = 24

count=$#

s=1

i=1

while [ $i -le $count ]

do

((i=i+1))

echo -n "$1"

((s=s*$1))

shift

if [ $i -le $count ]

then

echo -n "*"

fi

done

echo "=$s"


22编写Shell程序test5,使之从命令行接受数字,输出最大值,例如,键入test5 1 2 3,则屏幕显示:the largest number is : 3

n=$#

if (($#<1))

then echo "error number"

exit

else

max=$1

while ((n>=1))

do

if (($1>=max))

then max=$1

fi

shift

((n=n-1))

done

echo " the largest number is :$max"

fi


23编写程序test5,使之从命令行接受数字,输出最小值,例如,键入test5 1 2 3屏幕显示:the smallest number is : 1

n=$#

if (($#<1))

then echo "error number"

exit

else

min=$1

while ((n>=1))

do

if (($1<=min))

then min=$1

fi

shift

((n=n-1))

done

echo " the smallest number is : $min"

fi


24编写Shell程序,求1+ 2+ 3+….+ 10!的值。

s=0

echo "please input number:"

read x

for ((i=1;i<=x;i++))

do

t=1

for ((j=1;j<=i;j++))

do

((t=t*j))

done

((s=s+t))

done

echo "the sum is $s"


PAGE \* MERGEFORMAT8



PAGE



PAGE8







易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!