Linux期末复习
题型:选择、填空、判断、匹配、改错
1.代码改错题
1.1找出以下代码中的错误,即显示所有以字符a开头的文件的名称,并且我们对这些文件有阅读权限
for f in a*
do
if test –d $f –a test ! –r $f
then
echo $f
fi
done
改:把-d改成-f 逻辑非去掉
#! /bin/bash
for f in a*
do
# if test –f $f –a –r $f
if [ -f $f -a -r $f ]
then
echo $f
fi
done
1.2找出以下代码中的错误,该代码运行时无限地要求用户输入一个文件名。该代码将不断询问文件名,直到有效的文件名被输入。
echo –n "Enter a file name"
read t
while test –f $f
do
echo "$f is not a file. Try again"
wait 60
done
改:
echo –n "Enter a file name"
#echo -n 不换行输出
#参数-n的作用是不换行,echo默认是换行
read t
while [ ! -f $t ]
#while test –f $t
do
echo "$t is not a file. Try again"
wait 60
read t
done
1.3纠正以下代码中的错误:代码用于计算当前目录中的文件和目录的数量。
x=0
y=0
for k in *
do
if test –f $z
then
((x=x+1))
fi
if test –d $z
then
[[y=y+1]]
fi
done
echo "The number of files are $x and
directories are $y"
改:**$z改$k [[]] 改 (()) 或者let**
#!/bin/bash
x=0
y=0
for k in *
do
#if test –f $k
if [ -f $k ]
then
((x=x+1))
fi
#if test –d $k
if [ -d $k ]
then
#(()) 或者 let
((y=y+1))
fi
done
echo "The number of files are $x and
directories are $y"
2.判断题
2.1作业判断题
1 shell脚本是一个由Unix命令和某些内置函数组成的集合。 对✅
2 expr命令可以对整数进行算术运算。 对✅
3 使用bc命令,我们进入计算器的模式。对✅
4 units命令用于将一个标准刻度的数值转换为另一个刻度。 对✅
5 我们不能在一条语句中执行一个以上的赋值。 错❌
6 $*代表命令行参数的数量。命令行参数的数量。 对✅
7 使用tr命令,我们不仅可以翻译字符,还可以删除匹配的 字符。 对✅
8 我们可以用egrep工具指定一个以上的模式进行搜索。 对✅
9 我们不能在shell脚本中使用逻辑运算符。 错❌
10 当模式匹配时,'^'表示开始,'$'表示结束。 对✅
1 默认情况下,sed的打印选项总是打开的。
2 要选择文件的最后一行,我们使用^选项。 错❌ 应该用$
3 sed的q选项是为了显示寻址行后退出。
4 w命令用于将选定的行写入单独的文件中。
5 在sed中,我们不能打印一个文件的内容,然后再打印另一个文件的内容 错❌。
6 l选项用于打印行号和文件内容。
7 vi编辑器有两种操作模式。 错❌ 有三种
8 我们可以在vi编辑器中按字符e或E从命令模式切换到插入模式。 错❌
9 :w命令用于写入文件并继续编辑。 对✅
10 vi中的$命令是用于将光标移动到行的最后一个字符。对✅
13 要删除vi中的一行,可以使用dd命令。 对✅
14 :set nu命令用于在显示文件内容时删除行号。 错❌ 是显示行号
3.1ls命令显示的的文件和目录列表默认是按字母顺序排列。 true
3.2与ls命令一起使用的选项-R,可以按相反的顺序查看文件和目录的名称。 True
3.3我们使用mkdir命令一次只能创建一个目录。 True
3.4cd命令,如果不加任何参数,就会把我们带到主目录。True
3.5使用touch命令,我们只能改变文件的时间戳,但不能创建文件。 False
3.6用cat命令创建文件时,我们需要用Ctrl+d来指定文件的结束。 True
3.7使用rmdir命令,我们也可以删除非空目录。False
3.8如果我们用cp命令使用-i选项,如果目标文件已经存在,它会在覆盖之前提示我们。 True
3.9cp命令是用来复制文件的,我们不能用它来复制整个目录及其文件和子目录。 False
3.10我们可以用一条rm命令删除多个文件。 True
3.11使用rm命令,即使我们没有写权限,也可以强行删除一个文件。 True
3.12使用mv命令,我们可以将一个文件从一个目录移动到另一个目录,但不能重命名它。False
3.13硬链接要在当前目录结构内创建。 False
3.14我们可以通过Ctrl-d退出Unix系统。 True
3.15通过cal命令,我们无法看到上个月的日历。 False
3.16通过finger命令,可以看到用户的邮件状态。 True
3.17通过uname命令,可以了解操作系统的版本和版本号。 True
3.18通配符'?'代表一个字符。 True
3.19bc或基本计算器命令可以用来求一个数字的平方根。True
unlink命令不能删除符号链接。 Flase
3.填空选择(知识点总结)
3.1.通过3个方法进入home目录
cd ~
cd
cd $HOME
3.1.2空行怎么表示
^$
3.1.3 vi编辑器
在普通模式下使用下面的键将进入插入模式,并可以从相应的位置开始输入
命令 | 说明 |
---|---|
i |
在当前光标处进行编辑 |
I |
在行首插入 |
A |
在行末插入 |
a |
在光标后插入编辑 |
o |
在当前行后插入一个新行 |
O |
在当前行前插入一个新行 |
cw |
替换从光标所在位置后到一个单词结尾的字符 |
3.1.4 sed
3.1.5 grep
3.1.6 重定向

