139、使用grep命令和/usr/share/hunspell/en_US.dic文件,找出包含以下单词之一的所有行:org、kay或tuna。
$ grep -E "org|kay|tuna" /usr/share/hunspell/en_US.dic
140、找出一个正则表达式,使其能匹配 “Include” 行中的单词,而不匹配 “Exclude” 行中的单词。Include 行:arcane, capper, zoology;Exclude 行:air, coper, zoloc
arc|cap|zoo
141、找出一个正则表达式,使其能匹配“Include”行中的单词,而不匹配“Exclude”行中的单词。Include行:0th/pt, 3th/tc, 9th/pt;Exclude行:0/nm, 3/nm, 9/nm。
[0-9]th.+
142、用户做了什么?
用户执行了
top
命令查看系统和各进程的内存与 CPU 消耗信息,可能还使用了
id
、
last
等命令查看用户信息和用户登录时间。
143、编写一个简单的脚本,检查是否恰好传入了两个参数。如果是,则按逆序打印这些参数。
#!/bin/bash
if [ $# -ne 2 ]; then
echo "Error"
else
echo "$2 $1"
fi
144、在代码中使用 == 和 -eq 有何不同?
使用
==
进行的是字符串比较,即当两个变量的字符完全匹配时,条件为真;而
-eq
用于数字比较,判断两个数值是否相等。字符串比较在测试数字时可能会导致意外结果,例如
1+1 == 2
结果为
false
,而使用数字比较则可正确判断数值关系。
145、编写一个简短的脚本,该脚本接受一个参数。如果传入了参数,检查该参数是否与当前目录的名称匹配。如果匹配,打印yes;否则,打印no。
#!/bin/bash
if [ "$1" == "$(basename $PWD)" ]; then
echo "yes"
else
echo "no"
fi
146、用户在 shell 中输入以下内容:$ PATH=~/scripts $ ls 命令 ‘ls’ 位于 ‘/bin/ls’,但因 ‘/bin’ 不在 PATH 环境变量中而无法找到该命令,显示 ‘ls: command not found’。用户做了什么?
用户用目录
~/scripts
覆盖了
PATH
的内容,由于
'ls'
命令不在
PATH
中,所以无法找到该命令。此更改仅影响当前会话,注销并重新登录会恢复更改。
147、用户在 shell 中输入:$ PATH=~/scripts $ ls ,命令 ‘ls’ 位于 ‘/bin/ls’ ,但因 ‘/bin’ 不在 PATH 环境变量中而无法找到该命令,显示 ‘ls: command not found’ 。什么命令可以将 PATH 的当前值与新目录 ~/scripts 合并?
PATH=$PATH:~/scripts
148、考虑以下脚本。注意它使用 elif 来检查第二个条件:#!/bin/bash fruit1 = Apples fruit2 = Oranges if [ $1 -lt $# ] then echo “This is like comparing $fruit1 and $fruit2!” elif [ $1 -gt $2 ] then echo ‘$fruit1 win!’ else echo “Fruit2 win!” done。修复脚本中的错误。
以下是修正后的脚本:
#!/bin/bash
fruit1=Apples
fruit2=Oranges
if [ $1 -lt $# ]; then
echo "This is like comparing $fruit1 and $fruit2!"
elif [ $1 -gt $2 ]; then
echo "$fruit1 win!"
else
echo "$fruit2 win!"
fi
原脚本存在以下错误:
赋值语句等号两边不能有空格,应将
fruit1 = Apples
和
fruit2 = Oranges
改为
fruit1=Apples
和
fruit2=Oranges
。
elif
语句中
[$1 -gt $2 ]
方括号两边需要有空格,应改为
[ $1 -gt $2 ]
。
echo '$fruit1 win!'
单引号会使变量无法被替换,应改为双引号
echo "$fruit1 win!"
。
echo "Fruit2 win!"
这里应使用变量
$fruit2
,改为
echo "$fruit2 win!"
。
脚本结尾的
done
用于循环结构,这里是
if - elif - else
结构,应使用
fi
结尾。
149、阅读以下 script1.sh 的内容:#!/bin/bash
if [ $# -lt 1 ]
then
echo “This script requires at least 1 argument.”
exit 1
fi
echo $1 | grep “^[A-Z]*$” > /dev/null
if [ $? -ne 0 ]
then
echo “no cake for you!”
exit 2
fi
echo “here’s your cake!”
exit 0
以下命令的输出是什么?
◦./script1.sh
◦echo $?
◦./script1.sh cake
◦echo $?
◦./script1.sh CAKE
◦echo $?
– 命令
./script1.sh
的输出:This script requires at least 1 argument.
– 命令
echo $?
的输出:1
– 命令
./script1.sh cake
的输出:no cake for you!
– 命令
echo $?
的输出:2
– 命令
./script1.sh CAKE
的输出:here’s your cake!
– 命令
echo $?
的输出:0
150、阅读文件 script2.sh 的内容:for filename in $1/*.txt; do cp $filename $filename.bak; done 请描述你所理解的此脚本的用途。
该脚本会为第一个参数所指定子目录下所有以 .txt 结尾的文件创建备份副本。
151、创建一个脚本,该脚本可以接受用户输入的任意数量的参数,并仅打印那些大于 10 的数字参数。
#!/bin/bash
for i in $@
do
echo $i | grep "^[0-9]*$" > /dev/null
if [ $? -eq 0 ]
then
if [ $i -gt 10 ]
then
echo -n "$i "
fi
fi
done
echo ""
152、阅读以下 script1.sh 脚本内容:#!/bin/bash
if [ $# -lt 1 ]
then
echo “This script requires at least 1 argument.”
exit 1
fi
echo $1 | grep “^[A-Z]*$” > /dev/null
if [ $? -ne 0 ]
then
echo “no cake for you!”
exit 2
fi
echo “here’s your cake!”
exit 0
请问以下命令的输出是什么?
◦ 命令:./script1.sh
◦ 命令:echo $?
◦ 命令:./script1.sh cake
◦ 命令:echo $?
◦ 命令:./script1.sh CAKE
◦ 命令:echo $?
* 命令:
./script1.sh
,输出:This script requires at least 1 argument.
* 命令:
echo $?
,输出:1
* 命令:
./script1.sh cake
,输出:no cake for you!
* 命令:
echo $?
,输出:2
* 命令:
./script1.sh CAKE
,输出:here’s your cake!
* 命令:
echo $?
,输出:0
153、创建一个脚本,该脚本可以接收用户输入的任意数量的参数,并仅打印那些大于 10 的数字参数。
#!/bin/bash
for i in $@
do
echo $i | grep "^[0-9]*$" > /dev/null
if [ $? -eq 0 ]
then
if [ $i -gt 10 ]
then
echo -n "$i "
fi
fi
done
echo ""
154、哪个项目构成了所有 Linux 发行版的通用组件?CentOS、Red Hat、Ubuntu、Linux 内核、CoreOS
Linux 内核
155、苹果的 macOS 底层使用的是哪个操作系统?OS X、OSX、Darwin、MacOS
Darwin
156、Linux发行版与Linux内核有何不同?选项1:内核是发行版的一部分,发行版有围绕内核的应用程序,使内核更实用;选项2:内核就是Linux发行版;选项3:所有使用相同内核的发行版都是一样的。
选项1
157、操作系统的哪个组件允许访问硬件?驱动程序、shell、服务、应用程序
驱动程序
158、如果你可以访问命令行,请检索你的 Linux 系统当前的内核版本。
使用命令 uname -r ,示例输出为 4.15.0 – 47 – generic
159、使用搜索引擎,找出并确定可使用的公共云服务提供商,例如亚马逊网络服务(AWS)、谷歌云、Rackspace 等。选择其中一个,查看有哪些操作系统可供部署。
以 AWS 为例,可部署许多 Linux 发行版,如 Debian、Red Hat、SUSE 或 Ubuntu,还有 Windows。
160、苹果的OS X系统底层使用的是哪个操作系统的内核?选项:OS X、OSX、Darwin、MacOS
Darwin
161、Linux发行版与Linux内核有何不同?
内核是发行版的一部分,发行版包含应用程序,围绕内核使其变得可用。
162、以下哪个是Linux中的桌面环境?Mint、Elementary、Zorin、Wayland
Mint
、
Elementary
、
Zorin
可作为 Linux 桌面环境
Wayland
是显示服务器协议,而非传统桌面环境
163、描述以下术语:处理器(Processor)、中央处理器(CPU)、图形处理器(GPU)
处理器(Processor)
:一个通用术语,适用于任何类型的处理器,常被错误地用作 CPU 的同义词。
中央处理器(CPU)
:即 Central Processing Unit,是为通用计算任务提供支持的处理单元。
图形处理器(GPU)
:即 Graphical Processing Unit,是为支持与图形呈现相关活动而优化的处理单元。
164、如果你主要运行视频编辑应用程序(一项计算密集型活动),你认为哪些组件和特性对系统可用性影响最大:CPU 核心数、CPU 速度、可用系统内存、存储系统、GPU、视频显示器、以上都不是
CPU 核心数、CPU 速度、可用系统内存、存储系统
165、系统中第三个SATA驱动器的第三个分区在/dev中的设备文件名应该是什么:sd3p3、sdcp3、sdc3、以上都不是
sdc3
166、在系统上运行 lsblk 命令,识别设备的类型和数量、每个设备的分区结构、每个分区的文件系统类型和挂载点。
## 设备信息
- **设备的类型和数量**:有一个设备,为 `mmcblk0`,按惯例它是一张 SD 存储卡。
- **每个设备的分区结构**:有两个分区,分别是 `mmcblk0p1` 和 `mmcblk0p2`。
- **每个分区的文件系统类型和挂载点**:
- 分区 1 使用 `vfat` 文件系统,用于启动系统,挂载点为 `/boot`。
- 分区 2 使用 `ext4` 文件系统,作为主文件系统,挂载点为 `/`。
167、在系统上运行 lsblk 命令,识别设备类型及数量。
有一个设备:mmcblk0,mmcblk 是 SD 存储卡。
168、在系统上运行lsblk命令,识别每个设备的分区结构。
有两个分区:mmcblk0p1和mmcblk0p2。
169、在系统上运行 lsblk -f 命令,识别每个分区的文件系统类型和挂载点
分区 1 使用
vfat
文件系统,用于引导系统,挂载点为
/boot
分区 2 使用
ext4
文件系统,作为主文件系统,挂载点为
/
170、如果你主要运行视频编辑应用程序(一项计算密集型活动),你认为哪些组件和特性对系统可用性影响最大:CPU核心数、CPU速度、可用系统内存、存储系统、GPU、视频显示器、以上都不是
CPU核心数、CPU速度、可用系统内存、存储系统
171、在你的系统上运行 lsblk 命令。识别以下参数:设备的类型和数量;每个设备的分区结构;每个分区的文件系统类型和挂载点。
## 设备信息
- **设备的类型和数量**:有一个设备,为 `mmcblk0`,按惯例这是一个 SD 存储卡。
- **每个设备的分区结构**:有两个分区,分别是 `mmcblk0p1` 和 `mmcblk0p2`。
- **每个分区的文件系统类型和挂载点**:
- 分区 1 使用 `vfat` 文件系统,用于启动系统,挂载点为 `/boot`。
- 分区 2 使用 `ext4` 文件系统,作为主文件系统,挂载点为 `/`。
172、使用 which 命令找出以下程序的位置并完成表格:程序、which 命令、可执行文件路径(输出)、用户是否需要 root 权限:swapon、kill、cut、usermod、cron、ps
| 程序 | which 命令 | 可执行文件路径(输出) | 用户是否需要 root 权限 |
|---|---|---|---|
| swapon | which swapon | /sbin/swapon | 是 |
| kill | which kill | /bin/kill | 否 |
| cut | which cut | /usr/bin/cut | 否 |
| usermod | which usermod | /usr/sbin/usermod | 是 |
| cron | which cron | /usr/sbin/cron | 是 |
| ps | which ps | /bin/ps | 否 |
173、以下文件在哪里可以找到?文件包括:/etc、~、.bashrc、bash.bashrc、passwd、.profile、resolv.conf、sysctl.conf
/etc
:系统目录
~
:用户主目录
.bashrc
:用户主目录
bash.bashrc
:/etc目录
passwd
:/etc目录
.profile
:用户主目录
resolv.conf
:/etc目录
sysctl.conf
:/etc目录
174、解释在 /boot 中找到的内核文件 vmlinuz – 4.15.0 – 50 – generic 数字元素的含义:数字元素 4、15、0、50 分别代表什么?
4:内核版本;15:主修订号;0:次修订号;50:补丁号
175、硬盘的设备文件是根据它们使用的控制器来表示的 —— 我们看到使用 SCSI(小型计算机系统接口)和 SATA(串行高级技术附件)的驱动器用 /dev/sd* 表示,那么旧的 IDE(集成驱动电子设备)驱动器和现代的 NVMe(非易失性内存快速通道)驱动器分别是如何表示的?
旧的 IDE 驱动器用
/dev/hd*
表示,现代的 NVMe 驱动器用
/dev/nvme*
表示。
176、查看文件 /proc/meminfo。将此文件的内容与 free 命令的输出进行比较,并确定 /proc/meminfo 中的哪些键对应 free 输出中的以下字段:total、free、shared、buff/cache、available
total
对应
MemTotal
/
SwapTotal
free
对应
MemFree
/
SwapFree
shared
对应
Shmem
buff/cache
对应
Buffers
、
Cached
和
SReclaimable
available
对应
MemAvailable
177、旧的 IDE(集成驱动器电子)硬盘是如何表示的?
/dev/hd*
178、现代NVMe(非易失性内存快速传输)驱动器是如何表示的?
/dev/nvme*
179、查看文件 /proc/meminfo。将此文件内容与 free 命令的输出进行比较,确定 /proc/meminfo 中的哪些键对应 free 输出中的以下字段:total、free、shared、buff/cache、available
total
对应
MemTotal
/
SwapTotal
free
对应
MemFree
/
SwapFree
shared
对应
Shmem
buff/cache
对应
Buffers
、
Cached
和
SReclaimable
available
对应
MemAvailable
180、使用 which 命令找出以下程序的位置并完成表格:程序、which 命令、二进制文件路径(输出)、用户是否需要 root 权限?涉及的程序有 swapon、kill、cut、usermod、cron、ps
| 程序 |
命令 |
二进制文件路径(输出) |
用户是否需要
权限? |
|---|---|---|---|
| swapon |
|
|
是 |
| kill |
|
|
否 |
| cut |
|
|
否 |
| usermod |
|
|
是 |
| cron |
|
|
是 |
| ps |
|
|
否 |
181、以下文件在哪里可以找到?文件有 /etc、~/.bashrc、bash.bashrc、passwd、.profile、resolv.conf、sysctl.conf
- `/etc` 是系统配置文件目录
- `~/.bashrc` 通常在用户主目录下
- `bash.bashrc` 在系统全局范围,用于交互式 bash shell
- `passwd` 在 `/etc` 目录
- `.profile` 在用户主目录
- `resolv.conf` 在 `/etc` 目录,是解析器配置文件
- `sysctl.conf` 在 `/etc` 目录,用于设置内核系统变量
182、解释在 /boot 中找到的内核文件 vmlinuz – 4.15.0 – 50 – generic 的数字元素 4、15、0、50 的含义分别是什么
4 代表内核版本;15 代表主修订号;0 代表次修订号;50 代表补丁号。
183、现代NVMe(非易失性内存快速传输)驱动器是如何表示的?
/dev/nvme*
184、查看文件 /proc/meminfo。将此文件的内容与 free 命令的输出进行比较,并确定 /proc/meminfo 中的哪些键对应 free 输出中的以下字段:total、free、shared、buff/cache、available
total
对应
MemTotal / SwapTotal
free
对应
MemFree / SwapFree
shared
对应
Shmem
buff/cache
对应
Buffers
、
Cached
和
SReclaimable
available
对应
MemAvailable
185、查看文件 /proc/meminfo。将该文件的内容与 free 命令的输出进行比较,确定 /proc/meminfo 中的哪些键对应 free 输出中的以下字段:total、free、shared、buff/cache、available
total
对应
MemTotal
/
SwapTotal
free
对应
MemFree
/
SwapFree
shared
对应
Shmem
buff/cache
对应
Buffers
、
Cached
和
SReclaimable
available
对应
MemAvailable
186、哪些进程是由用户carol启动的?
只有一个:top。
187、哪个进程是最先运行的?你如何判断?
最先运行的进程是
systemd
。
判断依据:
– 它的 PID 为 1。
– 进程的 PID 是按顺序分配的正整数。
– PID 为 1 表明它是最早启动的进程。
188、完成表格,指明内存、交换空间、进程ID(PID)这些信息在top命令输出的摘要区和任务区是否可以找到
| 信息类别 | 摘要区 | 任务区 |
|---|---|---|
| 内存 | 是 | 是 |
| 交换空间 | 是 | 否 |
| PID | 否 | 是 |
189、完成表格,指明以下信息在 top 输出的哪个区域可以找到:关于 CPU 时间和命令的信息,摘要区域还是任务区域
CPU 时间:任务区域;命令:任务区域
190、读取以下二进制日志应使用什么命令?/var/log/wtmp /var/log/btmp /run/log/journal/2a7d9730cd3142f4b15e20d6be631836/system.journal
/var/log/wtmp
使用
last
命令;
/var/log/btmp
使用
lastb
命令;
/run/log/journal/2a7d9730cd3142f4b15e20d6be631836/system.journal
使用
journalctl
命令。
191、要显示内核环形缓冲区,你会使用哪两个命令?
dmesg;dmesg配合grep或less使用,如`dmesg | grep boot`、`dmesg | less`
192、指出以下日志消息所属的位置:2023年7月10日13:37:39,debian系统上的dbus进程(进程ID为303)记录系统成功激活了’org.freedesktop.nm_dispatcher’服务,候选位置为/var/log/auth.log、/var/log/kern.log、/var/log/syslog、/var/log/messages
/var/log/syslog
193、指出日志消息“Jul 10 11:23:58 debian kernel: [ 1.923349] usbhid: USB HID core driver”所属的日志文件,可选项有 /var/log/auth.log、/var/log/kern.log、/var/log/syslog、/var/log/messages。
/var/log/kern.log
194、指出日志消息“Jul 10 14:02:53 debian sudo: pam_unix(sudo:session): session opened for user root by carol(uid=0)”所属的日志文件,候选文件有 /var/log/auth.log、/var/log/kern.log、/var/log/syslog、/var/log/messages。
以下是调整为 Markdown 格式的内容:
/var/log/auth.log
因为该文件存储认证相关信息,此日志记录了用户认证后打开会话的信息。