# 23级全栈班Linux练习题 **Repository Path**: myhfw003/grade23-linux-practice-questions ## Basic Information - **Project Name**: 23级全栈班Linux练习题 - **Description**: 23级全栈班Linux练习题 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: dev - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-31 - **Last Updated**: 2025-03-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 23级全栈开发班Linux练习 --- ### 实验 1:文件与目录操作 #### 任务描述: 创建一个名为 `project1` 的目录,并在其中创建以下文件和子目录: - 文件 `file1.txt`,内容为“Hello, Linux!” - 子目录 `subdir1`,并在其中创建一个空文件 `file2.txt` - 子目录 `subdir2`,并在其中创建一个文件 `file3.txt`,内容为“Welcome to subdir2” #### 目标: 1. 使用 `mkdir` 创建目录。 2. 使用 `touch` 创建空文件。 3. 使用 `echo` 或 `cat` 向文件中写入内容。 4. 使用 `ls` 和 `tree` 查看目录结构。 #### 操作提示: ```bash mkdir project1 cd project1 echo "Hello, Linux!" > file1.txt mkdir subdir1 touch subdir1/file2.txt mkdir subdir2 echo "Welcome to subdir2" > subdir2/file3.txt ls -R tree ``` --- ### 实验 2:文件复制与移动 #### 任务描述: 将实验 1 中创建的 `project1/subdir1/file2.txt` 复制到 `project1/subdir2` 中,并重命名为 `file4.txt`。然后将 `project1/subdir2/file3.txt` 移动到 `project1/subdir1` 中。 #### 目标: 1. 使用 `cp` 命令复制文件。 2. 使用 `mv` 命令移动和重命名文件。 #### 操作提示: ```bash cp project1/subdir1/file2.txt project1/subdir2/file4.txt mv project1/subdir2/file3.txt project1/subdir1/ ``` --- ### 实验 3:文件内容查看 #### 任务描述: 查看实验 1 中创建的 `project1/file1.txt` 和 `project1/subdir2/file4.txt` 的内容。使用 `cat`、`less` 和 `head` 命令分别查看这两个文件的内容。 #### 目标: 1. 使用 `cat` 查看文件内容。 2. 使用 `less` 分页查看文件内容。 3. 使用 `head` 查看文件的前几行。 #### 操作提示: ```bash cat project1/file1.txt less project1/subdir2/file4.txt head -n 3 project1/file1.txt ``` --- ### 实验 4:文件删除 #### 任务描述: 删除实验 1 中创建的 `project1/subdir1/file2.txt` 文件,并删除整个 `project1/subdir2` 目录。 #### 目标: 1. 使用 `rm` 删除文件。 2. 使用 `rm -r` 删除目录及其内容。 #### 操作提示: ```bash rm project1/subdir1/file2.txt rm -r project1/subdir2 ``` --- ### 实验 5:文件权限管理 #### 任务描述: 为实验 1 中的 `project1/file1.txt` 文件设置权限,使其所有者具有读写权限,组用户具有读权限,其他用户无权限。然后查看文件的权限。 #### 目标: 1. 使用 `chmod` 修改文件权限。 2. 使用 `ls -l` 查看文件权限。 #### 操作提示: ```bash chmod 640 project1/file1.txt ls -l project1/file1.txt ``` --- ### 实验 6:查找文件 #### 任务描述: 在 `/home` 目录下查找所有扩展名为 `.txt` 的文件,并将结果保存到 `project1/results.txt` 文件中。 #### 目标: 1. 使用 `find` 命令查找文件。 2. 使用重定向将输出保存到文件中。 #### 操作提示: ```bash find /home -type f -name "*.txt" > project1/results.txt ``` --- ### 实验 7:文本搜索 #### 任务描述: 在实验 1 中的 `project1/file1.txt` 文件中搜索包含单词“Linux”(不区分大小写)的行,并将结果输出到终端。 #### 目标: 1. 使用 `grep` 命令进行文本搜索。 #### 操作提示: ```bash grep -i "linux" project1/file1.txt ``` --- ### 实验 8:磁盘空间查看 #### 任务描述: 查看当前系统的磁盘使用情况,并找出占用空间最多的前 5 个文件系统。 #### 目标: 1. 使用 `df` 查看磁盘空间。 2. 使用 `sort` 和 `head` 对磁盘使用情况进行排序和筛选。 #### 操作提示: ```bash df -h | sort -nr -k 3 | head -n 6 ``` --- ### 实验 9:系统信息查看 #### 任务描述: 查看当前系统的内核版本、主机名和操作系统类型,并将这些信息保存到 `project1/system_info.txt` 文件中。 #### 目标: 1. 使用 `uname` 查看系统信息。 2. 使用重定向将输出保存到文件中。 #### 操作提示: ```bash uname -a > project1/system_info.txt ``` --- ### 实验 10:用户与组管理 #### 任务描述: 创建一个用户 `testuser`,并将其加入到 `testgroup` 组。然后切换到该用户,并查看当前用户和组信息。 #### 目标: 1. 使用 `useradd` 创建用户。 2. 使用 `groupadd` 创建组。 3. 使用 `usermod` 修改用户所属组。 4. 使用 `su` 切换用户。 5. 使用 `whoami` 和 `groups` 查看用户和组信息。 #### 操作提示: ```bash sudo groupadd testgroup sudo useradd -m -s /bin/bash -G testgroup testuser su - testuser whoami groups ``` --- ### 实验 11:进程管理 #### 任务描述: 启动一个名为 `sleep 100` 的进程,查看该进程的进程号(PID),并将其终止。 #### 目标: 1. 使用 `&` 将进程放到后台运行。 2. 使用 `ps` 查看进程信息。 3. 使用 `kill` 终止进程。 #### 操作提示: ```bash sleep 100 & ps -ef | grep sleep kill [PID] ``` --- ### 实验 12:网络配置 #### 任务描述: 查看当前主机的网络配置信息,包括 IP 地址、子网掩码和默认网关。 #### 目标: 1. 使用 `ifconfig` 或 `ip addr` 查看网络配置。 2. 使用 `route` 查看默认网关。 #### 操作提示: ```bash ifconfig ip addr route -n ``` --- ### 实验 13:历史命令查看 #### 任务描述: 查看最近执行的 10 条命令,并将这些命令保存到 `project1/history.txt` 文件中。 #### 目标: 1. 使用 `history` 查看历史命令。 2. 使用重定向将输出保存到文件中。 #### 操作提示: ```bash history | tail -n 10 > project1/history.txt ``` --- ### 实验 14:文本替换 #### 任务描述: 在实验 1 中的 `project1/file1.txt` 文件中,将所有“Linux”替换为“Ubuntu”,并保存更改。 #### 目标: 1. 使用 `sed` 命令进行文本替换。 #### 操作提示: ```bash sed -i 's/Linux/Ubuntu/g' project1/file1.txt ``` --- ### 实验 15:文件压缩与解压 #### 任务描述: 将实验 1 中的 `project1` 目录压缩为一个名为 `project1.tar.gz` 的压缩包,并解压到当前目录下的 `project1_backup` 目录中。 #### 目标: 1. 使用 `tar` 命令进行压缩和解压。 #### 操作提示: ```bash tar -czvf project1.tar.gz project1 mkdir project1_backup tar -xzvf project1.tar.gz -C project1_backup ``` --- ### 实验 16:定时任务 #### 任务描述: 创建一个定时任务,每 5 分钟执行一次 `echo "Hello, Linux!"` 命令,并将输出保存到 `/tmp/hello.txt` 文件中。 #### 目标: 1. 使用 `crontab` 创建定时任务。 #### 操作提示: ```bash crontab -e # 添加以下内容: */5 * * * * echo "Hello, Linux!" >> /tmp/hello.txt ``` --- ### 实验 17:环境变量设置 #### 任务描述: 设置一个环境变量 `MY_VAR`,其值为“Hello, Linux!”,并在当前终端会话中查看该变量的值。 #### 目标: 1. 使用 `export` 设置环境变量。 2. 使用 `echo` 查看环境变量的值。 #### 操作提示: ```bash export MY_VAR="Hello, Linux!" echo $MY_VAR ``` --- ### 实验 18:系统服务管理 #### 任务描述: 查看当前系统中运行的服务,启动 `ssh` 服务(如果未启动),并查看其状态。 #### 目标: 1. 使用 `systemctl` 查看服务状态。 2. 使用 `systemctl` 启动服务。 #### 操作提示: ```bash systemctl list-units --type=service sudo systemctl start ssh sudo systemctl status ssh ``` --- ### 实验 19:日志文件查看 #### 任务描述: 查看系统日志文件 `/var/log/syslog` 的最后 10 行内容,并实时监控该日志文件的新增内容。 #### 目标: 1. 使用 `tail` 查看日志文件。 2. 使用 `tail -f` 实时监控日志文件。 #### 操作提示: ```bash tail -n 10 /var/log/syslog tail -f /var/log/syslog ``` --- ### 实验 20:脚本编写 #### 任务描述: 编写一个简单的 Bash 脚本,该脚本执行以下操作: 1. 创建一个名为 `script_output.txt` 的文件。 2. 在文件中写入当前日期和时间。 3. 在文件中写入当前用户的用户名。 4. 在文件中写入当前用户的主目录路径。 #### 目标: 1. 编写并运行简单的 Bash 脚本。 #### 操作提示: ```bash nano myscript.sh # 在脚本中输入以下内容: #!/bin/bash echo "Current date and time: $(date)" > script_output.txt echo "Current user: $(whoami)" >> script_output.txt echo "Home directory: $HOME" >> script_output.txt # 保存并退出 chmod +x myscript.sh ./myscript.sh ``` --- ### 实验 21:文件比较 #### 任务描述: 比较实验 1 中的 `project1/file1.txt` 和 `project1/subdir1/file3.txt` 文件的内容差异,并将差异输出到终端。 #### 目标: 1. 使用 `diff` 命令比较文件内容。 #### 操作提示: ```bash diff project1/file1.txt project1/subdir1/file3.txt ``` --- ### 实验 22:磁盘配额管理 #### 任务描述: 为用户 `testuser` 设置磁盘配额,限制其在 `/home` 文件系统上的使用空间不超过 100MB。 #### 目标: 1. 使用 `edquota` 设置用户磁盘配额。 2. 使用 `quota` 查看用户磁盘配额。 #### 操作提示: ```bash sudo edquota testuser # 在编辑器中设置配额,例如: # Disk quotas for user testuser (uid 1001): # Filesystem blocks soft hard inodes soft hard # /dev/sda1 20480 10240 20480 1000 1000 1000 sudo quota testuser ``` --- ### 实验 23:文件权限批量修改 #### 任务描述: 将实验 1 中的 `project1` 目录及其所有子目录和文件的权限设置为所有者具有读写执行权限,组用户具有读执行权限,其他用户无权限。 #### 目标: 1. 使用 `chmod` 命令批量修改文件权限。 #### 操作提示: ```bash chmod -R 750 project1 ``` --- ### 实验 24:网络连接测试 #### 任务描述: 使用 `ping` 命令测试当前主机与外部服务器(如 `www.google.com`)的网络连接是否正常,并查看连接延迟。 #### 目标: 1. 使用 `ping` 测试网络连接。 #### 操作提示: ```bash ping -c 4 www.google.com ``` --- ### 实验 25:服务端口扫描 #### 任务描述: 使用 `netstat` 或 `ss` 命令扫描当前主机上所有开放的网络端口,并找出监听在 TCP 端口 22(SSH)上的服务。 #### 目标: 1. 使用 `netstat` 或 `ss` 查看开放端口。 2. 使用 `grep` 筛选特定端口。 #### 操作提示: ```bash netstat -tuln | grep ":22" # 或 ss -tuln | grep ":22" ``` --- ### 实验 26:系统时间同步 #### 任务描述: 使用 `ntp` 或 `chrony` 服务同步当前系统的时钟,使其与外部时间服务器(如 `pool.ntp.org`)保持一致。 #### 目标: 1. 安装并配置时间同步服务。 2. 同步系统时间。 #### 操作提示: ```bash sudo apt-get install ntp sudo nano /etc/ntp.conf # 添加以下内容: server 0.pool.ntp.org server 1.pool.ntp.org server 2.pool.ntp.org sudo systemctl restart ntp ntpq -p ``` --- ### 实验 27:文件打包与传输 #### 任务描述: 将实验 1 中的 `project1` 目录打包为一个名为 `project1.tar` 的文件,并将其传输到另一台主机(假设目标主机的 IP 地址为 `192.168.1.100`,用户名为 `remoteuser`)的 `/home/remoteuser` 目录中。 #### 目标: 1. 使用 `tar` 打包文件。 2. 使用 `scp` 传输文件。 #### 操作提示: ```bash tar -cvf project1.tar project1 scp project1.tar remoteuser@192.168.1.100:/home/remoteuser ``` --- ### 实验 28:文件内容统计 #### 任务描述: 统计实验 1 中的 `project1/file1.txt` 文件的行数、单词数和字符数。 #### 目标: 1. 使用 `wc` 命令统计文件内容。 #### 操作提示: ```bash wc project1/file1.txt ``` --- ### 实验 29:文件查找与权限修改 #### 任务描述: 在 `/home` 目录下查找所有属于用户 `testuser` 的文件,并将这些文件的权限设置为所有者具有读写权限,组用户和其他用户无权限。 #### 目标: 1. 使用 `find` 查找文件。 2. 使用 `chmod` 修改文件权限。 #### 操作提示: ```bash find /home -type f -user testuser -exec chmod 600 {} \; ``` --- ### 实验 30:系统资源监控 #### 任务描述: 使用 `top` 或 `htop` 命令监控当前系统的资源使用情况(CPU、内存等),并找出占用 CPU 和内存最多的前 5 个进程。 #### 目标: 1. 使用 `top` 或 `htop` 监控系统资源。 2. 使用 `ps` 和 `sort` 筛选进程。 #### 操作提示: ```bash top # 或 htop # 或 ps -eo pid,comm,%cpu,%mem --sort=-%cpu,-%mem | head -n 6 ``` --- ### 实验 31:文件内容排序 #### 任务描述: 对实验 1 中的 `project1/file1.txt` 文件中的内容按字母顺序进行排序,并将排序后的结果保存到 `project1/sorted_file1.txt` 文件中。 #### 目标: 1. 使用 `sort` 命令对文件内容进行排序。 #### 操作提示: ```bash sort project1/file1.txt > project1/sorted_file1.txt ``` --- ### 实验 32:文件内容去重 #### 任务描述: 对实验 1 中的 `project1/file1.txt` 文件中的内容进行去重处理,并将去重后的结果保存到 `project1/unique_file1.txt` 文件中。 #### 目标: 1. 使用 `uniq` 命令对文件内容进行去重。 #### 操作提示: ```bash sort project1/file1.txt | uniq > project1/unique_file1.txt ``` --- ### 实验 33:文件内容替换(进阶) #### 任务描述: 在实验 1 中的 `project1/file1.txt` 文件中,将所有“Hello”替换为“Hi”,并将所有“Linux”替换为“Ubuntu”,同时保留原始文件的备份。 #### 目标: 1. 使用 `sed` 命令进行多步文本替换。 2. 使用 `cp` 命令备份原始文件。 #### 操作提示: ```bash cp project1/file1.txt project1/file1_backup.txt sed -i 's/Hello/Hi/g; s/Linux/Ubuntu/g' project1/file1.txt ``` --- ### 实验 34:文件内容提取 #### 任务描述: 从实验 1 中的 `project1/file1.txt` 文件中提取包含单词“Ubuntu”的行,并将这些行保存到 `project1/ubuntu_lines.txt` 文件中。 #### 目标: 1. 使用 `grep` 命令提取特定内容。 #### 操作提示: ```bash grep "Ubuntu" project1/file1.txt > project1/ubuntu_lines.txt ``` --- ### 实验 35:文件内容统计(进阶) #### 任务描述: 统计实验 1 中的 `project1/file1.txt` 文件中每个单词出现的次数,并将统计结果按出现次数从高到低排序,保存到 `project1/word_count.txt` 文件中。 #### 目标: 1. 使用 `tr`、`sort` 和 `uniq` 命令进行单词统计。 2. 使用 `sort` 对统计结果进行排序。 #### 操作提示: ```bash tr ' ' '\n' < project1/file1.txt | sort | uniq -c | sort -nr > project1/word_count.txt ``` --- ### 实验 36:文件内容格式化 #### 任务描述: 将实验 1 中的 `project1/file1.txt` 文件中的内容按以下格式进行格式化: - 每行内容首字母大写。 - 每行内容后添加一个句号(`.`)。 - 将格式化后的结果保存到 `project1/formatted_file1.txt` 文件中。 #### 目标: 1. 使用 `awk` 和 `sed` 命令进行文本格式化。 #### 操作提示: ```bash awk '{print toupper(substr($0,1,1)) tolower(substr($0,2)) "."}' project1/file1.txt > project1/formatted_file1.txt ``` --- ### 实验 37:文件内容加密与解密 #### 任务描述: 使用 `openssl` 命令对实验 1 中的 `project1/file1.txt` 文件进行加密,加密后的文件保存为 `project1/file1_encrypted.txt`,并使用相同的密钥进行解密,解密后的文件保存为 `project1/file1_decrypted.txt`。 #### 目标: 1. 使用 `openssl` 进行文件加密和解密。 #### 操作提示: ```bash openssl enc -aes-256-cbc -in project1/file1.txt -out project1/file1_encrypted.txt openssl enc -aes-256-cbc -d -in project1/file1_encrypted.txt -out project1/file1_decrypted.txt ``` --- ### 实验 38:文件内容替换(正则表达式) #### 任务描述: 在实验 1 中的 `project1/file1.txt` 文件中,使用正则表达式将所有以大写字母开头的单词替换为“[WORD]”,并将结果保存到 `project1/replaced_file1.txt` 文件中。 #### 目标: 1. 使用 `sed` 命令结合正则表达式进行文本替换。 #### 操作提示: ```bash sed -E 's/\b([A-Z][a-z]*)\b/\[WORD\]/g' project1/file1.txt > project1/replaced_file1.txt ``` --- ### 实验 39:文件内容过滤 #### 任务描述: 从实验 1 中的 `project1/file1.txt` 文件中过滤掉所有包含数字的行,并将过滤后的结果保存到 `project1/filtered_file1.txt` 文件中。 #### 目标: 1. 使用 `grep` 命令结合正则表达式进行内容过滤。 #### 操作提示: ```bash grep -v '[0-9]' project1/file1.txt > project1/filtered_file1.txt ``` --- ### 实验 40:文件内容拼接 #### 任务描述: 将实验 1 中的 `project1/file1.txt` 和 `project1/subdir1/file3.txt` 文件的内容按顺序拼接到一个新文件 `project1/combined_file.txt` 中,并在每个文件内容之间添加一个分隔符(如 `---`)。 #### 目标: 1. 使用 `cat` 和 `echo` 命令进行文件内容拼接。 #### 操作提示: ```bash cat project1/file1.txt > project1/combined_file.txt echo "---" >> project1/combined_file.txt cat project1/subdir1/file3.txt >> project1/combined_file.txt ``` --- ### 实验 41:文件内容分析 #### 任务描述: 分析实验 1 中的 `project1/file1.txt` 文件中的内容,统计以下信息: - 总行数。 - 包含单词“Linux”或“Ubuntu”的行数。 - 不包含任何单词的空行数。 #### 目标: 1. 使用 `wc`、`grep` 和 `awk` 命令进行内容分析。 #### 操作提示: ```bash total_lines=$(wc -l < project1/file1.txt) linux_or_ubuntu_lines=$(grep -c -E 'Linux|Ubuntu' project1/file1.txt) empty_lines=$(grep -c -E '^$' project1/file1.txt) echo "Total lines: $total_lines" echo "Lines with Linux or Ubuntu: $linux_or_ubuntu_lines" echo "Empty lines: $empty_lines" ``` --- ### 实验 42:文件内容替换(动态变量) #### 任务描述: 在实验 1 中的 `project1/file1.txt` 文件中,将所有“Linux”替换为当前系统的内核版本(使用 `uname -r` 获取),并将结果保存到 `project1/replaced_file1.txt` 文件中。 #### 盥目标: 1. 使用 `sed` 命令结合动态变量进行文本替换。 #### 操作提示: ```bash kernel_version=$(uname -r) sed "s/Linux/$kernel_version/g" project1/file1.txt > project1/replaced_file1.txt ``` --- ### 实验 43:文件内容筛选 #### 任务描述: 从实验 1 中的 `project1/file1.txt` 文件中筛选出所有以字母“H”开头且以字母“d”结尾的单词,并将这些单词保存到 `project1/selected_words.txt` 文件中。 #### 目标: 1. 使用 `grep` 和正则表达式进行内容筛选。 #### 操作提示: ```bash grep -o -E '\bH.*d\b' project1/file1.txt > project1/selected_words.txt ``` --- ### 实验 44:文件内容排序与去重 #### 任务描述: 对实验 1 中的 `project1/file1.txt` 文件中的内容按字母顺序进行排序,并去除重复的行,最后将结果保存到 `project1/sorted_unique_file1.txt` 文件中。 #### 目标: 1. 使用 `sort` 和 `uniq` 命令进行排序和去重。 #### 操作提示: ```bash sort project1/file1.txt | uniq > project1/sorted_unique_file1.txt ``` --- ### 实验 45:文件内容替换(多文件) #### 任务描述: 在实验 1 中的 `project1/file1.txt` 和 `project1/subdir1/file3.txt` 文件中,将所有“Linux”替换为“Ubuntu”,并将所有“Hello”替换为“Hi”,同时保留原始文件的备份。 #### 目标: 1. 使用 `sed` 命令对多个文件进行文本替换。 2. 使用 `cp` 命令备份原始文件。 #### 操作提示: ```bash cp project1/file1.txt project1/file1_backup.txt cp project1/subdir1/file3.txt project1/subdir1/file3_backup.txt sed -i 's/Linux/Ubuntu/g; s/Hello/Hi/g' project1/file1.txt project1/subdir1/file3.txt ``` --- ### 实验 46:文件内容统计(单词长度) #### 任务描述: 统计实验 1 中的 `project1/file1.txt` 文件中每个单词的长度,并将统计结果保存到 `project1/word_length.txt` 文件中。 #### 目标: 1. 使用 `awk` 命令对单词长度进行统计。 #### 操作提示: ```bash awk '{for(i=1;i<=NF;i++) print length($i)}' project1/file1.txt > project1/word_length.txt ``` --- ### 实验 47:文件内容替换(条件替换) #### 任务描述: 在实验 1 中的 `project1/file1.txt` 文件中,将所有“Linux”替换为“Ubuntu”,但仅在单词“Hello”之后出现的“Linux”才进行替换,并将结果保存到 `project1/replaced_file1.txt` 文件中。 #### 目标: 1. 使用 `sed` 命令进行条件替换。 #### 操作提示: ```bash sed -E 's/(Hello.*)Linux/\1Ubuntu/g' project1/file1.txt > project1/replaced_file1.txt ``` --- ### 实验 48:文件内容分析(单词频率) #### 任务描述: 分析实验 1 中的 `project1/file1.txt` 文件中的内容,统计每个单词的出现频率,并将统计结果按频率从高到低排序,保存到 `project1/word_frequency.txt` 文件中。 #### 目标: 1. 使用 `tr`、`sort`、`uniq` 和 `sort` 命令进行单词频率统计。 #### 操作提示: ```bash tr ' ' '\n' < project1/file1.txt | sort | uniq -c | sort -nr > project1/word_frequency.txt ``` --- ### 实验 49:文件内容替换(多模式) #### 任务描述: 在实验 1 中的 `project1/file1.txt` 文件中,将所有“Linux”替换为“Ubuntu”,将所有“Hello”替换为“Hi”,并将所有“World”替换为“Earth”,同时保留原始文件的备份。 #### 目标: 1. 使用 `sed` 命令进行多模式替换。 2. 使用 `cp` 命令备份原始文件。 #### 操作提示: ```bash cp project1/file1.txt project1/file1_backup.txt sed -i 's/Linux/Ubuntu/g; s/Hello/Hi/g; s/World/Earth/g' project1/file1.txt ``` --- ### 实验 50:文件内容提取(多条件) #### 任务描述: 从实验 1 中的 `project1/file1.txt` 文件中提取所有包含单词“Linux”且不包含单词“Hello”的行,并将这些行保存到 `project1/extracted_lines.txt` 文件中。 #### 目标: 1. 使用 `grep` 命令结合多条件进行内容提取。 #### 操作提示: ```bash grep -E 'Linux' project1/file1.txt | grep -v -E 'Hello' > project1/extracted_lines.txt ``` ---