2020-2021-1 20209322《Linux内核原理与分析》第一周作业
汇总初学习Linux时遇到的问题。
1.关于apt-get update,为什么安装软件前要先调用update更新?这个更新是更新什么?
在学习前几个实验的过程中,看到很多次安装某个软件的时候,都会出现如下的指令:
sudo apt-get update
sudo apt-get install 软件名
在安装前都要先update一下,心里就会产生疑问,为什么需要update,这个更新到底更新了什么?于是就试了试在不输入update指令的情况下,直接安装会怎么样,实验过程中发现,不进行update操作会出现很大的问题。百度了一些资料,了解到“apt-get 是用于处理 apt包的公用程序集,我们可以用它来在线安装、卸载和升级软件包”,在apt-get update命令里,update就是更新本地的软件索引,根据你配置的站点的目录来更新。此时不会去下载软件,只是更新目录。update会访问源列表里的每个网址,并读取软件列表,然后保存在本地电脑。update之后,在install的时候才会根据索引去你配置的站点下载相应的软件源。所以,要养成习惯,install之前update一下,看看和站点的同步不同步。
而用来更新软件的指令是upgrade指令,注意在更新前也还是需要update一下。
sudo apt-get update
sudo apt-get upgrade
2.关于管道
管道的作用是连接前一个命令的输出,并将其作为下一个命令的输入。
例如,找出当前目录下面占用最大的前十个文件,du命令的输出作为sort命令的输入,sort的输出作为head命令的输入。
du -a | sort -nr | head -n 10
3.关于cgdb
在虚拟机上安装完vim、gcc和cgdb之后,尝试用vim编写简单的测试程序,
#include <stdio.h>
int main(){
printf("hello~\n");
return 0;
}
在编译之后
gcc test.c
和上课老师讲的一样,生成了a.out文件,这时我想利用cgdb进行调试,尝试使用cgdb test.c 和cgdb a.out指令,但是,进入cgdb之后却没有代码,通过查阅博客,才知道,cgdb是进入可执行程序进行调试,因此在编译的时候,需要用gcc编译出一个可执行程序。
gcc -o test test.c
这样,再次使用
cgdb test
就可以进行调试了。
4.向上翻屏
使用 “指令 --help” 指令时,会在终端直接输出内容,当内容太多时,只能看到最后的部分,习惯性使用“↑”却是历史记录,这时需要使用shift+PgUp进行上翻操作,可以查看上一个屏幕的内容。