# Assignment 1

AI悦创原创Python 一对一教学SCU CSSanta Clara University圣克拉拉大学Python 一对一教学SCU CSSanta Clara University圣克拉拉大学大约 5 分钟...约 1418 字

## Instructions:

Write the commands needed to solve the following problems on mis01.scu.eduopen in new window. The first two problems are already solved to show you how to proceed.

Each problem will be marked with a 1 if correct, with a 0.5 if partially correct, and with a 0 otherwise.

## Problem -1 (solved for you as an example)

Before solving this problem, position yourself in your own directory. Move to `/home` using relative pathnames (write only one command).

### Solution:

``````cd..
``````

## Problem 0 (solved for you as an example)

Before solving this problem, position yourself in your own directory. Move to `/home/OMIS107` using relative pathnames and then move to `/home` using absolute pathnames (write two commands).

### Solution:

``````cd ../OMIS107
cd /home
``````

## Problem 1

Before solving this problem, position yourself in your own directory. Use relative pathnames to print the detailed list of files in `/home/OMIS107/HW1` (one command).

``````ls -l ../OMIS107/HW1
``````

## Problem 2

Before solving this problem, position yourself in your own directory. Use relative pathnames to go to `/home/OMIS107/HW1/irrelevant` and, from there, use relative pathnames to show the content of file `/home/OMIS107/HW1/Sep26Lunch.txt` (two commands).

### Solution:

``````cd ../OMIS107/HW1/irrelevant/
cat ../Sep26Lunch.txt
``````

## Problem 3

Before solving this problem, position yourself in your own directory. Copy the directory `/home/OMIS107/HW1` into your own directory using relative pathnames and making sure that you copy any existing subdirectory as well (one command). Make sure that neither your username nor tilde (~) appear in your solution.

### Solution:

``````cp -r ../OMIS107/HW1 .
``````

## Problem 4

If the permissions were set as shown below, which files would you NOT be allowed to read?

### Solution:

``````Sep27Lunch.txt
``````

1. 给出以下 Linux 文件权限，你能解释每个权限的含义吗？

• `-rwxr-x---`
• `drwxrwxr-x`
• `-rw-------`
• `lrwxrwxrwx`
• `drwxr-xr-x`
2. 如果你看到一个文件的权限是 `-rw-rw-r--`，那么以下哪个说法是正确的？

• a) 所有用户都可以修改该文件。
• b) 只有文件所有者可以读取和修改该文件。
• c) 文件所有者和同一组的用户可以读取和修改该文件，其他用户只能读取。
• d) 只有文件所有者可以读取该文件，其他用户无法访问。
3. 如果你想让一个文件的所有者有全部权限，同一组的用户有读取和执行权限，其他用户只有执行权限，你应该使用哪个 `chmod` 命令？

• a) `chmod 741 filename`
• b) `chmod 754 filename`
• c) `chmod 647 filename`
• d) `chmod 765 filename`
4. 以下哪个命令能够将文件的权限设置为 `-rwxr--r--`

• a) `chmod 644 filename`
• b) `chmod 754 filename`
• c) `chmod 744 filename`
• d) `chmod 654 filename`

## inventory 1

### 1. cd

`cd` 是一个 Linux 命令，全称 "change directory"。使用 `cd` 命令，你可以在 Linux 文件系统中的各个目录之间进行切换。

• `cd ..`：这会让你返回到当前目录的上级目录。
• `cd -`：这会让你切换到之前的工作目录。
• `cd ~``cd`：这两个命令都会让你返回到当前用户的家目录。

### 2. ls

`ls` 是 Linux 中的一个基本命令，用于列出目录中的文件和子目录。基本语法是 `ls [options] [file|dir]`，你可以在命令后面添加参数和路径。如果没有指定路径，那么 `ls` 将列出当前目录的内容。以下是 `ls` 命令的一些常见用法和示例：

1. 基本用法：无参数的 `ls` 会列出当前目录的文件和子目录。

