linux期末冲刺
得分细则
第一部分:选择题(30分)(15个,每题2分)
第二部分:填空题(20分)(10个,每空2分)
第三部分:编程题(20分)(5题,每题4分)
第四部分:综合题(30分) (2题,22+8)
选择题







-l。该选项会以长格式(long format)显示目录的内容,每个文件或目录占用一行,并列出文件或目录的详细信息,例如权限、所有者、大小、时间戳等。-t:按照修改时间(modification time)排序,最新修改的文件或目录会显示在前面。-r:按照相反的顺序排序,即倒序排列。-s:以文件大小(size)为基准,按照升序排列。这个选项通常用于查找占用磁盘空间较大的文件。-A:显示所有文件和目录,包括以.开头的隐藏文件和目录,但不包括.和..目录。这个选项通常用于查看隐藏文件。

-f选项表示“跟踪”(follow)文件,也就是当文件内容发生变化时,继续输出新的内容。-n选项可以指定输出的行数

选项 A,即
tr命令(“translate”),用于转换或删除文件中的字符,不是查看文件的命令。选项 B,即
less命令,可以用来查看文件内容,并且支持分页显示和滚动查看,但默认只显示文件的一页内容,需要不断按下“空格”键才能逐页查看。选项 C,即
more命令,也可以用来查看文件内容,并且支持分页显示和滚动查看,但与less命令不同的是,more命令只允许向前翻页,不允许向后滚动查看,而且在查看完一页后,需要按下“空格”键才能查看下一页。cat命令,可以显示文件的全部内容。



tar命令用于将多个文件或目录打包成一个文件,称为 tar 归档文件。c选项表示创建归档文件。z选项表示使用 gzip 压缩算法对归档文件进行压缩。v选项表示在归档和压缩过程中显示详细信息,即 verbose 模式。f选项表示指定归档文件的名称。x选项表示从归档文件中提取文件。(解压)a选项表示将文件追加到归档文件中。

*/5 * * * *表示每隔5分钟执行一次crontab任务。* */5 * * *表示每隔5小时执行一次crontab任务。* * */5 * *表示每个月的每个5天执行一次crontab任务。* * * */5 *表示每隔 5 个月的所有时间点上执行一次crontab任务。* * * * */5表示每隔 5 天执行一次crontab任务。


${arr[*]} 是一种数组变量展开的方式,它会将数组 arr 中的所有元素当成一个整体,用空格隔开,并打印出来。
${arr[@]},它也可以打印出数组 arr 中的所有元素,但是每个元素会被视为一个独立的单词。

let 命令可以用来执行简单的整数运算,例如加减乘除、赋值、自增自减等。它可以直接操作变量,也可以将计算结果赋值给变量。例如:
1 | cssCopy codea=5 |
{} 和 () 是用来定义命令组的,它们不是用来进行整数运算的。expr 命令可以用来进行数学表达式计算,但它比较麻烦,不如 let 命令方便。
exprs 并不是一个有效的 Linux 命令,它不具备任何实际作用。




rm {} \; 意味着对于每个匹配到的文件
\; 用于表示 -exec 选项的结束。
使用 {} 通常表示要删除多个文件,而 [] 通常表示要删除一组文件



unset命令用于取消或删除环境变量或函数。例如,要取消名为MY_VAR的环境变量,可以使用以下命令:unset MY_VAR。同样的,要取消名为myfunc的函数,可以使用unset -f myfunc。alias命令用于创建命令别名。使用别名可以简化命令行输入,特别是当你需要经常使用相同的命令,但是命令很长或复杂时,可以通过定义别名来减少输入量。例如,要将ls -l命令定义为别名ll,可以使用以下命令:alias ll='ls -l'。这样,以后输入ll就相当于输入了ls -l。如果要取消别名,可以使用unalias命令,例如unalias ll将取消ll别名。



