2023年8月2日发(作者:)
第4章习题
1.进入和退出 vi 编辑器的方法有哪些?
参考答案:
a. 进入vi编辑器的方法:在系统提示符下,输入命令 vi 和想要编辑(建立)的文件名,便可进入 vi。
a) 退出vi编辑器的方法:“:wq”的功能是把编辑缓冲区的内容写到指定的文件中,以退出编辑器,回到 shell 状态下。
b) 其操作过程是,先输入冒号(:),再输入命令 wq,然后按 Enter 键。以下命令的操作方式均与其相同。
c) “:ZZ”的功能是仅当对所编辑的内容做过修改时,才将缓冲区的内容写到指定文件上。
d) “:x”的功能与“:ZZ”相同。
e) “:q!”的功能是强行退出 vi。感叹号(!)告诉 vi,无条件退出,不把缓冲区中的内容写到文件中。
2.vi 编辑器的工作方式有哪些?相互间如何转换?
参考答案:vi 编辑器有三种工作方式,即命令方式、输入方式及 ex
转义方式。
当输入命令 vi 后,进入 vi 编辑器时,就处于 vi 的命令方式。
通过输入 vi 的插入命令(i)、附加命令(a)、打开命令(o)、替换命令(s)、修改命令(c)或取代命令(r)即可以从命令方式进入到输入方式。
为使用 ex 转义方式,可输入一个冒号(:)。
3.建立一个文本文件,将光标移至第 5 行。分别用 c、C 和 cc 命令进行修改。 参考答案:略。
4.在 vi 编辑器之下,将光标上、下、左、右移动的方式有哪些?
参考答案:在键盘的右下方有 4 个表示方向的方向键,利用它们可以在输入方式下移动光标。每按一次“上”、“下”方向键,光标即相应地移动一行;每按一次“左”、“右”方向键,光标即在当前行上相应地移动一个字符位置。当光标位于行首(或行尾)时,又按下“左”方向键(或“右”方向键),系统会发出“嘟嘟”声,并且返回到命令方式。
5.vi 编辑器中复制一行文字并粘贴到另一位置用什么命令?
参考答案:复制命令yy 或 Y,然后用命令:p或shift+h。
6. 进入 vi 编辑器时,如果希望进入后,光标位于文件中的第 9 行上,应该输入什么命令?
参考答案:按8次j命令;
7.不管文件中的某一行被编辑了多少次,总能把它恢复成被编辑之前的样子,应使用什么命令?
参考答案:U
8.要将编辑文件中的所有的字符串 s1 全部用字符串 s2 替换,包括在一行多次出现的字符串,应使用的命令格式是什么?
参考答案:R
9.使用 vi 编辑器在目录里创建一个文本文件,然后输入一篇英文文章,并练习使用各种编辑命令。
参考答案:略 第五章习题
1.什么是 shell?Red Hat Linux 系统默认的是哪一种 shell?
参考答案: shell 就是紧紧包裹在 Linux 内核外面的一个壳程序。用户让操作系统做的所有任务,都是通过 shell 与系统内核的交互来完成的。shell 所处的地位,就相当于 DOS 中的 程序,但比 的功能更加强大。在 Red Hat Linux 中,系统默认提供给每个用户的 shell 是 bash。
2.shell 的主要功能是什么?bash 有什么特点?
参考答案:
对已有命令进行适当组合,构成新的命令,而且组合方式很简单。 提供了文件名扩展字符(通配符,如*,?,[]),使得用单一的字符串可以匹配多个文件名,省去了键入一长串文件名的麻烦。 可以直接使用 shell 的内置命令,而不需创建新的进程,如 shell 中提供的 cd、help、 kill、pwd、echo、alias、unalias、bg、fg、exit、export、fc、read、readonly 等命令。为防止因某些 shell 不支持这类命令而出现麻烦,许多命令都提供了对应的二进制代码,从而也可以在新进程中运算。允许灵活地使用数据流,提供通配符、输入输出重定向、管道线等机制,方便了模式匹配、I/O 处理及数据传输。结构化的程序模块,提供了顺序流程控制、分支流程控制及循环流程控制等。提供了在后台(&)执行命令的能力。
提供了可配置的环境,允许用户创建和修改命令、命令提示符及其他的系统行为。提供一个高级的命令语言,允许用户能创建从简单到复杂的程序。这些 shell 程序被称为 shell 脚本。利用 shell 脚本,可把用户编写的可执行程序与 Linux 命令结合在一起,可以作为新的命令使用,从而便于用户开发新的命令。
bash特点:可以提供自动补全命令行、命令行编辑及命令历史列表等功能。
3.执行 shell 脚本的方式主要是什么?
参考答案:输入重定向到 shell 脚本;以脚本名作为参数; 将 shell 脚本的权限设置为可执行,然后在提示符下直接执行它。
4.什么是重定向?什么是管道?
参考答案:重定向:重新设置命令的默认输入,输出,指向到自己文件。管道:由竖杠(|)隔开的若干个命令组成的序列。
5.说明三种引号的作用,以及有什么区别?
参考答案:
由双引号括起来的字符,除$、倒引号(`)及反斜杠()仍保留其特殊功能外,其余字符均作为普通字符对待。
用单引号括起来的字符都可作为普通字符出现.
用倒引号括起来的字符串被 shell 解释为命令行。
用倒引号括起来的可以是单个命令,也可以是多个命令的组合,如管道线等。另外,倒引号还可以嵌套使用。但应注意,嵌套使用时,内层的倒引号必须用反斜线()将其转义。
6.shell 有哪几种类型的变量?如何实现对变量的赋值和引用?
参考答案:
用户变量、内部变量及环境变量.
变量的赋值很简单。其一般形式是: 变量名=字符串/数字
引用: 通过给变量名加上前缀$(美元符)来访问变量的值
7.试说明下列命令的执行结果:
(1) ls [a-h]?.c
(2) sort
(3) ls |wc -l
(4) 假设当前目录为 /home,则
string1="$PWD";string2="$PWD" echo
"$string1 and $string2"
参考答案:
(1) 列出名字匹配表达式 [a-h]?.c 的文件夹内容。([a-h]?.c 匹配:开头字母为a-h,后跟1个任意字符,再后跟.c,比如 bx.c dh.c ez.c )
(2) 对text1排序并输出到text2文件中
(3) 把ls的结果输出到wc -l以计算其结果的行数
(4) ""/home" and "$PWD""
8.分析下面 shell 脚本的功能:
count=$#
cmd=echo
while
[ $count -gt
0 ] do
cmd="$cmd
$$count" let
count=$count-1 done
参考答案:
$:sh a b c d e
$:e d c b a
9.编写一个 shell 脚本,它把第二个位置参数及其以后的各个参数指定的文件拷贝到第一个位置参数指定的目录中。 参考答案:
#!/bin/bash
dir=$1
shift
while [$1]
do
file=$1
cp $1 $dir
shift
done
ls $dir
10.编写一个 shell 脚本,显示当天日期,查找给定的某用户是否在系统中工作。如果在系统中工作,就发一个问候给用户。
参考答案:
#!/bin/bash
date
if
who |grep “^$1”
then
write $1<
!
Echo “hello!”
fi
11.打印给定目录下的某些文件,由第一个参数指出文件所在的目录,其余参数是要打印的文件名。
参考答案:
#!/bin/bash
dir=$1
cd $dir
shift
for f in $@; do
cat $f
done
12.利用 for 循环将当前目录下的.c 文件移到指定的目录下,并按文件大小排序,显示移动后指定目录的内容。
参考答案:
#!/bin/bash
for file in `ls -l/root/a |grep “*.c”`
{
mv /root/a/$file/root/b
}
Ls -IS/root/b
13.编写一个脚本,求斐波那契数列的前 10 项及其总和。
参考答案:
#!/bin/bash
a=1
b=1
echo -n -e “$at$b”
let “n=a+b”
count=4
while [$count -gt 0]
do
let “a=a+b”
let “b=b+a”
echo -n -e “t$at$b”
let “n+=a+b”
let “count=count-1”
done
echo
echo “The sum is $n”
14.编写一个脚本,求前 10 个自然数之和。 参考答案:
#!/bin/bash
a=1
echo -n -e “$a”
let “n=a”
count=9
while [$count -gt 0]
do
let “a=a+1”
echo -n -e “t$a”
let “n+=a”
let “count=count-1”
done
echo
echo “The sum is $n”
2023年8月2日发(作者:)
第4章习题
1.进入和退出 vi 编辑器的方法有哪些?
参考答案:
a. 进入vi编辑器的方法:在系统提示符下,输入命令 vi 和想要编辑(建立)的文件名,便可进入 vi。
a) 退出vi编辑器的方法:“:wq”的功能是把编辑缓冲区的内容写到指定的文件中,以退出编辑器,回到 shell 状态下。
b) 其操作过程是,先输入冒号(:),再输入命令 wq,然后按 Enter 键。以下命令的操作方式均与其相同。
c) “:ZZ”的功能是仅当对所编辑的内容做过修改时,才将缓冲区的内容写到指定文件上。
d) “:x”的功能与“:ZZ”相同。
e) “:q!”的功能是强行退出 vi。感叹号(!)告诉 vi,无条件退出,不把缓冲区中的内容写到文件中。
2.vi 编辑器的工作方式有哪些?相互间如何转换?
参考答案:vi 编辑器有三种工作方式,即命令方式、输入方式及 ex
转义方式。
当输入命令 vi 后,进入 vi 编辑器时,就处于 vi 的命令方式。
通过输入 vi 的插入命令(i)、附加命令(a)、打开命令(o)、替换命令(s)、修改命令(c)或取代命令(r)即可以从命令方式进入到输入方式。
为使用 ex 转义方式,可输入一个冒号(:)。
3.建立一个文本文件,将光标移至第 5 行。分别用 c、C 和 cc 命令进行修改。 参考答案:略。
4.在 vi 编辑器之下,将光标上、下、左、右移动的方式有哪些?
参考答案:在键盘的右下方有 4 个表示方向的方向键,利用它们可以在输入方式下移动光标。每按一次“上”、“下”方向键,光标即相应地移动一行;每按一次“左”、“右”方向键,光标即在当前行上相应地移动一个字符位置。当光标位于行首(或行尾)时,又按下“左”方向键(或“右”方向键),系统会发出“嘟嘟”声,并且返回到命令方式。
5.vi 编辑器中复制一行文字并粘贴到另一位置用什么命令?
参考答案:复制命令yy 或 Y,然后用命令:p或shift+h。
6. 进入 vi 编辑器时,如果希望进入后,光标位于文件中的第 9 行上,应该输入什么命令?
参考答案:按8次j命令;
7.不管文件中的某一行被编辑了多少次,总能把它恢复成被编辑之前的样子,应使用什么命令?
参考答案:U
8.要将编辑文件中的所有的字符串 s1 全部用字符串 s2 替换,包括在一行多次出现的字符串,应使用的命令格式是什么?
参考答案:R
9.使用 vi 编辑器在目录里创建一个文本文件,然后输入一篇英文文章,并练习使用各种编辑命令。
参考答案:略 第五章习题
1.什么是 shell?Red Hat Linux 系统默认的是哪一种 shell?
参考答案: shell 就是紧紧包裹在 Linux 内核外面的一个壳程序。用户让操作系统做的所有任务,都是通过 shell 与系统内核的交互来完成的。shell 所处的地位,就相当于 DOS 中的 程序,但比 的功能更加强大。在 Red Hat Linux 中,系统默认提供给每个用户的 shell 是 bash。
2.shell 的主要功能是什么?bash 有什么特点?
参考答案:
对已有命令进行适当组合,构成新的命令,而且组合方式很简单。 提供了文件名扩展字符(通配符,如*,?,[]),使得用单一的字符串可以匹配多个文件名,省去了键入一长串文件名的麻烦。 可以直接使用 shell 的内置命令,而不需创建新的进程,如 shell 中提供的 cd、help、 kill、pwd、echo、alias、unalias、bg、fg、exit、export、fc、read、readonly 等命令。为防止因某些 shell 不支持这类命令而出现麻烦,许多命令都提供了对应的二进制代码,从而也可以在新进程中运算。允许灵活地使用数据流,提供通配符、输入输出重定向、管道线等机制,方便了模式匹配、I/O 处理及数据传输。结构化的程序模块,提供了顺序流程控制、分支流程控制及循环流程控制等。提供了在后台(&)执行命令的能力。
提供了可配置的环境,允许用户创建和修改命令、命令提示符及其他的系统行为。提供一个高级的命令语言,允许用户能创建从简单到复杂的程序。这些 shell 程序被称为 shell 脚本。利用 shell 脚本,可把用户编写的可执行程序与 Linux 命令结合在一起,可以作为新的命令使用,从而便于用户开发新的命令。
bash特点:可以提供自动补全命令行、命令行编辑及命令历史列表等功能。
3.执行 shell 脚本的方式主要是什么?
参考答案:输入重定向到 shell 脚本;以脚本名作为参数; 将 shell 脚本的权限设置为可执行,然后在提示符下直接执行它。
4.什么是重定向?什么是管道?
参考答案:重定向:重新设置命令的默认输入,输出,指向到自己文件。管道:由竖杠(|)隔开的若干个命令组成的序列。
5.说明三种引号的作用,以及有什么区别?
参考答案:
由双引号括起来的字符,除$、倒引号(`)及反斜杠()仍保留其特殊功能外,其余字符均作为普通字符对待。
用单引号括起来的字符都可作为普通字符出现.
用倒引号括起来的字符串被 shell 解释为命令行。
用倒引号括起来的可以是单个命令,也可以是多个命令的组合,如管道线等。另外,倒引号还可以嵌套使用。但应注意,嵌套使用时,内层的倒引号必须用反斜线()将其转义。
6.shell 有哪几种类型的变量?如何实现对变量的赋值和引用?
参考答案:
用户变量、内部变量及环境变量.
变量的赋值很简单。其一般形式是: 变量名=字符串/数字
引用: 通过给变量名加上前缀$(美元符)来访问变量的值
7.试说明下列命令的执行结果:
(1) ls [a-h]?.c
(2) sort
(3) ls |wc -l
(4) 假设当前目录为 /home,则
string1="$PWD";string2="$PWD" echo
"$string1 and $string2"
参考答案:
(1) 列出名字匹配表达式 [a-h]?.c 的文件夹内容。([a-h]?.c 匹配:开头字母为a-h,后跟1个任意字符,再后跟.c,比如 bx.c dh.c ez.c )
(2) 对text1排序并输出到text2文件中
(3) 把ls的结果输出到wc -l以计算其结果的行数
(4) ""/home" and "$PWD""
8.分析下面 shell 脚本的功能:
count=$#
cmd=echo
while
[ $count -gt
0 ] do
cmd="$cmd
$$count" let
count=$count-1 done
参考答案:
$:sh a b c d e
$:e d c b a
9.编写一个 shell 脚本,它把第二个位置参数及其以后的各个参数指定的文件拷贝到第一个位置参数指定的目录中。 参考答案:
#!/bin/bash
dir=$1
shift
while [$1]
do
file=$1
cp $1 $dir
shift
done
ls $dir
10.编写一个 shell 脚本,显示当天日期,查找给定的某用户是否在系统中工作。如果在系统中工作,就发一个问候给用户。
参考答案:
#!/bin/bash
date
if
who |grep “^$1”
then
write $1<
!
Echo “hello!”
fi
11.打印给定目录下的某些文件,由第一个参数指出文件所在的目录,其余参数是要打印的文件名。
参考答案:
#!/bin/bash
dir=$1
cd $dir
shift
for f in $@; do
cat $f
done
12.利用 for 循环将当前目录下的.c 文件移到指定的目录下,并按文件大小排序,显示移动后指定目录的内容。
参考答案:
#!/bin/bash
for file in `ls -l/root/a |grep “*.c”`
{
mv /root/a/$file/root/b
}
Ls -IS/root/b
13.编写一个脚本,求斐波那契数列的前 10 项及其总和。
参考答案:
#!/bin/bash
a=1
b=1
echo -n -e “$at$b”
let “n=a+b”
count=4
while [$count -gt 0]
do
let “a=a+b”
let “b=b+a”
echo -n -e “t$at$b”
let “n+=a+b”
let “count=count-1”
done
echo
echo “The sum is $n”
14.编写一个脚本,求前 10 个自然数之和。 参考答案:
#!/bin/bash
a=1
echo -n -e “$a”
let “n=a”
count=9
while [$count -gt 0]
do
let “a=a+1”
echo -n -e “t$a”
let “n+=a”
let “count=count-1”
done
echo
echo “The sum is $n”
发布评论