Linux 命令 tr 介绍

最近在用 gedit 打开一个 log 文件时,提示说有不能显示的字符,导致整个文件都乱码。用 file 命令去查看这个文件的类型,居然显示为二进制文件。明明是一个纯文本文件,怎么会显示为二进制文件呢?估计文件中存在奇特的字节,导致整个文件解析不正常。既然一堆沙子里混入了几颗石头,那么就要把这些石头剔除掉。有很多命令可以处理这个问题,这里我推荐 tr

tr 命令是一个很传统的 Unix 命令。本意就是 translate。也就是用来做字符替换、删除和去重的工作。其基本格式如下:

1
tr OPTION SET1 [SET2]

阅读全文

在LINUX终端和VIM下复制粘贴

在 GUI 界面下,我们可以很自由的复制粘贴。但是在字符界面下,我们不得不用鼠标选定,然后单击右健,选择复制,再到别处去 Ctrl-v。并且对于那些用没有配置过的 VIM 来说,VIM 的粘贴板和 X Window 的粘贴板还不共享。这在码字的过程中,感觉非常不流畅。下面,我们就尝试解决这个问题。

首先我们得让 VIM 和 X Window 共享一个粘贴板,这样我们就可以像在 GUI 界面下一样去复制粘贴了。我们可以在自己的 VIM 配置文件 .vimrc 里添加这么一行:

1
set clipboard=unamedplus

阅读全文

Linux 系统调用

系统调用是系统内核提供给用户态程序的一系列API,这样应用程序就可以通过系统调用来请求操作系统内核管理的资源[1]。本文尝试分析在Linux下是如何使用linux内核给我们提供的API,并分析其实现过程。

一、用户态

不管我们是打开一个文件,接收一个socket包,还是获取当前进程信息,都需要调用内核给我们提供的API。这里,我们可以通过strace这个工具,来跟踪一个程序调用的系统函数。比如下面是命令”strace whoami”的输出结果:

阅读全文

利用 QEMU 模拟嵌入式系统制作全过程

这篇文章,将介绍如何用 QEMU 来搭建一个基于 ARM 的嵌入式 Linux 系统。通过该文章,你可以学习到如何配置 Kernel,如何交叉编译 Kernel,如何配置 busybox 并编译,如何制作 initramfs,如何制作根文件系统,如何定制自己的 uboot,如何通过 uboot 向 kernel 传递参数等。开始干活!

环境搭建

在实现我们的目标之前,我们需要搭建自己的工作环境。在这里,假设你的主机上已经有 gcc 本地编译环境,并运行 Ubuntu 12.10。但是这并不影响在其他的 linux 平台上进行,只要修改一下对应的命令就可以了。

阅读全文