linux课后习题答案(第二次修订)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.8

#!/bin/bash

count=$#

cmd=echo

while [ $count -gt 0 ] do

cmd="$cmd \$$count" ((count-=1))

done

eval $cmd

4.8.2(是指4.8的第二种写法)

#!/bin/bash

count=$#

while [ $count -gt 0 ] do

x="echo -n \$$count"

eval $x

echo -n " "

((count-=1))

Done

#4.9 copy到指定目录

dir=$1

shift

while [ $# -ne 0 ]

do

cp $1 $dir

shift

done

4.9.2(同上)

dir=$1

shift

for i

do

cp $i $dir

done #4.10 查询用户

date

read user

if grep $user

/etc/passwd >/tmp/null

who|grep $user

then echo "hi, $user"

fi

#4.11 print指定文件

dir=$1

cd $dir

shift

for i in $*

do

pr $i

done

4.11.2

dir=$1

shift

cd $dir

while [ $# -ne 0 ]

do

pr $1

shift

done

4.12

#!/bin/bash

for i in ./*.c

do

cp $i $1

done

ls -l $1 | sort -n -k5

4.13

#!/bin/bashcity=(Beijin

g Shanghai Tianjin

Chongqing Guangzhou

Shenzhen Suzhou Hangzhou

Nanjing Xian)

for i in ${city[@]}

do

echo $i

done

4.17

#!/bin/bash

alias ll='echo `date`;

echo `pwd`; echo "There

are `who|wc-l` users in

system"'

4.18

#!/bin/bash

read x

((count=$2-$1))

echo

${x:(($1-1)):(($count+1

))}

这些是老师上课说的第四

章重点看的题

4.5

1. 单引号 ( '' )

# grep Susan phonebook

Susan Goldberg

403-212-4921

Susan Topple

212-234-2343

如果我们想查找的是Susan

Goldberg,不能直接使用

grep Susan Goldberg

phonebook命令,grep会把

Goldberg和phonebook当

作需要搜索的文件

# grep 'Susan Gold' phonebook

Susan Goldberg

403-212-4921

当shell碰到第一个单引号时,它忽略掉其后直到右引号的所有特殊字符

2. 双引号 ( " " )

双引号作用与单引号类似,区别在于它没有那么严格。单引号告诉shell忽略所有特殊字符,而双引号只要求忽略大多数,具体说,括在双引号中的三种特殊字符

不被忽略:$,\,` ,即双引号会解释字符串的特别意思,而单引号直接使用字符串.如果使用双引号将字符串赋给变量并反馈它,实际上与直接反馈变量并无差别。如果要查询包含空格的字符串,经常会用到双引号。

# x=*

# echo $x

hello.sh menus.sh misc.sh phonebook tshift.sh

# echo '$x'

$x

# echo "$x"

*

这个例子可以看出无引号、单引号和双引号之间的区别。在最后一种情况中,双引号告诉shell在引号内照样进行变量名替换,所以shell把$x替换为*,因为双引号中不做文件名替换,所以就把*作为要显示的

值传递给echo。对于第一种情况需要进一步说明,

shell在给变量赋值时不进

行文件名替换(这从第三种

情况中也能看出来),各步

骤发生的精确次序如下:

shell扫描命令行,把x的

值设为星号*;

shell再次扫描命令行,碰

到星号*,把它替换成当前

目录下的文件清单;

shell启动执行echo命令,

把文件清单作为参数传递

给echo.

这个赋值的先后次序非常

重要:shell先作变量替换,

然后作文件名替换,最后把

这行处理为参数

3. 反引号(``)

命令替换是指shell能够将

一个命令的标准输出插在

一个命令行中任何位置。

shell中有两种方法作命令

替换:把shell命令用反引

号或者$(...)结构括起来,

其中,$(...)格式受到

POSIX标准支持,也利于嵌

套。

# echo The date and time

is `date`

The date and time is 三 6

月 15 06:10:35 CST 2005

# echo Your current

working directory is

$(pwd)

Your current working

directory is

/home/howard/script

4.6答案

vim script02

(

#!bin/bash

a=”DOS file c…”;

echo $a;

)

bash

已知大题(可能性80%,因

为老师上课说了。。。)

第一章linux的特点(不知

道是不是大题)

第二章会有几道小题一道

大题(大题第一个)

第三章会出小题,无大题

第四章可能会出些小题

大题肯定会有(课后题会有

小改动)

第六章关于make会有一道

大题(确定)

第八章会有一两道小题

第九章老师说三道大题也

就是三个服务器的配置

(samba,NFS,ftp)

题型是:

填空(10道题)

选择(10道题)

大题(7道题)

主要的三大服务器配置

ftp服务器配置

#ftpd_banner=Welcome to

FTP Service

banner_file=/etc/vsftpd

/vsftp_banner_file //

欢迎文件

anonymous_enable=YES

//是否允许匿名用户登录

local_enable=YES //允

许本地用户登录?

write_enable=YES //

anon_word_readable_only

=YES //是否允许匿名用

户下载,默认为yes

相关文档
最新文档