Linux基础与Linux下C语言编程基础

时间:2023-03-08 16:02:01
Linux基础与Linux下C语言编程基础

Linux基础

1 Linux命令

如果使用GUI,Linux和Windows没有什么区别。Linux学习应用的一个特点是通过命令行进行使用。

登录Linux后,我们就可以在#或$符后面去输入命令,有的时候命令后面还会跟着选项(options)或参数(arguments)。即Linux中命令格式为:

command [options] [arguments] //中括号代表是可选的,即有些命令不需要选项也不需要参数

选项是调整命令执行行为的开关,选项不同决定了命令的显示结果不同。

参数是指命令的作用对象。

如ls命令,lsls .显示是当前目录的内容,这里“.”就是参数,表示当前目录,是缺省的可以省略。我们可以用ls -a .显示当前目录中的所有内容,包括隐藏文件和目录。其中“-a” 就是选项,改变了显示的内容,如下图所示:

Linux基础与Linux下C语言编程基础

以上简要说明了选项及参数的区别,但具体Linux中哪条命令有哪些选项及参数,需要我们靠经验积累或者查看Linux的帮助了。

2 man命令

不论学习编程还是Linux命令,掌握帮助文档的使用都是很重要的,是举一反三的重要途径。 man是manul的缩写,我们可以通过man man来查看man的帮助,如下图:

帮助文档包含:

1 Executable programs or shell commands(用户命令帮助)
2 System calls (系统调用帮助)
3 Library calls (库函数调用帮助)
4 Special files (usually found in /dev)
5 File formats and conventions eg /etc/passwd(配置文件帮助)
6 Games
7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)
8 System administration commands (usually only for root)
9 Kernel routines [Non standard]

解释一下:

1是普通的Linux命令
2是系统调用,操作系统的提供的服务接口
3是库函数, C语言中的函数
5是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
6是给游戏留的,由各个游戏自己定义
7是附件还有一些变量,比如向environ这种全局变量在这里就有说明
8是系统管理用的命令,这些命令只能由root使用,如ifconfig

其中1,2,3是我们学习的重点,区别大家练习一下就知道了,比如printf是C语言的库函数,也是一个Linux命令,大家尝试一下man printf,man 1 printf,man 3 printf,体会一下区别。

知道printf 命令也好,printf函数也好,查找帮助文档都很容易。man有一个-k 选项用起来非常好,这个选项让你学习命令,编程时有了一个搜索引擎,可以举一反三。 我们通过一个例子来说明,比如数据结构中学过排序(sort),我不知道C语言中有没有完成这个功能的函数,可以通过“man -k sort”来搜索,因为是找C库函数,我们关注带3的,qsort好像是个好选项,如下图:

结合后面学习的grep 命令和管道,可以多关键字查找:

man -k key1 | grep key2 | grep key3 | ...

如下图,可以更好的找到qsort:

Linux基础与Linux下C语言编程基础

Linux基础与Linux下C语言编程基础

3 cheat 命令

man 虽然很重要,但有些命令看了帮助还不会用,初学者需要例子,cheat就是这个身边的小抄。 cheat 命令不是Linux自带的,大家参考这篇文章英文版)安装,实验楼课程实验系统中已经安装了。

cheat是作弊,小抄的意思。

cheat命令是在GNU通用公共许可证下,为Linux命令行用户发行的交互式备忘单应用程序。它提供显示Linux命令使用案例,包括该命令所有的选项和简短但尚可理解的功能。

使用cheat命令作弊是可以的。:)

Linux基础与Linux下C语言编程基础

4 其他核心命令

和查找相关的核心命令还有find,locate,grep,whereis,which,其中:

  • find查找一个文件在系统中的什么位置,locate是神速版本的find(Windows下有个Everything工具和locate类似).
  • grep 可以对文件全文检索,支持正则表达式,正则表达式也是一个重要的元知识。
  • whereis,which告诉你使用的命令工具装在什么地方。

上面的命令包括man -k有一个共同特点就是基于“搜索”,学好了可以举一反三,大家重点学习,掌握了他们,其他命令就可以自学了。你用 “man find”, “cheat find”试试。

Linux下C语言编程基础

1.练习vimtutuor至少一遍;

Linux基础与Linux下C语言编程基础

Linux基础与Linux下C语言编程基础

Linux基础与Linux下C语言编程基础Linux基础与Linux下C语言编程基础Linux基础与Linux下C语言编程基础Linux基础与Linux下C语言编程基础Linux基础与Linux下C语言编程基础

2.使用vim 输入以下代码,联系使用“K”查找帮助文档: Linux基础与Linux下C语言编程基础

3.练习gcc编译运行代码;

Linux基础与Linux下C语言编程基础

Linux基础与Linux下C语言编程基础

4.练习gdb调试代码;

5.把上述代码中除了main函数外的代码制作成一个静态库math.a和一个共享库math.so;

6.编写makefile,让代码编译,上述静态库和共享库的使用自动化。