===============第二节 Linux下C语言开发基础===========linux
********************** 重要知识点总结梳理*********************web
1、学习目标shell
一、实验楼环境介绍 vim
二、经常使用 Shell 命令及快捷键 bash
三、Linux 使用小技巧服务器
2、学习资源架构
一、课程资源:https://www.shiyanlou.com/courses/413(实验一,课程邀请码:W7FQKW4Y)less
二、Linux 基础入门:https://www.shiyanlou.com/courses/1编辑器
三、学习过程参考:任务指导书函数
3、学习记录
一、Linux 桌面环境介绍:相对于如今的 Windows 系统,UNIX/Linux 自己是没有图形界面的,咱们一般在 Unix/Linux 发行版上看到的图形界面实际都只是运行在 Linux 系统之上的一套软件,相似 Windows95 以前的Windows 的图形界面实则也只是运行在 DOS 环境的一套软件。而 Linux 上的这套软件之前是XFree86,如今则是 xorg(X.Org),而这套软件又是经过 X 窗口系统(X Window System,也常被称为X11或X)实现的,X 自己只是工具包及架构协议,而 xorg 即是 X 架构规范的一个实现体,也就是说它是实现了 X 协议规范的一个提供图形用户界面服务的服务器,就像实现了 http 协议提供 web 服务的 Apache。若是只有服务器也是不能实现一个完整的桌面环境的,固然还须要一个客户端,咱们称为 X Client,像以下几个你们熟知也最流行的实现了客户端功能的桌面环境KDE,GNOME,XFCE,LXDE,其中就有你看到的,实验楼目前使用的 XFCE 桌面环境,部分老用户可能能够回想起,实验楼以前使用的环境是 LXDE。这也意味着在 Linux 上你能够本身选择安装不一样的桌面环境,甚至能够定制本身的专属桌面。
二、Linux终端:
(1)Terminal:一般在咱们使用 Linux 时,咱们并非直接与系统打交道,而是经过一个叫作 Shell 的中间程序来完成的,在图形界面下为了实现让咱们在一个窗口中完成接受用户输入和显示输出,Linux 系统还提供了一个叫作终端模拟器的程序(Terminal),下面几个比较常见的终端模拟器,例如 gnome-terminal,kconsole,xterm,rxvt,kvt,nxterm 和 eterm,目前咱们的实验中的终端程序是 xfce 桌面环境自带的 xfce-terminal。不过要注意的是这里所说的终端(Terminal)和控制台(Console)是有区别的。
(了解)终端本质上是对应着 Linux 上的 /dev/tty 设备,Linux 的多用户登录就是经过不一样的 /dev/tty 设备完成的,Linux 默认提供了 6 个纯命令行界面的 “terminal”(准确的说这里应该是 6 个 virtual consoles)来让用户登陆,在物理机系统上你能够经过使用[Ctrl]+[Alt]+[F1]~[F6]进行切换,不过在咱们的在线实验环境中可能没法切换,由于特殊功能按键会被你主机系统劫持。当你切换到其中一个终端后想要切换回图形界面,你能够按下[Ctrl]+[Alt]+[F7]来完成。
(2)Shell
一般在图形界面中对实际体验带来差别的不是上述的不一样发行版的各类终端模拟器,而大都是这个 Shell(壳),有壳就有核,这里的核就是指的 UNIX/Linux 内核,Shell 是指“提供给使用者使用界面”的软件(命令解析器),相似于 DOS 下的 command(命令行)和后来的 cmd.exe。普通意义上的 Shell 就是能够接受用户输入命令的程序。它之因此被称做 Shell 是由于它隐藏了操做系统底层的细节。一样的 Unix/Linux 下的图形用户界面 GNOME 和 KDE,有时也被叫作“虚拟 shell”或“图形 shell”。
Unix/Linux 操做系统下的 Shell 既是用户交互的界面,也是控制系统的脚本语言。固然在这点也有别于 Windows 下的命令行,虽然也提供了很简单的控制语句。在Windows 操做系统下,可能有些用户历来都不会直接的使用 Shell,然而在 UNIX 系列操做系统下,Shell 仍然是控制系统启动、X11 启动和不少其余实用工具的脚本解释程序。
在 UNIX/Linux 中比较流行的常见的 Shell 有 bash,zsh,ksh,csh 等等,Ubuntu 终端默认使用的是 bash,默认的桌面环境是 GNOME 或者 Unity(基于 GNOME),但咱们的环境中使用的分别是zsh 和 xfce。
3.命令行操做体验
(1)重要快捷键:
[Tab]:命令补全
补全命令,补全目录,补全命令参数
[Ctrl+c]:强行终止当前程序(你能够放心它并不会使终端退出)。
如:
$ tail (如图)
又或者输入:
$ find /
其余一些经常使用快捷键
Ctrl+d 键盘输入结束或退出终端
Ctrl+s 暂定当前程序,暂停后按下任意键恢复运行
Ctrl+z 将当前程序放到后台运行,恢复到前台为命令fg
Ctrl+a 将光标移至输入行头,至关于Home键
Ctrl+e 将光标移至输入行末,至关于End键
Ctrl+k 删除从光标所在位置到行末
Alt+Backspace 向前删除一个单词
(笔记本上通常没有这个键,所以没法试验:)
Shift+PgUp 将终端显示向上滚动
Shift+PgDn 将终端显示向下滚动
2).学会利用历史输入命令
与之前系统控制台一致。
3).学会使用通配符
通配符是一种特殊语句,主要有星号(*)和问号(?),用来对字符串进行模糊匹配(好比文件名,参数名)。当查找文件夹时,可使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,经常使用通配符代替一个或多个真正的字符。
终端里面输入的通配符是由 Shell 处理的,不是由所涉及到命令语句处理的,它只会出如今命令的“参数值”里(它不用在 命令名称里, 命令不记得,那就用Tab补全)。当 Shell 在“参数值”中遇到了通配符时,Shell 会将其看成路径或文件名去在磁盘上搜寻可能的匹配:若符合要求的匹配存在,则进行代换(路径扩展);不然就将该通配符做为一个普通字符传递给“命令”,而后再由命令进行处理。总之,通配符 实际上就是一种 Shell 实现的路径扩展功能。在 通配符被处理后, Shell 会先完成该命令的重组,而后再继续处理重组后的命令,直至执行该命令。
先使用 touch 命令建立 2 个文件,后缀都为 txt:
$ touch adsfasd.txt wergjlkas.txt
能够给文件随意命名,假如过了很长时间,你已经忘了这两个文件的文件名,如今你想在你大堆其余文件中找到这两个文本文件,就可使用通配符:
$ ls *.txt (字母与*之间有空格),如图:
在建立文件的时候,若是须要一次性建立多个文件,好比:“love_1_linux.txt,love_2_linux.txt,... love_10_linux.txt”。在 Linux 中十分方便:
$ touch love_{1..10}_linux.txt
如:
Shell 经常使用通配符:
字符 含义
* 匹配 0 或多个字符
? 匹配任意一个字符
[list] 匹配 list 中的任意单一字符
[!list] 匹配 除list 中的任意单一字符之外的字符
[c1-c2] 匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z]
{string1,string2,...} 匹配 sring1 或 string2 (或更多)其一字符串
{c2..c2} 匹配 c1-c2 中所有字符 如{1..10}
4).学会在命令行中获取帮助
在 Linux 环境中,若是你遇到困难,可使用man 命令,它是Manual page的缩写。
Manual pages 是在 UNIX 或类 UNIX 操做系统在线软件文档的一种广泛的形式。 内容包括计算机程序(包括库和系统调用),正式的标准和惯例,甚至是抽象的概念。用户能够经过执行 man 命令调用手册页。
你可使用以下方式来得到某个命令的说明和使用方式的详细介绍:
$ man <command_name>
好比你想查看 man 命令自己的使用方式,你能够输入:
man man
一般状况下,man 手册里面的内容都是英文的,这就要求你有必定的英文基础。man 手册的内容不少,涉及了 Linux 使用过程当中的方方面面,为了便于查找,是作了分册(分区段)处理的,在Research UNIX、BSD、OS X 和 Linux 中,手册一般被分为8个区段,安排以下:
区段 说明
1 通常命令
2 系统调用
3 库函数,涵盖了C标准函数库
4 特殊文件(一般是/dev中的设备)和驱动程序
5 文件格式和约定
6 游戏和屏保
7 杂项
8 系统管理命令和守护进程
要查看相应区段的内容,就在 man 后面加上相应区段的数字便可,如:
$ man 3 printf
全部的手册页遵循一个常见的布局,其为经过简单的 ASCII 文本展现而优化,而这种状况下可能没有任何形式的高亮或字体控制。通常包括如下部份内容:
NAME(名称)
该命令或函数的名称,接着是一行简介。
SYNOPSIS(概要)
对于命令,正式的描述它如何运行,以及须要什么样的命令行参数。对于函数,介绍函数所需的参数,以及哪一个头文件包含该函数的定义。
DESCRIPTION(说明)
命令或函数功能的文本描述。
EXAMPLES(示例)
经常使用的一些示例。
SEE ALSO(参见)
相关命令或函数的列表。
也可能存在其余部份内容,但这些部分没有获得跨手册页的标准化。常见的例子包括:OPTIONS(选项),EXIT STATUS(退出状态),ENVIRONMENT(环境),BUGS(程序漏洞),FILES(文件),AUTHOR(做者),REPORTING BUGS(已知漏洞),HISTORY(历史)和COPYRIGHT(版权)。
一般 man 手册中的内容不少,你可能不太容易找到你想要的结果,不过幸运的是你能够在 man 中使用搜索,/<你要搜索的关键字>,查找到后你可使用n键切换到下一个关键字所在处,shift+n为上一个关键字所在处。使用Space(空格键)翻页,Enter(回车键)向下滚动一行,或者使用j,k(vim编辑器的移动键)进行向前向后滚动一行。按下h键为显示使用帮助(由于man使用less做为阅读器,实为less工具的帮助),按下q退出。
想要得到更详细的帮助,你还可使用info命令,不过一般使用man就足够了。若是你知道某个命令的做用,只是想快速查看一些它的某个具体参数的做用,那么你可使用--help参数,大部分命令都会带有这个参数,如:
$ ls --help
*****介绍一个能够输出图形字符的命令banner:
你能够先使用以下命令安装:
$ sudo apt-get update;sudo apt-get install sysvbanner
而后:
$ banner shiyanlou
或者你以为这字体很差看,那么你还可使用默认已经安装的一个命令printerbanner:
$ printerbanner -w 50 A
'-w'参数指定打印宽度,由于咱们的环境在屏幕中显示比较小,必需要加上宽度限制。
还有两个相似的命令toilet,figlet,做为做业安装试用。
***********************遇到的问题及解决***********************
一、有些命令试验不明显,没法自主操做。
先行记录在笔记中,往后练习时就能运用。
二、对于ls *.txt命令中空格没有太在乎,致使操做输不出结果。通过反复试验观察才发现其中有个空格。