Linux基础

1 Linux命令

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

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

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

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

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

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

以上简要说明了选项及参数的区别,但具体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:

3 cheat 命令

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

cheat是作弊,小抄的意思。

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

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

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至少一遍;

2.使用vim 输入以下代码,联系使用“K”查找帮助文档:

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

4.练习gdb调试代码;

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

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

最新文章

  1. QuartusII Design partion and logic lock
  2. JS组件系列——Bootstrap右键菜单解决方案:ContextMenu
  3. javascript动态创建script标签,加载完成后调用回调
  4. Resting state brain networks derived from spatial ICA - an individual case
  5. SpringMVC学习系列(4) 之 数据绑定-1
  6. iOS屏蔽高频点击技巧
  7. Docker image 镜像介绍
  8. bootstrap之noConflict的详解
  9. 应用之间进行跳转,ComponentName的方式
  10. ecshop php5.4以上版本错误之preg_replace 替换成 preg_replace_callback
  11. DP CF 319 div1B
  12. 关于PHP 采集类
  13. spring6——AOP的编程术语
  14. OkHTTPClient
  15. Openlayer 3加载本地ArcGIS切片
  16. libgdx学习记录2——文字显示BitmapFont
  17. 建立第一个SpringBoot小列子(碰到的错误)
  18. PDF 补丁丁 0.6.0.3363 版发布(修复无法保存应用程序设置的问题)
  19. Intellij idea配置及安装插件小记一二
  20. 探讨.NET Core数据进行3DES加密和解密问题

热门文章

  1. sql 存储过程中top 后面跟参数的问题
  2. 同域iframe的高度自适应
  3. C# 3个线程A B C 依次打印123123123..
  4. Atitit. 软件设计 模式 变量 方法 命名最佳实践 vp820 attilax总结命名表大全
  5. 给定a、b两个文件,各存放50亿个url,每个url各占用64字节,内存限制是4G,如何找出a、b文件共同的url?
  6. Effective Java 32 Use EnumSet instead of bit fields
  7. SQL2012数据库加密方法
  8. poj 3169 Layout 差分约束模板题
  9. C++ 数组长度 以及 数组名作为参数传递给函数 以及 为什么不在子函数中求数组长度
  10. 快速理解Kafka分布式消息队列框架