跳至主要內容

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

上课 log

1. 显示隐藏文件操作

2. ...

在Linux或Unix系统中,ls -a命令用于列出目录中的所有文件,包括隐藏文件。.代表当前目录,..代表上级目录。当你在终端中使用cd命令进入一个目录时,.代表该目录本身,而..代表该目录的上一级目录。

inventory 1

1. cd

快速🔜

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

在实际使用中,你需要在 cd 命令后添加你希望切换到的目录路径。例如,如果你想切换到 /home/user/documents,你需要输入 cd /home/user/documents

一些常用的 cd 命令参数包括:

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

请注意,Linux 系统是区分大小写的,所以在输入目录路径时需要注意大小写。此外,如果目录名称中包含空格,你需要使用引号将其包裹起来,或者使用反斜杠 \ 对空格进行转义。例如,cd "My Documents"cd My\ Documents

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
    

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

这些就是 ls 命令的一些常见用法。记住,这些参数可以组合使用,例如 `ls

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

3. cat

快速🔜

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

基本语法是 cat [options] [file_names]。如果没有指定文件名,cat 就会从标准输入(通常是键盘)读取数据。

以下是一些常用的 cat 命令的用法和示例:

  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.txtfile2.txt 的内容。

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

    cat file1.txt >> file2.txt
    

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

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

    cat -n file.txt
    

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

这些是 cat 命令的主要用法。记住,尽管 cat 在显示小文件时非常有用,但如果你试图使用 cat 来查看非常大的文件,可能会导致终端被大量数据淹没。在这种情况下,你可能会更愿意使用 lessmore 这样的命令。

4. echo

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

以下是一些常见的 echo 命令的用法和示例:

  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!" 后面,而不是在新的一行。

这些是 echo 命令的主要用法。你可以通过 man echo 命令查看详细的帮助信息。

5. sort

快速🔜

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

以下是 sort 命令的一些常见用法和示例:

  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 命令将输出第一个未排序的行并返回非零值。

这些是 sort 命令的一些主要用法。你可以通过 man sort 命令查看详细的帮助信息。

6. |

快速🔜

在 Unix-like 系统(如 Linux)中,竖线 | 被称为管道(pipe)。它用于将一个命令的输出作为另一个命令的输入。这是一种非常强大的功能,可以用来链接多个命令以执行复杂的操作。

以下是一些使用管道的示例:

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

    ls -l | grep ".txt"
    

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

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

    sort file.txt | uniq
    

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

  3. 使用 echobc 命令进行计算:你可以使用管道链接 echobc 命令进行计算。例如:

    echo "5 + 2" | bc
    

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

  4. 使用 curljq 命令处理 JSON 数据:如果你安装了 curljq,你可以使用它们处理 JSON 数据。例如:

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

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

这些都是管道的一些常见用法。通过使用管道,你可以将多个命令组合起来创建复杂的脚本和一次性命令。你可以在 bash 或其他 Unix-like shell 的文档中找到更多关于管道的信息。

7. grep

快速🔜

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

以下是 grep 命令的一些常见用法和示例:

  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 的行。

这些是 grep 命令的一些主要用法。你可以通过 man grep 命令查看详细的帮助信息。

8. uniq

快速🔜

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

以下是 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 文件中重复的行。

这些是 uniq 命令的主要用法。你可以通过 man uniq 命令查看详细的帮助信息。

9. bc

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

以下是 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

以上是 bc 命令的一些基本用法。你可以在 bc 的手册页(通过 man bc 命令查看)中找到更多详细的信息。

10. cp

快速🔜

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

以下是 cp 命令的一些常见用法和示例:

  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 文件已存在,这个命令将询问你是否要覆盖它。

以上是 cp 命令的一些常见用法。你可以通过 man cp 命令查看更详细的帮助信息。

11. 文件权限

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

为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

快速🔜

在 Unix 和 Linux 系统中,文件和目录的权限是由三类用户和三种权限类型决定的。

三类用户包括文件的拥有者(user)、同一用户组的其他用户(group)和所有其他用户(others)。

三种权限类型包括读取(read)、写入(write)和执行(execute)。

以下是 Linux 文件权限的符号含义:

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

例如,一个文件的权限可能如下所示:

-rwxr-xr--

这个权限字符串可以分成四个部分:

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

所以,这个权限字符串表示这是一个普通文件,文件拥有者有读、写和执行权限,用户组有读和执行权限,所有其他用户只有读取权限。

在 Linux 系统中,你可以使用 chmod 命令改变文件或目录的权限。例如,如果你想让文件拥有者、用户组和所有其他用户都有读、写和执行权限,你可以使用以下命令:

chmod 777 filename

在这个命令中,777 是一个八进制数字,表示所有用户都有读(4)、写(2)和执行(1)权限(4+2+1=7)。第一个 7 表示文件拥有者的权限,第二个 7 表示用户组的权限,第三个 7 表示所有其他用户的权限。

11.1 Linux 连接数是什么意思?

在 Linux 中,"连接数"(也称为硬链接数或链接计数)通常指的是一个文件或目录的硬链接数量。

硬链接是文件系统中的一个引用或指向文件数据的指针。每当创建一个硬链接,文件的链接计数就会增加。每当删除一个硬链接,文件的链接计数就会减少。当链接计数达到0时,文件的数据块将被释放,该文件即被删除。

对于目录,链接数还包括子目录的数量。在 Unix 和 Linux 文件系统中,每个目录都包含两个特殊的条目:.... 代表目录本身,.. 代表父目录。这两个条目都被计入目录的链接数。因此,一个没有子目录的新目录的链接数为 2。

当你使用 ls -l 命令查看目录或文件的详细信息时,第二列就是链接数。例如:

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

在这个例子中,directory 的链接数为 2,file 的链接数为 1。

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

在 Linux 系统中,当你使用 ls -l 命令查看文件或目录的详细信息时,时间戳字段默认显示的是最后一次修改的时间,也被称为修改时间 (mtime)。

不过在 Linux 中,还有两个其他的时间戳可以参考:

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

注意,Linux 并不直接支持显示文件的创建时间,这是由于大多数 Linux 文件系统并不存储这个信息。这一点与一些其他的操作系统,如 Windows 和 Mac OS X,不同,这些系统会直接显示文件的创建时间。

如果你想查看这些额外的时间戳,可以使用 stat 命令。例如,stat filename 将会显示文件的访问时间、修改时间以及状态改变时间。

不过请注意,根据你的 Linux 发行版和文件系统,可用的信息可能会有所不同。

公众号:AI悦创【二维码】

AI悦创·编程一对一

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

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

方法一:QQopen in new window

方法二:微信:Jiabcdefh

上次编辑于:
贡献者: AndersonHJB
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度