得分细则

第一部分:选择题(30分)(15个,每题2分)

第二部分:填空题(20分)(10个,每空2分)

第三部分:编程题(20分)(5题,每题4分)

第四部分:综合题(30分) (2题,22+8)

选择题

image-20230508112554705

image-20230508112603219

image-20230508112610618

image-20230508112618029

image-20230508112629903

image-20230508112729610

image-20230508113013134

  • -l。该选项会以长格式(long format)显示目录的内容,每个文件或目录占用一行,并列出文件或目录的详细信息,例如权限、所有者、大小、时间戳等。

  • -t:按照修改时间(modification time)排序,最新修改的文件或目录会显示在前面。

  • -r:按照相反的顺序排序,即倒序排列。

  • -s:以文件大小(size)为基准,按照升序排列。这个选项通常用于查找占用磁盘空间较大的文件。

  • -A:显示所有文件和目录,包括以.开头的隐藏文件和目录,但不包括...目录。这个选项通常用于查看隐藏文件。

image-20230508113300632

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

  • -n选项可以指定输出的行数

image-20230508113602634

  • 选项 A,即 tr 命令(“translate”),用于转换或删除文件中的字符,不是查看文件的命令。

  • 选项 B,即 less 命令,可以用来查看文件内容,并且支持分页显示和滚动查看,但默认只显示文件的一页内容,需要不断按下“空格”键才能逐页查看。

  • 选项 C,即 more 命令,也可以用来查看文件内容,并且支持分页显示和滚动查看,但与 less 命令不同的是,more 命令只允许向前翻页,不允许向后滚动查看,而且在查看完一页后,需要按下“空格”键才能查看下一页。

  • cat 命令,可以显示文件的全部内容。

image-20230508113900887

image-20230508114134110

image-20230508114358387

  • tar 命令用于将多个文件或目录打包成一个文件,称为 tar 归档文件。

  • c 选项表示创建归档文件。

  • z 选项表示使用 gzip 压缩算法对归档文件进行压缩。

  • v 选项表示在归档和压缩过程中显示详细信息,即 verbose 模式。

  • f 选项表示指定归档文件的名称。

  • x 选项表示从归档文件中提取文件。(解压)

  • a 选项表示将文件追加到归档文件中。

image-20230508114841853

  • */5 * * * * 表示每隔5分钟执行一次 crontab 任务。

  • * */5 * * * 表示每隔5小时执行一次 crontab 任务。

  • * * */5 * * 表示每个月的每个5天执行一次 crontab 任务。

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

  • * * * * */5 表示每隔 5 天执行一次 crontab 任务。

image-20230508115932021

image-20230508115954356

${arr[*]} 是一种数组变量展开的方式,它会将数组 arr 中的所有元素当成一个整体,用空格隔开,并打印出来。

${arr[@]},它也可以打印出数组 arr 中的所有元素,但是每个元素会被视为一个独立的单词。

image-20230508120301903

let 命令可以用来执行简单的整数运算,例如加减乘除、赋值、自增自减等。它可以直接操作变量,也可以将计算结果赋值给变量。例如:

1
2
3
4
cssCopy codea=5
b=3
let c=a+b # 计算 a+b 的结果并将结果赋值给变量 c
echo $c # 输出 8

{}() 是用来定义命令组的,它们不是用来进行整数运算的。expr 命令可以用来进行数学表达式计算,但它比较麻烦,不如 let 命令方便。

exprs 并不是一个有效的 Linux 命令,它不具备任何实际作用。

image-20230508120719017

image-20230508120838260

image-20230508121021012

image-20230508121030453

rm {} \; 意味着对于每个匹配到的文件

\; 用于表示 -exec 选项的结束。

使用 {} 通常表示要删除多个文件,而 [] 通常表示要删除一组文件

image-20230508121933326

image-20230508121940460

image-20230508121947807

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

image-20230508122114159

image-20230508122243328

image-20230508122319558

这个命令的作用是:列出 /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。

image-20230508122610437

image-20230508122627253

image-20230508122634262

  • u 代表用户
  • x 代表执行权限
  • g 代表用户组.
  • o 代表其他.
  • a 代表所有.
  • + 表示增加权限

ower即为文件创建者对文件可操作的权限,group为文件创建者所在组对文件可操作的权限,Others就是其它用户操作的权限了。

o + x是给其他人加上可执行权限。

u + x代表给文件创建者(所有者)加上可执行权限

a + x代表给所有人加上可执行权限

image-20230508123133791

image-20230508123152651

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

image-20230508123223538

crontab 是一个用于管理 Linux 中定时执行任务的命令,允许用户在指定时间执行指定命令或脚本。通过 crontab 命令,用户可以在系统空闲或指定的时间段执行定期或定时的任务。

mounts 并不是一个有效的命令或工具,正确的命令是 mount,可以用来挂载文件系统。

image-20230508123334402

image-20230508123343960

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

image-20230508123401583

填空题

  1. 写出以下Shell特殊位置参数变量的含义

    • $0 获取脚本的名字,包含路径

    • $n $n(n=任意数字)代表脚本在命令行的第几个参数

    • $# 获取脚本参数的个数

    • $* 获取当前shell脚本所有传参的参数,如果不加引号作用同$@相同,如果加上双引号”$*”则表示将所有的参数视为单个字符串 相当于”$1$2$3”

    • $@ 获取当前shell脚本所有传参的参数,不加引号同$*相同,加上双引号则表示把所有的参数视为不同的独立的字符串

    • $? 获取执行上一个指令执行状态返回值,(0为成功,非0为失败)

    • $$ 获取当前shell脚本的进程号PID

    • $! 获取上一个在后台工作脚本进程的进程号PID

  2. 写出下面条件测试的含义

    • [-e dir|file] 存在则为真
    • [-d dir] 目录是否存在
    • [-f file] 文件是否存在
    • [-r file] 文件是否有读权限
    • [-x file] 文件是否有执行权限
    • [-w file] 文件是否有写权限
  3. 算术测试符

    • -eq 等于则为真
    • -ne 不等于则为真
    • -gt 大于则为真
    • -ge 大于等于则为真
    • -lt 小于则为真
    • -le 小于等于则为真
  4. 常用命令

    • ls:显示目录中的文件和子目录。

    • touch:创建一个新的空文件,或者更新现有文件的时间戳。

    • mkdir:创建一个新目录。

    • pwd:显示当前工作目录的路径。

    • cat:将文件的内容输出到终端。

    • more:将文件内容逐页显示到终端上。

    • head:显示文件的前几行。

    • tail:显示文件的末尾几行。

    • mount:将文件系统挂载到指定的目录。

    • mkfs:创建一个新的文件系统。make file system

    • fdisk:查看和管理磁盘分区。fixed disk

    • wc:用于查看文件的行数,单词数和字符数等信息。

    • find:根据文件名或者目录查找文件。

    • chmod:修改权限。

    • chown、chgrp:修改文件所有者和用户组。

    • etuid、setgid:设置用户和组权限位。

  5. 参数扩展内容

参数扩展就是通过符号$获得参数中存储的值

  • ${!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}"
  • `$