命令 >> 文件 2>&1 和 命令 &>>文件 两个命令作用相同
系统有个常见用法 ls &>/dev/null 正确输出或错误输出结果都不要。(null可以理解为黑洞或垃圾站)
命令>>文件1 2>>文件2 正确日志和错误日志分开保存
例:nohup java -jar /usr/sbin/lb-agent.jar >>/var/log/lb-agent.log 2>&1 &
将jar执行的结果写入到lb-agent.log中
在命令最后加上&符号,表示让这个进程到后台去执行,这样立刻返回到提示符状态,我们可以接着做下面的事。如:command &。
这种“后台”进程在shell一直打开的情况下是没有问题的,如果我们关了shell窗口甚至退出ssh登录或vnc登录,那么进程自动就结束了。所以如果想退出窗口乃至退出登录仍然保持程序运行,再加上nohup,形如:nohup command 1>output 2>&1 &
3.1.7 Linux的基本命令
看黄大春给的LinuxCommandLineCheatSheet.pdf 或者网上百度
pwd 当前目录绝对路径
cd
ls -l -a
touch 创建文件
mkdir 创建目录
rmdir 删除空目录
cp 复制文件
mv 移动文件 重命名文件
rm 删除 -rf 强制删除
wc -l 统计行数 可能会考
du 目录 文件占用数量
df 磁盘使用情况
file 查询文件类型
cat
less 回卷显示。按下回车键Enter读区下一行内容 q退出
more 分页显示
head 文件头部
tail 文件尾巴
date 当前时间
cal 日历
echo 输出
uname 系统相关信息
hostname 计算机主机名
tar -xvf -x解压 -v显示过程 -f使用归档文件,位置在最后 -z通过gzip过滤文档
tar -cvf -归档
变量赋值的时候不能有空格 x=1 y="Hello Linux" 有空格的变量要用“”
取x变量值 echo $x echo $y
3.1.8正则表达式


3.1.9 预定义变量
$?
命令执行后的返回状态 0表示结果正确 非0表示有错误
$0
当前执行的进程名 ⚠️ 是一个特殊变量 不是位置参数
3.1.10 数字比较
-eq =
-ge >=
-le <=
-ne !=
-gt >
-lt <
3.1.11 逻辑测试
! 逻辑非
-a 逻辑与
-o 逻辑或
3.1.12文件操作测试
-d 目录
-f 文件
-r 可读
-w 可写
-s 长度非0
3.1.13 权限
drwxr-xr-x 目录
-rwxrwxrwx 文件 777
chmod 777 fileName
chmod +x fileName
3.2作业填空题
1 shell脚本中的变量必须在前面加上($)。
2 在shell脚本中,注释的前面是符号(#)。
3 let命令可以用( (()) )代替。
4 要从计算器模式中出来,我们使用(quit)命令。
5 用于对一个数字进行因式分解的命令是(expr)。
6 在shell脚本中的乘法符号前面必须有一个(\),否则它将被当作一个通配符来处理。
7 在echo命令中用来避免输出换行符的选项是(-n)。
8 预定义的变量有两类。() 和()。
9 用来计算文件中的行数、字数和字符数的命令是(wc)。
10 用于在文件中搜索指定模式的字符串的实用程序是(grep)。
3.1使用ls命令查看隐藏文件的选项是 ls -a 。
3.2用mkdir命令创建指定权限的目录时,使用的选项是_ mkdir -m 。
3.3使用cd命令,我们可以给出绝对以及_ 相对 路径名。
3.4用于知道我们当前工作目录的命令是_ pwd 。
3.5touch命令中用于改变修改或访问时间的时间表达式格式是_
touch -m 。
3.6rmdir命令用于删除空父目录的选项是_ -p 。
3.7rm命令使用的 -r 选项用于递归删除指定目录的所有文件和子目录。
3.8用于为文件建立链接的命令是_ ln 。
3.9有两种类型的文件链接_ 软链接 和_ 硬链接 。
3.10与date命令一起使用的只显示时间的选项是_ +%r 。
3.11bc命令中用于查找自然对数的函数是 l() 。
3.12用于显示当年日历的命令是_ cal 。
3.13用于显示登录用户信息的命令,包括主页目录、登录shell、邮件状态、电话号码等是 finger。
3.14用ls命令显示文件的inode数的选项是 -n 。