Linux常用命令练习二

目录

练习一

练习二

练习三


练习一

1.在用户的家目录下创建 目录文件 dir1 和 普通文件file1

2.在家目录下给dir1目录嵌套创建 dir1/dir2/dir3/dir4/dir5

3.在家目录下直接一步进入到 dir4 里面

4.在dir4目录中将家目录下的file1 移动到上一级的dir3中

5.在dir4目录下创建一个目录文件 test

6.将test 复制到上一级的dir3中

7.在dir4中直接查看dir3中有哪些文件

8.在dir4中直接回到家目录 删除刚才创建的目录 dir1

  • 在用户的家目录下创建 目录文件 dir1 和 普通文件file1

  • ubuntu@ubuntu:~$ mkdir dir1

    ubuntu@ubuntu:~$ touch file1

    ubuntu@ubuntu:~$ ls

在家目录下给dir1目录嵌套创建 dir1/dir2/dir3/dir4/dir5

ubuntu@ubuntu:~$ mkdir -p dir1/dir2/dir3/dir4/dir5
ubuntu@ubuntu:~$ tree dir1
dir1
└── dir2
    └── dir3
        └── dir4
            └── dir5

在家目录下直接一步进入到 dir4 里面

ubuntu@ubuntu:~$ cd dir1/dir2/dir3/dir4
ubuntu@ubuntu:~/dir1/dir2/dir3/dir4$ \

在dir4目录中将家目录下的file1 移动到上一级的dir3中

ubuntu@ubuntu:~/dir1/dir2/dir3/dir4$ mv ~/file1 ../
ubuntu@ubuntu:~/dir1/dir2/dir3/dir4$ ls ../

dir4  file1

在dir4目录下创建一个目录文件 test

ubuntu@ubuntu:~/dir1/dir2/dir3/dir4$ mkdir test
ubuntu@ubuntu:~/dir1/dir2/dir3/dir4$ ls
dir5  test

将test 复制到上一级的dir3中

ubuntu@ubuntu:~/dir1/dir2/dir3/dir4$ cp -r test ../

在dir4中直接查看dir3中有哪些文件

ubuntu@ubuntu:~/dir1/dir2/dir3/dir4$ ls ../
dir4  file1  test

在dir4中直接回到家目录 删除刚才创建的目录 dir1

ubuntu@ubuntu:~/dir1/dir2/dir3/dir4$ cd ~
ubuntu@ubuntu:~$ rm -rf dir1
ubuntu@ubuntu:~$ tree dir1
dir1 [error opening dir]

0 directories, 0 files

练习二

1.创建目录24081C,在该目录下创建目录dir1 dir2 文件file1

2.使用echo在file1中打印一首古诗【执行调整格式】

3.复制file1给file2

4.将file1移动到dir1

5.将file2移动到dir2

6.在file1后面追加一行语句“我爱C语言”

7.查看file1内容

创建目录24081C,在该目录下创建目录dir1 dir2 文件file1

ubuntu@ubuntu:~$ mkdir -p 24081C/dir1

ubuntu@ubuntu:~$ cd 24081C

ubuntu@ubuntu:~/24081C$ mkdir dir2
ubuntu@ubuntu:~/24081C$ touch file1

ubuntu@ubuntu:~/24081C$ ls
dir1  dir2  file1

使用echo在file1中打印一首古诗【执行调整格式】

ubuntu@ubuntu:~/24081C$ echo -e "\t\t\t停车坐爱枫林晚,\n\t\t\t霜叶红于二 月花" >> file1
ubuntu@ubuntu:~/24081C$ cat file1 
            停车坐爱枫林晚,
            霜叶红于二月花

复制file1给file2

ubuntu@ubuntu:~/24081C$ cp file1 file2
ubuntu@ubuntu:~/24081C$ ls
dir1  dir2  file1  file2
ubuntu@ubuntu:~/24081C$ cat file2
            停车坐爱枫林晚,
            霜叶红于二月花

将file2移动到dir2

ubuntu@ubuntu:~/24081C$ mv file2 dir2
ubuntu@ubuntu:~/24081C$ ls
dir1  dir2  file1
ubuntu@ubuntu:~/24081C$ cd dir2
ubuntu@ubuntu:~/24081C/dir2$ ls
file2

在file1后面追加一行语句“我爱C语言”

ubuntu@ubuntu:~/24081C$ echo "我爱C语言" >>file1

查看file1内容

ubuntu@ubuntu:~/24081C$ cat file1 
            停车坐爱枫林晚,
            霜叶红于二月花
我爱C语言

练习三

1.使用gcc 程序编译生成可执行文件的步骤分为________、________、________、________ 。

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

2.GCC编译器中 -S 选项完成的工作是________ 。

编译

3写出gcc分步编译的详细步骤。

gcc分为四个步骤:预处理,编译,汇编和链接

  1. 预处理(Preprocessing)

    • 调用预处理器(cpp),处理C源代码中的预处理指令,如宏定义(#define)、条件编译指令(#ifdef, #ifndef, #endif等)、文件包含(#include)等。
    • 展开所有被#include指令包含的头文件,并进行宏替换,即将宏变量替换成具体的数值或表达式。
    • 去除源代码中的所有注释。
    • 预处理完成后,生成一个预处理后的文件(通常以.i为后缀)。例如,使用命令gcc -E hello.c -o hello.i来生成预处理文件hello.i。
  2. 编译(Compilation)

    • 调用编译器(cc1),检查预处理后的代码是否符合C语言的语法规则。
    • 将C代码转换成汇编语言代码。如果只想生成汇编代码而不进行后续的汇编和链接,可以使用-S选项,如gcc -S hello.i -o hello.s
    • 生成的汇编代码文件(通常以.s为后缀)包含了程序的汇编指令。
  3. 汇编(Assembly)

    • 调用汇编器(as),将汇编语言代码转换成机器码(即二进制代码)。
    • 将汇编文件转换成目标文件(object file),这些文件包含了程序的目标代码(通常以.o为后缀)。例如,使用命令gcc -c hello.s -o hello.o来生成目标文件hello.o。
  4. 链接(Linking)

    • 调用链接器(ld),将程序中的目标文件以及程序需要的库文件(如标准C库libc.so.6)合并成一个可执行文件。
    • 链接过程中,链接器会解决目标文件之间的外部引用(即函数调用和变量引用),生成最终的可执行文件(在Linux下默认生成a.out,但可以使用-o选项指定输出文件名)。例如,使用命令gcc hello.o -o hello来生成可执行文件hello。

1.C语言的程序的入口函数是什么,请写出全称?(山东丁一)

int main(int argc, char *argv[]){

        return 0;

}

2.用户编写了一个文本文件a.txt,想要得到一个名为txt.a的该文件,可以使用哪些指令呢?

1.mv a.txt txt.a (a.txt会消失,变成txt.a)

2.cp a.txt txt.a    (复制,所以a.txt不会消失)

3.cat a.txt>txt.a (同时出现a.txt和txt.a)

3.分析一下#include <stdio.h>的意思

#表示:# 是一个预处理指令的标识符。

include表示:include 是预处理指令之一,用于指示预处理器在当前文件中包含(插入)另一个文件的内容。

stdio.h表示:stdio.h 是标准输入输出库的头文件,它是C语言标准库的一部分。这个头文件中定义了进行输入和输出操作的函数,比如 printfscanffopenfclose 等。

<>可以改为””吗?二者的区别是什么?

<> 直接从库文件找 /usr/include/stdio.h。

"" 先在当前目录找,找不到再去库文件找。

  • 26
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值