示例

``````ls
``````
2. 列出其他目录的内容：你可以在 `ls` 后添加目录路径，以查看该目录的内容。

示例

``````ls /home/user/documents
``````

这个命令将列出 `/home/user/documents` 目录中的文件和子目录。

3. 长格式列表：使用 `-l` 参数，你可以查看文件和目录的详细信息，如文件权限、所有者、大小、最后修改时间等。

示例

``````ls -l
``````

这个命令将以长格式列出当前目录的内容。

4. 显示隐藏文件：在 Linux 中，以点（`.`）开头的文件是隐藏文件。你可以使用 `-a``-A` 参数列出这些文件。其中，`-a` 显示所有文件（包括 `.``..`），而 `-A` 不显示 `.``..`

示例

``````ls -a
``````

这个命令将列出当前目录的所有文件，包括隐藏文件。

5. 显示目录本身，而不是其内容：使用 `-d` 参数，你可以仅列出目录本身，而不是其内容。

示例

``````ls -d */
``````

这个命令将列出当前目录的所有子目录（不包含其他文件和子目录的内容）。

6. 递归列出文件和目录：使用 `-R` 参数，你可以递归地列出目录及其所有子目录的内容。

示例

``````ls -R
``````

这个命令将递归地列出当前目录及其所有子目录的内容。

7. 按照文件大小排序：使用 `-S` 参数，你可以按照文件大小排序。

示例

``````ls -S
``````

这个命令将按照文件大小从大到小排序当前目录的内容。

8. 按照修改时间排序：使用 `-t` 参数，你可以按照文件的修改时间排序。

示例

``````ls -lt
``````

这个命令将按照文件的修改时间从新到旧排序，并以长格式显示。

