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
`$