这个命令的作用是:列出 /home 目录下的所有文件和子目录的详细信息,过滤出其中的普通文件(不包括目录和链接等),并统计其数量。
具体来说,ls -l /home 会以长格式显示 /home 目录下的所有文件和子目录的详细信息,其中以 - 开头的表示普通文件,grep ^- 用于过滤出其中的普通文件,wc -l 用于统计行数,也就是普通文件的数量。
因此,这个命令的输出结果是 /home 目录下普通文件的数量。
除了^-(表示普通文件)之外,还可以使用以下标识符来过滤其他类型的文件:
- d:表示目录文件(directory)
- l:表示符号链接文件(link)
- c:表示字符设备文件(character device)
- b:表示块设备文件(block device)
- s:表示套接字文件(socket)
- p:表示命名管道文件(named pipe)
比如,要过滤出目录文件,可以使用grep ^d。



- u 代表用户
- x 代表执行权限
- g 代表用户组.
- o 代表其他.
- a 代表所有.
- + 表示增加权限
ower即为文件创建者对文件可操作的权限,group为文件创建者所在组对文件可操作的权限,Others就是其它用户操作的权限了。
o + x是给其他人加上可执行权限。
u + x代表给文件创建者(所有者)加上可执行权限
a + x代表给所有人加上可执行权限


uniq 命令可以去除文本文件中的重复行,并且它要求输入的文本是按行排序好的,因此通常会与 sort 命令一起使用。tr 命令用于字符替换和字符删除,不适用于去重。diff 命令用于比较文本文件之间的差异。

crontab 是一个用于管理 Linux 中定时执行任务的命令,允许用户在指定时间执行指定命令或脚本。通过 crontab 命令,用户可以在系统空闲或指定的时间段执行定期或定时的任务。
mounts 并不是一个有效的命令或工具,正确的命令是 mount,可以用来挂载文件系统。


f: 用于在当前行中查找下一个出现指定字符的位置。例如,输入fx将在当前行中查找下一个出现x的位置。g: 用于执行一些高级命令。例如,输入gg将光标移动到文件的第一行,输入G将光标移动到文件的最后一行。

填空题
写出以下Shell特殊位置参数变量的含义
$0 获取脚本的名字,包含路径
$n $n(n=任意数字)代表脚本在命令行的第几个参数
$# 获取脚本参数的个数
$* 获取当前shell脚本所有传参的参数,如果不加引号作用同$@相同,如果加上双引号”$*”则表示将所有的参数视为单个字符串 相当于”$1$2$3”
$@ 获取当前shell脚本所有传参的参数,不加引号同$*相同,加上双引号则表示把所有的参数视为不同的独立的字符串
$? 获取执行上一个指令执行状态返回值,(0为成功,非0为失败)
$$ 获取当前shell脚本的进程号PID
$! 获取上一个在后台工作脚本进程的进程号PID
写出下面条件测试的含义
- [-e dir|file] 存在则为真
- [-d dir] 目录是否存在
- [-f file] 文件是否存在
- [-r file] 文件是否有读权限
- [-x file] 文件是否有执行权限
- [-w file] 文件是否有写权限
算术测试符
- -eq 等于则为真
- -ne 不等于则为真
- -gt 大于则为真
- -ge 大于等于则为真
- -lt 小于则为真
- -le 小于等于则为真
常用命令
ls:显示目录中的文件和子目录。touch:创建一个新的空文件,或者更新现有文件的时间戳。mkdir:创建一个新目录。pwd:显示当前工作目录的路径。cat:将文件的内容输出到终端。more:将文件内容逐页显示到终端上。head:显示文件的前几行。tail:显示文件的末尾几行。mount:将文件系统挂载到指定的目录。mkfs:创建一个新的文件系统。make file systemfdisk:查看和管理磁盘分区。fixed diskwc:用于查看文件的行数,单词数和字符数等信息。find:根据文件名或者目录查找文件。chmod:修改权限。chown、chgrp:修改文件所有者和用户组。etuid、setgid:设置用户和组权限位。
参数扩展内容
参数扩展就是通过符号$获得参数中存储的值
${!var}是一种间接引用(indirect reference)的用法,它用于获取变量的变量名所对应的值。${!var*},我们可以获取以var变量的值作为开头的所有变量名的列表。字符串搜索和替换
- ~~~shell
#!/bin/bashstr=”Hello, World!”echo “替换第一个匹配的 o 为 X: ${str/o/X}”1
2
3
4
5
6
7
- ~~~shell
#!/bin/bash
str="Hello, World!"
echo "替换所有的 o 为 X: ${str//o/X}"
- ~~~shell
`$




