《Linux编程基础》第二章习题

一、填空题

  1. Linux 是一个基于命令行的操作系统,Linux 命令中的选项分为(长选项)和(短选项)。
  2. Linux 操作系统秉持“一切皆文件”的思想,将其中的文件、设备等都作为文件来操作和处理,因此文件处理与管理命令是 Linux 系统中最基础的命令。常用的文件处理与管理命令有(ls)、(cd)、(pwd)、(touch)、(mkdir)等。
  3. vi 编辑器有三种工作模式,分别是:(命令模式)、(插入模式)和底行模式。
  4. GCC 编译器的编译流程依次为(预处理)、(编译)、(汇编)和(链接)。

二、判断题

  1. grep 命令的功能是在文件中搜索与字符串匹配的行并输出。(√)
  2. vi 编辑器的三种工作模式可直接切换。(×)
  3. chmod 命令用于更改文件或目录的所有者。(×)
  4. GCC 编译器的编译流程依次为:编译、汇编、预处理、链接。(×)
  5. gzip 命令既能用于压缩文件,又能对压缩包解压缩。(√)

三、单选题

  1. 在以下选项中选出实现打印当前路径下所有文件名的命令。(C)

    A. ls -l

    B. ls

    C. ls -a

    D. ls -i

  2. 假设当前有一个文件 file1,其权限为 rwxr–r--,则在以下命令中,哪个命令可以使改文件所属组拥有对该文件的执行权限?(D)

    A. chown g+x file1

    B. chmod 644 file1

    扫描二维码关注公众号,回复: 5379368 查看本文章

    C. chmod o+x file1

    D. chmod a+x file1

  3. 假设 Linux 系统中不存在文件 newfile,现要创建一个新文件 newfile,以下哪个命令无法实现该功能?(D)

    A. vi newfile

    B. touch newfile

    C. cp file /itheima/newfile

    D. cd /itheima/newfile

  4. 下列各选项中哪个选项不属于 vi 编辑器的工作模式?(A)

    A. 视图模式

    B. 插入模式

    C. 底行模式

    D. 命令模式

  5. 从以下选项中选出 GCC 编译器的正确流程。(D)

    A. 预处理、汇编、编译、链接

    B. 预处理、链接、汇编、编译

    C. 链接、预处理、汇编、编译

    D. 预处理、编译、汇编、链接

  6. 以下关于 vi 编辑器的选项中,正确的是哪个?(A)

    A. vi 编辑器的工作莫斯有三种,分别为命令模式、插入模式和底行模式

    B. 在 vi 编辑器中,插入模式和底行模式可以直接切换

    C. 在 vi 编辑器中,可通过 Esc 键从插入模式切换到底行模式

    D. vi 编辑器的底行模式和命令模式间不需要切换

四、简答题

  1. 简单说明 vi 编辑器的工作模式,并画图说明各模式间的切换方法。

    vi 编辑器共有三种工作模式,分别是:命令模式(command mode)、插入模式(insert mode)、底行模式(last line mode)。

    img

  2. 简述 GCC 编译器的工作流程,并说明每步执行的内容。

    GCC 的编译过程分为 4 个步骤,分别是预处理、编译、汇编和链接。

    (1)预处理:主要处理源代码中以 # 开头的预编译指令和一些注释信息;

    (2)编译:对经过预处理的文件进行语法、词法和语义分析,确定代码实际做的工作,若检查无误,则声称相应的汇编文件;

    (3)汇编:将编译后生成的汇编代码转换为机器可以执行的命令,即二进制指令;

    (4)链接:组装各个目标文件,解决符号依赖和库依赖关系,最终生成可执行文件。

五、编程题

  1. 使用 vi 编辑器编写程序并执行,要求程序可向终端打印字符串。

    $ vi print_string.c
    
    #include <stdio.h>
    int main() {
    	printf("string\n");
    	return 0;
    }
    
    $ gcc print_string.c -o print_string
    $ ./print_string
    string
    
  2. 使用 vi 编辑器编写程序,实现简单的加法功能,且将执行结果打印到终端。

    $ vi add_func.c
    
    #include <stdio.h>
    int add(int a, int b) {
        return a+b;
    }
    int main() {
        printf("1+1 = %d\n", add(1, 1));
        return 0;
    }
    
    $ gcc add_func.c -o add_func
    $ ./add_func
    1+1 = 2
    

猜你喜欢

转载自blog.csdn.net/ShadowBurn/article/details/87881454