iTOP-4412全能版采用四核Cortex-A9,主频为1.4GHz-1.6GHz,配备S5M8767 电源管理,集成USB HUB,选用高品质板对板连接器稳定可靠,大厂生产,做工精良。接口一应俱全,开发更简单,搭载全网通4G、支持WIFI、蓝牙、陀螺仪、CAN总线、RS485总线、500万摄像头等模块,稳定运行Android 4.0.3/Android 4.4操作,系统通用Linux-3.0.15+Qt操作系统(QT支持5.7版本),Ubuntu版本:12.04,接口智能分配 方便好用。
第五章 Linux常用命令
5.1 Ubuntu基本操作
本小节介绍一下 Ubuntu 的基本知识,让您熟悉一下 Ubuntu 的操作界面,特别是学会使用 Ubuntu 的命令行。在 Ubuntu 下操作,尽可能的去使用命令行,虽然刚开始会觉得很别扭,而且 Ubuntu 自带了界面,用鼠标也可以完成部分操作,但是这里还是强烈建议新手直接使用 Ubuntu 命令行,我们进行嵌入式开发很多情况下都要使用命令的方式来工作。
装好虚拟机以及 Ubuntu 之后,进入下图所示的界面。
2)单击上图红色框中的"Power on this vitual machine",开启虚拟机,进入Ubuntu。如下图,进入"iTop-4412"登录界面,这个用户名"iTop-4412"是前面安装Ubuntu 时输入用户密码的。在"Passwd"中输入密码"topeet",密码也是安装 Ubuntu 的时候设置的。输入密码,回车。
需要注意的是,这里还有一个来宾用户,不要使用来宾用户,直接使用如下图所示的"iTOP-4412"用户,这是一个 admin 用户。
3)如下图,进入 Ubuntu 图形界面,同时按住按键"Ctrl"+"Alt"+"t"。
4)如下图,弹出 Ubuntu 命令行终端,终端里面可以输入 Linux 命令。需要注意的是,这里 Linux 命令,和 2.3.2 小节中的超级终端的"文件系统模式"中,输入的命令是类似的。
按住按键"Ctrl"+"d",就可以退出 Ubuntu 命令行终端。
5)如上图,Ubuntu 命令行终端是属于 Ubuntu 图形界面系统的终端,用户可以尝试进入原始的类似 DOS 系统的终端。按住按键"Ctrl"+"Alt"+"F1",如下图,出现类 Dos 系统的终端。
- 需要返回 Ubuntu 的图形界面,按住按键"Ctrl"+"Alt"+"F7"。类 DOS 界面的终端,一共可以打开六个,命令分别是,"Ctrl+Alt+F1","Ctrl+Alt+F2"依此类推。
5.2 Linux常用命令
本节介绍 Linux 的基本概念和命令,如果以前没有接触过 Linux 命令,可以参考群共享的文档"华为的内部 Linux 教程"来做一下基础练习。在后面开发板的使用过程中,几乎所有的操作都需要用到 Linux 命令。
用户文件夹
如下图,这个文件夹是用户文件夹,所有和程序相关的代码、压缩包等等,如果没有特殊说明,都是放到这个文件夹中。
显示命令
语法:ls [选项] [路径]
功能:显示指定工作目录下的内容
主要参数举例:
-a 显示所有文件以及目录。
-l 列出文件名称外,还将文件形态、权限、拥有者、文件大小等详细信息列出。例如:ls -l
查看当前工作路径
语法:pwd
功能:显示当前工作目录的绝对路径
主要参数:无例如:pwd
切换目录
语法:cd [路径]
功能:切换到指定路径下主要参数:无
例如:切换到/home 文件夹下,cd /home
清屏
语法:clear
功能:清楚屏幕上的所有内容,只保留当前提示符,并显示在新屏幕的第 1 行
显示和配置网络属性
语法:ifconfig [interface]
功能:查看或设置网络设备属性主要参数:
interface:网络接口的名称,如 eth0(网卡); up:激活网络设备;
down:关闭网络设备;
add:IP 地址,即设置网络设备地址; netmask add:子网掩码。
例如:ifconfig
显示网络配置,下图中红色方框中是 IP 地址,在后面会用到。
新建文件夹
语法:mkdir [文件夹名]
功能:新建一个目录
主要参数:
-p 如果给出的路径父目录不存在,则同时创建父目录
例如:mkdir iTop
删除命令
语法:rm [选项] [文件以及文件夹]
功能:删除档案及目录
主要参数:
-i 删除前逐一询问确认;
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认;
-r 将目录及以下之档案亦逐一删除
例如:rm -rf iTop
压缩和解压命令
语法:tar [选项] [文件目录列表]
功能:对文件目录进行打包备份
主要参数:
-c 建立新的归档文件
-r 向归档文件末尾追加文件
-x 从归档文件中解出文件
可以这样记忆,创建新的文件是 c,追加在原有文件上用 r,从文件中解压出用 x
-O 将文件解开到标准输出
-v 处理过程中输出相关信息
-f 对普通文件操作 ---似乎一直都要用 f,不然的话,可能会不显示
-z 调用 gzip 来压缩归档文件,与-x 联用时调用 gzip 完成解压缩
-Z 调用 compress 来压缩归档文件,与-x 联用时调用 compress 完成解压缩
例如:tar -vcf iTop.tar.gz iTop
tar -vxf iTop.tar.gz
拷贝命令
语法:cp [选项] 源文件或目录 目标文件或目录
功能:拷贝文件
主要参数:
-a 该选项保留链接、文件属性,并递归地拷贝目录,其作用等于 dpR 选项的组合。
-d 拷贝时保留链接。
-f 删除已经存在的目标文件而不提示。
-i 与 f 命令相反,在覆盖目标文件之前将给出提示要求用户确认。回答 y 时目标文件将被覆盖,是交互式拷贝。
-p 此时 cp 除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。
-r 若给出的源文件是一目录文件,此时 cp 将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。
-l 不作拷贝,只是链接文件。
例如:先新建一个文件夹 iToptest,然后拷贝cp -r iToptest iTop
帮助命令
语法:man
功能:阅读参考手册例如:man -ls
输入"Q"可以退出阅读模式 大写命令的输入方法为按键"Shift+字母"
这里需要注意一下,man 命令是很重要的,这个命令学会了,所有的其他命令都不是问题。在 man 命令中,都是英文解释,包括很多帮助和说明文档都是英文,这也是为什么会给大家强调,学习 Linux 的时候,开发软件尽量用英文的原因。
另外,Linux 基本命令就只能讲到这里了,更多的基本命令,在需要使用的时候再去利用网络去学习对应的命令。
5.3 Ubuntu中启用root用户
Ubuntu 中的 root 用户,在初装系统时,是被禁用的。
在安装过程中,提示创建的用户是被分到 admin 组的,使用 admin 组的用户,可以启用并设置 root 帐户的密码。前面提到的用户 topeet 就是属于 admin 组的用户。
如果用户使用的是"搭建好的镜像",则不需要启动 root 用户;因为在搭建好的镜像中,已经启用了 root 用户。
下面给大家介绍启用 root 账号的方法。先打开 Ubuntu 终端。
在 Ubuntu 命令行中,输入命令: sudo passwd
接着根据提示,输入当前用户的密码接着输入超级用户的密码 2 次。
然后就会提示 root 账户密码启动成功。
然后如下图,在 Ubuntu 命令行中,输入登录命令: su root
xxx xxx 表示用户设置的 root 账户密码
如下图,输入"Ctrl"+"d",可以退出 root 用户,进入 admin 用户。
每次重新打开 Ubuntu,如果想要执行最高权限的命令,都需要先登录 root 用户。例如后面的小节要讲的下载命令等都需要 root 用户。
5.4 Ubuntu更改数据源
安装软件需要使用"apt-get"命令,在使用这个命令的时候,需要 Ubuntu 系统联网。在使用这个命令的时候,系统根据文件"sources.list"来下载和安装软件,文件"sources.list"包含了数据源的地址,数据源放在世界各地的服务器中,给大家推荐使用的数据源是国内的 163 源,更新速度比较快。另外,执行 apt-get 命令,需要 root 权限。
5.4.1 查看数据源文件
数据源文件" sources.list ",这个文件中存贮了下载源的地址,用户知道有这个文件就可以了,不用深入研究。
ls /etc/apt/
5.4.2 修改数据源地址
数据源的服务器分布在世界各地,默认安装的 Ubuntu 数据源应该是美国的地址,为了后面下载更新速度更快,需要修改一下数据源地址。
1)如下图,单击红色框中的"齿轮"按钮,然后单击椭圆框中的选项"Updates Available......"。
2)系统弹出如下图界面,需要注意的是,在下图的界面中,不要轻易完全更新,更新后Ubuntu 的图形界面,一般就不能直接使用了,需要重新装显卡驱动。这里单击红色矩形框中的按钮"Setting"。
3)如下图,选上"Ubuntu Software",然后单击椭圆框中的复选框。
4)如下图,单击"Other"。
5)如下图,在红色框中选择国内的服务器
6)如下图,选择 163 服务器,单击按钮"Choose Server"。
7)如下图,输入用户密码,单击"Authenticate",数据源地址修改完毕。
5.4.3 更新数据源
修改了数据源的地址后,然后需要使用命令"apt-get update"用来更新数据源列表, 数据源会不定期的更新,用户需要及时更新,不然部分软件可能无法安装,如下图,在Ubuntu 命令行中,输入命令"apt-get update"
如下图,更新完毕。
5.5 Ubuntu安装基本软件
"apt-get install"命令是安装和更新软件的命令。如果用户自己安装的 Ubuntu 系统,那么就有几个基本软件需要安装。
如下图,安装 vim 编辑器。在 Ubuntu 命令行中,输入命令"apt-get install vim"。
如上图,在使用命令" apt-get install "安装和更新软件过程中,可能需要用户选择一下, 常见的选择包括如下图"Y/n",回车按键"Enter"等,用户在使用" apt-get install "中, 直接选择确定就可以了。如下图,更新完成。
如下图,安装 SSH 软件。在 Ubuntu 命令行中,输入命令"apt- get install ssh"。
如下图,安装完成。
安装工具"uboot-mkimage"。在 Ubuntu 命令行中,输入命令"apt-get install uboot-mkimage",
如下图,更新完成。
5.6 vim编辑器
虚拟机联网后,使用命令"apt-get install"安装。
在 root 用户下,在 Ubuntu 命令行中,输入命令"apt-get install vim"。
5.6.1 打开文件以及新建文件
Vim 打开一个不存在的文件,就可以创建文件该文件,如下图,在 Ubuntu 命令行中, 输入命令
vim test 新建一个名为 test 的文件
如下图,因为本来不存在这个文件,所以新建了一个空的文件。
如果要退出文件。首先按键盘的"shift+冒号",然后在文件的底行可以输入命令,如果在文件的最底行输入"q+!+回车",则不保存文件退出;如果保存文件则输入"wq+回车"。保存后退出, 可以看到文件夹下面有一个新建的文件"test";不保存退出,则没有"test"文件。
Vim 打开文件的命令还有:
vim +n filename 打开文件,将光标置于第 n 行首。
如下图,输入帮助命令会有 vim 命令组合的详细说明"vim --help"。
5.6.2 三种模式的切换
学习 Vim 编辑器,首先要掌握它的三种模式。这三种模式分别是:指令模式,输入模式,底行模式。Vim 编辑器有大量的命令,不同的命令只能在相对应的模式下使用。
如下图,用户新建一个文件"vim test",进入文件之后就是指令模式,注意因为这个文件是空的,所以很多操作无效。在了解后面输入模式之后,向文件里面添加了部分内容之后, 再进行指令操作
指令模式可以切换到底行模式,按键盘"shift+冒号",进入底行模式,如下图,底行模式可以输入查找命令,退出等。
然后退出底行模式,切换到指令模式,按键盘"Esc"。
切换到指令模式后,再切换到输入模式,按键盘"Insert",如下图,在文件的最下面一行出现"Insert",高亮光标出现在第一行第一列。
在输入模式中,才可以给文件添加内容,如下图,输入模式中的基本操作比较容易掌握。例如:回车代表换行,方向键代表上下翻动文本等。
如下图,在文件中,输入"iTop-4412","回车","helloworld!","回车"。
在输入模式中,按键盘"Esc",切换到命令模式,然后按键盘"shift+冒号",进入底行模式。在底行模式中,才输入退出编辑器的命令。这里需要注意的是,如果仅仅输入"q" 是无法退出的,在修改了文件之后,如果不保存退出,必须输入"q!",如果要保存退出则输入"wq"。
5.6.3 vim编辑器常用基本命令
这里给大家介绍三种模式中最基本的,最常用的几个命令。如果用户以前没有接触过 Vim 编辑器,下面给大家介绍的命令可以都敲一敲,掌握了下面几个命令,一般的操作都没有问题了。
命令行模式
四个方向按键 移动高亮显示的光标
G 光标置于文本最后一行,最后一列。大写输入为按键"Shift+g"
gg 光标置于文本第一行,第一类。
dd 删除光标所处行的所有内容。连按两次按键"d"
按键 delete 删除光标高亮显示的字符。键盘"Delete"
输入模式
四个方向按键 移动高亮显示的光标
按键 delete 删除光标高亮显示的字符。按键盘"Delete"
按键 Backspace 删除光标高亮显示字符的前一个字符。按键盘"Backspace"
底行模式
q 文档没有修改,退出不保存
q! 文档修改过,退出不保存w 保存文档
wq 保存退出
按键"/"+"字符" 查找"字符"
底行模式中,输入的命令可以通过方向按键上翻下翻命令
在这里只能做简单的入门介绍。用户只要入门了,跨过了最基本的一步,就可以自行研究和学习了。在网盘中,有关于 Vim 编辑器命令的文档"iTOP-4412 开发板视频教程及其相关\01-迅为电子开发板入门视频\视频 06_03Vim 编辑器常用基本命令\linux 下 vim 使用详解.pdf",如果用户以前没有接触过,学习了本章节的内容后,可以参照文档练习一下。
5.7 grep和find
本节介绍极其重要和强大的 find 以及 grep 命令。
这里需要注意的是,grep 和 find 命令是在用户逐渐使用的过程中学习和理解,在后面调试程序的过程中会大量用到的,非常实用。
5.7.1 find命令
Linux 下 find 命令在目录结构中搜索文件,并执行指定的操作。Linux 下 find 命令提供了相当多的查找条件,功能很强大。由于 find 具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。 在运行一个非常消耗资源的 find 命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间。后台运行只需要在命令中添加空格+&字符即可。
命令格式
find pathname -options [-print -exec -ok ...]
命令功能:
用于在文件树中查找文件,并作出相应的处理。
find 命令的参数以及选项,用户可以通过网络或者 man 命令来学习,这方面的资料非常多,man 命令如下图所示。
find 命令举例。
如下图所示,在 Ubuntu 中将内核源码解压之后,进入该目录。
假如想查找 led 的驱动,用户最好将内核先编译,因为编译之后会生成.o 文件,那么我们搜索的时候就可以将.o 作为关键字。如下图所示,使用命令"find ./ -name *led*.o",命令中的*表示缺省,可以为任意字符。这里就可以非常快的搜索出 led 的驱动文件以及所在的目录。
5.7.2 grep命令
Linux 系统中 grep 命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep 全称是 Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
grep 命令格式:
grep [options]
grep 命令的参数可以使用 man 命令或者网络来学习。
结合前面介绍的 find 命令,我们先进入 led 驱动所在的目录,然后使用 grep 命令,如下图所示。
在应用中,在系统编程中,我们会调用 ioctl 函数来控制 led 的亮灭,这里我们想搜索"ioctl"关键字。如下图所示,使用命令"grep 'ioctl' -rn *"。
如上图所示,这里搜索出来的太多,所以还需要限定范围。使用命令"grep 'ioctl' -rn *led*",这个命令表示,在当前目录下,文件名称中包含"led"的文件中搜索并打印出"ioctl"的行,如下图所示。
grep 命令还有很多其他用法,例如可以将 grep 和 find 命令结合使用,可以添加输出重定向的命令(不在控制台打印,而保存为文本格式),这里只是抛砖引玉,更多的用法需要用户去自行学习。
5.8 Linux补丁命令patch和diff介绍
linux 系统针对代码有生成补丁的命令 diff 和打补丁的命令 patch。diff 和 patch 命令, 参数非常多,但是大多数情况下,只需要学会生成补丁文件、打补丁和能够看懂补丁文件就成。
5.8.1 生成补丁
例如:有 hello1.c 和 hello2.c 两个文件,两个文件中的内容如下图所示。这里假设, hello1.c 为低版本文件,hello2.c 为高版本文件。
如上图所示,如果想生成将 hello1.c 升级为 hello2.c 的补丁文件,则使用命令"diff hello1.c hello2.c > test.patch",如下图所示,可以看到生成了"test.patch"补丁文件,一般情况补丁文件后缀名使用 patch。
diff 命令后面跟的第一个参数为低版本文件;第二个参数是高版本文件;">"符号后是要生成的补丁文件名称。
5.8.2 patch文件介绍
如果要将前一小节的 hello1.c 升级为 hello2.c,则需要将 hello1.c 文件第二行替换为"hello2",增加第三行"hello2"。
打开上一小节生成的补丁文件,如下图所示。
如上图所示,补丁文件第一行"2c2,3",c 的前面表示低版本文件要开始修改的行数;c 的后面表示要修改的行数区间。
"<"后面紧跟要删除的内容,"< hello1"结合补丁文件第一行"2c2,3",意思是,低版本文件要删除第二行"hello1"
">"后面紧跟要增加的内容,"> hello2 \ >hello2"结合补丁文件第一行"2c2,3",意思是,低版本文件要在第二行和第三行增加"hello2"和"hello2"。
当然,补丁文件还有稍微复杂点的内容,其中会有不改动文件内容的描述,但是总体说来是很简单的。用户可以自己写长一点的文件,做几次测试很快就能理解复杂一些的补丁文件。
5.8.3 patch命令介绍
打补丁命令是"patch",如下图所示,使用命令"patch -p0 hello1.c < test.patch", 可以将 hello1.c 中的内容升级为 hello2.c。"-p0 表示执行 patch 所在的路径就是制作 patch 所在的路径;接着跟要打补丁的文件;"<"符号后跟着补丁文件。
反向补丁,如下图所示,hello1.c 升级之后,想恢复成低版本,则可以使用命令"patch -Rp0 hello1.c < test.patch"。