Bash Shell 脚本编程实践

Shell 既是一套命令行工具(交互式地解释和执行用户输入的命令)也是一种脚本设计语言(定义有变量与参数,并提供了控制、循环、分支结构)。Bash Shell 是由 GUN 官方项目提供的 Shell 解释器,名称源自于 Bourne Again SHell 的英文缩写,整合了传统 Korn Shell 以及 C Shell 的有效特性,并且尽量遵循IEEE POSIX P1003.2/ISO 9945.2规范,同时在编程与交互使用方面提供了大量的功能改进,因而在提供丰富功能的基础之上,展现出了良好的兼容特性,大多数.sh脚本可以无需移植修改即可交由 Bash Shell 来执行。

当用户登入任意一款 Linux 操作系统时,初始化程序init都将会为用户启动一个Bash Shell命令解析器,其即可以用于解析命令行输入并与内核进行交互,也可以作为高效的脚本编程语言,运用其提供的变量、参数、循环、分支等编程语法特性,完成一些批量的自动化的任务处理工作,本文将会围绕 Bash Shell 的脚本编程特性,加以进行详细的分析、说明与示例。

阅读更多

从 GNU Make 到 CMake 快速入门

GNU Make用于控制如何从程序的源代码文件编译并链接为可执行文件,通过make命令从名称为makefile的文件中获取构建信息,该文件定义了一系列规则来指定源文件的编译先后顺序、是否需要重新编译、甚至于进行更为复杂的操作。通过makefile文件可以方便的实现工程的自动化编译,只需要执行make命令即可完成编译动作,从而极大的提高了开发人员的工作效率。

CMake 3.17是一款源代码构建管理工具,最初作为各种 Makefile 方言的生成器,后来逐步发展为现代化的构建系统,广泛用于 C 和 C++ 工程源代码的构建。官方提供的《CMake Tutorial》 为开发人员提供了一个循序渐进的指南,涵盖了 CMake 构建过程中常见问题的解决方案。如果需要构建从第三方发布的源代码包,则可以参考《User Interaction Guide》。而《Using Dependencies Guide》则主要针对需要使用第三方库的开发人员。

阅读更多

嵌入式 Linux C 原生应用程序开发

嵌入式 Linux 是将日益流行的 Linux 操作系统进行裁剪与修改,使之能在嵌入式硬件上运行的一种操作系统,拥有许多开源的参考与移植,也出现了 RTLinux 等实时性更强的发行版本。嵌入式 Linux 应用开发过程当中,会大量运用到 C 语言去开发原生的 Linux 应用程序,从而获得较小的存储空间占用,以及更高的执行效率,并且能够兼顾较好的代码维护效率。

本文首先会介绍文件 IO进程与进程间通信多线程网络编程等 Linux 原生应用程序开发的内容,然后分门别类的对串口GPIOSPII2C 等常用的协议开发进行了介绍。阅读本文前需要具备 C 编程语言基础,并且理解 GNU 编译器、链接器、调试器的相关概念。

阅读更多

基于 Linux 的 GCC 与 GDB 应用程序调试

GNU 的正确发音为[g'noo],名称由英文句子GNU's Not Unix递归缩写组成,是一项由自由软件基金会推动的操作系统计划。GNU 计划最早开始于 1984 年 1 月,目标是完成一个由Hurd内核与一系列应用程序、系统库、开发工具组成的GNU 操作系统。但由于 Hurd 的开发工作迟迟未能完成,因而普遍选择采用 Linux Kernel 作为操作系统的内核,这一套技术组合正是闻名遐迩的 GNU/Linux 操作系统。

GCCGDB 组成的编译套件正是 GNU 计划下诞生的优秀开源项目,也是 GNU/Linux 技术体系不可或缺的构成要素。虽然当前 ClangLLVM 编译套件的发展风头正劲,但是由于嵌入式 Linux 设备通常只提供基于 GCC 的交叉编译工具链,加之两者在使用上差异不大,而 GDB 又同时提供了两者编译后程序的完整 Debug 支持,因而笔者依然选择 GCCGDB 组合来作为本文的撰写的目标。

阅读更多

Linux 常用命令行速查手册

Linux Mint 最早于 2006 年开始发行,是一款基于 DebianUbuntu 的 Linux 发行版,提供了更为友好稳定的桌面环境,在进行快捷键、开源字体等方面的设置,并安装了诸多的工具软件之后,笔者将其作为日常工作环境已有近 5 年的历史,伴随近几年开源团队不断的改进与升级,其兼容性与用户体验渐入佳境。从程序编写到 PCB 电路绘制,日常工作已经愈加依赖这款 Linux 操作系统。

基于 2019 年圣诞节发布的 Linux mint 19.3 发行版,采用的 Shell 命令解释器版本为 Bash Shell 5.0.3,文章总结了笔者日常所经常使用到的 Linux 命令,在简明扼要的介绍相关命令与参数之后,还展示了各条命令的实际执行结果,便于读者更加直观的了解其功能与用途。限于文章篇幅以及命令行的使用频率,有关 Bash Shell 脚本编程部分的内容,将会新开一篇文章再行介绍。

阅读更多

Vim 常用键位生存指南

Vim 是从 UNIX 下的 Vi 发展出来的一个文本编辑器,近几年,伴随 VSCodeAtomSublime 等一众轻量级编辑器的快速发展,涌现了大量基于这些编辑器平台的 Vim 快捷键插件,甚至 Chrome 和 Firefox 上都已经分别提供 VimiumVimFx 等优秀插件。虽然 Vim 本身因为其繁琐的配置,日常开发中已经较少直接使用,但是其快捷键操作习惯得以保留,因此 Vim 逐渐从一套自由软件发展为可以在诸多平台上使用的快捷键套装。

本文总结了笔者运用 Vim 作为日常开发工具的过程当中,经常使用到的一些快捷键和命令,并简单的按照操作进行了一个分类,帮助Vim Junior在纷繁的快捷键位里快速适应并生存下来,逐步成为一名熟练的Vim Addict。文章部分命令和键位的解释参考了《简明 VIM 练级攻略》一文,快捷键位示例图则取自《Graphical vi-vim Cheat Sheet and Tutorial》,除此之外还参考了《Vim 用户手册》

阅读更多