linux课后习题答案(第二次修订)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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