-l -a`或`ls -la`。请注意，不同的 Linux 发行版可能提供了更多的 `ls`参数选项，你可以通过`man ls` 命令查看更多信息。

### 3. cat

`cat` 是一个 Linux 命令，用于显示、复制、合并文件内容。它的名字源于 "concatenate"，意为连接，因为这个命令最初是用来连接文件的。

1. 显示文件内容：这是 `cat` 的最常见用法。例如，如果你想查看 `file.txt` 的内容，你可以运行以下命令：

``````cat file.txt
``````

这个命令将在终端中打印出 `file.txt` 的全部内容。

2. 合并多个文件：你可以在 `cat` 命令后指定多个文件名，以便将这些文件的内容合并并显示在终端中。例如：

``````cat file1.txt file2.txt
``````

这个命令会先打印出 `file1.txt` 的内容，然后再打印出 `file2.txt` 的内容。

3. 创建新文件：如果你想将多个文件的内容合并并保存到一个新文件中，你可以使用重定向操作符 `>`。例如：

``````cat file1.txt file2.txt > newfile.txt
``````

这个命令会创建一个新文件 `newfile.txt`，其中包含 `file1.txt``file2.txt` 的内容。

4. 添加到文件：如果你想将文件的内容添加到现有文件的末尾，而不是覆盖现有文件，你可以使用重定向操作符 `>>`。例如：

``````cat file1.txt >> file2.txt
``````

这个命令会将 `file1.txt` 的内容添加到 `file2.txt` 的末尾。

5. 显示行号：如果你想在显示文件内容时显示行号，你可以使用 `-n``--number` 参数。例如：

``````cat -n file.txt
``````

这个命令会在每行内容前显示行号。

### 4. echo

`echo` 是一个在 Unix-like 系统（如 Linux）中非常常用的命令，它用于在命令行界面输出字符串或变量的值。基本语法是 `echo [options] [string, variables...]`

1. 输出字符串：你可以使用 `echo` 命令输出一个或多个字符串。例如：

``````echo "Hello, World!"
``````

这个命令会在终端中打印出 "Hello, World!"。

2. 输出变量的值：你可以使用 `echo` 命令输出环境变量的值。例如：

``````echo \$HOME
``````

这个命令会在终端中打印出 `HOME` 环境变量的值，通常是你的家目录的路径。

3. 使用转义字符`echo` 命令支持一些转义字符，比如 `\n`（新行），`\t`（制表符）等。要启用这些转义字符，你需要使用 `-e` 参数。例如：

``````echo -e "Hello,\nWorld!"
``````

这个命令会打印出两行：第一行是 "Hello,"，第二行是 "World!"。

4. 不输出尾部的新行`echo` 命令默认会在输出的末尾添加一个新行。如果你不想输出这个新行，可以使用 `-n` 参数。例如：

``````echo -n "Hello, World!"
``````

这个命令会打印出 "Hello, World!"，但不会在末尾添加新行。因此，下一个终端提示符会紧接在 "Hello, World!" 后面，而不是在新的一行。

### 5. sort

`sort` 是一个在 Unix-like 系统（如 Linux）中常用的命令，用于对文本文件进行排序。基本语法是 `sort [options] [file...]`

1. 基本的排序：最简单的 `sort` 命令用法就是对文件中的所有行进行排序。例如，假设我们有一个文件 `file.txt`，其内容如下：

``````banana
apple
cherry
date
``````

我们可以使用 `sort` 命令对这个文件进行排序：

``````sort file.txt
``````

这将输出：

``````apple
banana
cherry
date
``````
2. 数值排序：默认情况下，`sort` 命令会按照字母顺序进行排序。如果你想按照数值进行排序，可以使用 `-n` 选项。例如：

``````echo -e "10\n2\n100" | sort -n
``````

这将输出：

``````2
10
100
``````
3. 反向排序：如果你想按照反向顺序进行排序，可以使用 `-r` 选项。例如：

``````echo -e "c\nb\na" | sort -r
``````

这将输出：

``````c
b
a
``````
4. 根据列排序：如果你有一个以某种分隔符（如空格或制表符）分隔的多列数据，你可以使用 `-k` 选项指定按照哪一列进行排序。例如：

``````echo -e "1 z\n2 y\n3 x" | sort -k 2
``````

这将按照第二列进行排序，输出：

``````3 x
2 y
1 z
``````
5. 检查是否已排序：如果你想检查一个文件是否已经排序，你可以使用 `-c` 选项。如果文件已经排序，`sort -c` 命令将不输出任何内容并返回 0。如果文件没有排序，`sort -c` 命令将输出第一个未排序的行并返回非零值。

### 6. |

1. 链接多个命令：你可以使用管道链接多个命令。例如，你可以使用 `ls` 命令列出目录的内容，然后使用 `grep` 命令搜索特定的文件。例如：

``````ls -l | grep ".txt"
``````

这个命令会在当前目录的文件列表中搜索所有 `.txt` 文件。

2. 使用 `sort``uniq` 命令删除重复的行：你可以使用管道链接 `sort``uniq` 命令来删除文件中的重复行。例如：

``````sort file.txt | uniq
``````

这个命令会先使用 `sort` 命令对 `file.txt` 文件进行排序，然后使用 `uniq` 命令删除重复的行。

3. 使用 `echo``bc` 命令进行计算：你可以使用管道链接 `echo``bc` 命令进行计算。例如：

``````echo "5 + 2" | bc
``````

这个命令会计算 "5 + 2" 的结果并输出。

4. 使用 `curl``jq` 命令处理 JSON 数据：如果你安装了 `curl``jq`，你可以使用它们处理 JSON 数据。例如：

``````curl -s "https://api.github.com/users/octocat" | jq '.login'
``````

这个命令会获取 GitHub 用户 "octocat" 的信息，并使用 `jq` 命令输出其登录名。

### 7. grep

`grep` 是一个在 Unix-like 系统（如 Linux）中常用的命令，用于搜索文件中的文本。`grep` 命令可以接受正则表达式，这使得它非常灵活和强大。基本语法是 `grep [options] pattern [file...]`

1. 基本的搜索：最基本的 `grep` 用法就是在一个或多个文件中搜索特定的文本。例如：

``````grep 'Hello' file.txt
``````

这将在 `file.txt` 文件中搜索所有包含 `Hello` 的行。

2. 忽略大小写：如果你想在搜索时忽略大小写，可以使用 `-i` 选项。例如：

``````grep -i 'hello' file.txt
``````

这将在 `file.txt` 文件中搜索所有包含 `hello`（无论大小写）的行。

3. 列出匹配文件：如果你只想知道哪些文件包含匹配的文本，而不关心具体的行，你可以使用 `-l` 选项。例如：

``````grep -l 'Hello' file1.txt file2.txt
``````

这将列出所有包含 `Hello` 的文件名。

4. 使用正则表达式`grep` 支持正则表达式，这使得它可以进行更复杂的搜索。例如：

``````grep 'H.*o' file.txt
``````

这将在 `file.txt` 文件中搜索所有以 `H` 开始，以 `o` 结束的行。

5. 显示行号：如果你想知道匹配的行在文件中的位置，你可以使用 `-n` 选项。例如：

``````grep -n 'Hello' file.txt
``````

这将在 `file.txt` 文件中搜索所有包含 `Hello` 的行，并显示这些行的行号。

6. 递归搜索：如果你想在一个目录及其所有子目录中搜索文件，你可以使用 `-r``-R` 选项。例如：

``````grep -r 'Hello' /path/to/directory/
``````

这将在 `/path/to/directory/` 及其所有子目录中搜索所有包含 `Hello` 的行。

### 8. uniq

`uniq` 是 Unix 和 Linux 系统中的一个工具，用于从输入中过滤掉重复的行。它通常与 `sort` 命令一起使用，因为 `uniq` 只能识别相邻的重复行。

1. 基本用法：最简单的 `uniq` 用法是直接使用它来过滤掉重复的行。例如：

``````sort file.txt | uniq
``````

首先，`sort` 命令将 `file.txt` 文件的行排序，然后 `uniq` 命令删除相邻的重复行。

2. 显示每行出现的次数：如果你想知道每行出现的次数，你可以使用 `-c` 选项。例如：

``````sort file.txt | uniq -c
``````

这将显示 `file.txt` 文件中每行出现的次数。

3. 只显示唯一的行：如果你只想显示出现一次的行（即不重复的行），你可以使用 `-u` 选项。例如：

``````sort file.txt | uniq -u
``````

这将只显示 `file.txt` 文件中不重复的行。

4. 只显示重复的行：如果你只想显示至少出现两次的行（即重复的行），你可以使用 `-d` 选项。例如：

``````sort file.txt | uniq -d
``````

这将只显示 `file.txt` 文件中重复的行。

### 9. bc

`bc`（Binary Calculator）是 Unix-like 系统（如 Linux）中的一个任意精度计算器语言。你可以使用 `bc` 命令进行各种数学计算。

1. 基本的计算：你可以在命令行中使用 `bc` 进行基本的数学运算。例如，如果你想计算 `3 + 4`，你可以使用以下命令：

``````echo '3 + 4' | bc
``````

这将输出 `7`

2. 使用变量`bc` 支持使用变量进行计算。例如，以下命令将计算 `a * b`，其中 `a` 是 5，`b` 是 6：

``````echo 'a=5; b=6; a*b' | bc
``````

这将输出 `30`

3. 浮点数计算：默认情况下，`bc` 命令执行的是整数运算。如果你想进行浮点数运算，你需要设置 `scale` 变量，这个变量决定了小数点后的位数。例如，以下命令将计算 `1 / 3`，并显示小数点后 3 位：

``````echo 'scale=3; 1/3' | bc
``````

这将输出 `0.333`

4. 高级数学函数`bc` 也支持一些高级的数学函数，比如平方根（sqrt）、指数（e）、自然对数（l）。为了使用这些高级函数，你需要使用 `-l` 选项启动 `bc`。例如，以下命令将计算平方根 `sqrt(4)`

``````echo 'sqrt(4)' | bc -l
``````

这将输出 `2`

### 10. cp

`cp` 是 Unix 和 Linux 系统中的一个基本命令，用于复制文件和目录。`cp` 命令的基本语法是 `cp [options] source destination`，其中 `source` 是你想要复制的文件或目录，`destination` 是复制的目标位置。

1. 复制文件：最基本的 `cp` 用法是复制单个文件。例如：

``````cp source.txt destination.txt
``````

这将复制 `source.txt` 文件到 `destination.txt`。如果 `destination.txt` 文件已存在，这个命令将覆盖它。

2. 复制目录：如果你想复制整个目录及其内容，你需要使用 `-R``-r` 选项。例如：

``````cp -R source_directory/ destination_directory/
``````

这将复制 `source_directory` 及其所有内容（包括子目录和文件）到 `destination_directory`

3. 保留文件属性：如果你想在复制文件或目录时保留其原有的属性（如所有权和权限），你可以使用 `-p` 选项。例如：

``````cp -p source.txt destination.txt
``````

这将保留 `source.txt` 文件的所有权和权限。

4. 交互式复制：如果你不希望 `cp` 命令在复制时覆盖已存在的文件，你可以使用 `-i` 选项。这将使 `cp` 命令在覆盖文件之前询问你的确认。例如：

``````cp -i source.txt destination.txt
``````

如果 `destination.txt` 文件已存在，这个命令将询问你是否要覆盖它。

### 11. 文件权限

Linux 系统是一种典型的多用户系统，不同的用户处于不同的地位，拥有不同的权限。

• -：表示这是一个普通文件。
• d：表示这是一个目录。
• r：表示拥有者、用户组或其他用户有读取权限。
• w：表示拥有者、用户组或其他用户有写入权限。
• x：表示拥有者、用户组或其他用户有执行权限。

``````-rwxr-xr--
``````

1. 第一个字符表示文件类型，`-` 表示这是一个普通文件，`d` 表示这是一个目录。
2. 接下来的三个字符 `rwx` 表示文件拥有者的权限。`r` 表示拥有者有读取权限，`w` 表示拥有者有写入权限，`x` 表示拥有者有执行权限。
3. 再接下来的三个字符 `r-x` 表示用户组的权限。`r` 表示用户组有读取权限，`-` 表示用户组没有写入权限，`x` 表示用户组有执行权限。
4. 最后三个字符 `r--` 表示所有其他用户的权限。`r` 表示其他用户有读取权限，`--` 表示其他用户没有写入和执行权限。

``````chmod 777 filename
``````

### 11.1 Linux 连接数是什么意思？

``````drwxr-xr-x 2 user user 4096 May 30 16:34 directory
-rw-r--r-- 1 user user 1024 May 30 16:34 file
``````

### 1.3 Linux 显示的时间位置是代表的是最后修改的时间还是创建的时间？

• 访问时间 (`atime`)：文件最后一次被读取的时间。
• 状态改变时间 (`ctime`)：文件状态最后一次改变的时间，比如权限或者所有者的改变。

AI悦创·编程一对一

AI悦创·推出辅导班啦，包括「Python 语言辅导班、C++ 辅导班、java 辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发、Web、Linux」，全部都是一对一教学：一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。当然，还有线下线上摄影课程、Photoshop、Premiere 一对一教学、QQ、微信在线，随时响应！微信：Jiabcdefh

C++ 信息奥赛题解，长期更新！长期招收一对一中小学信息奥赛集训，莆田、厦门地区有机会线下上门，其他地区线上。微信：Jiabcdefh

• 0
• 0
• 0
• 0
• 0
• 0

• 按正序
• 按倒序
• 按热度