RIKIBOT基础-使用系列 第二章节 Linux基础学习

1、 Linux基础学习

ROS需要一定的Linux知识,一般基于Linux系统开发,上手ROS机器人操作系统需要具备基本的Linux知识。本节对Linux进行基本讲解,并讲解常用Linux操作命令。如果对Linux知识熟练的用户可跳过该章节。

1.1 Linux操作系统介绍

Linux是全球最受欢迎的开源操作系统。它是一个由C语言编写的,符合POSIX标准的类UNIX系统。POSIX是Portable Operating System Interface的缩写,表示可移植操作系统接口,它规定了操作系统应该为应用编程提供的接口标准。UNIX是一个强大的多用户、多任务分时操作系统,支持多种处理器架构,于1969年在AT&T的贝尔实验室开发。UNIX是商业操作系统,需要收费
获取Linux内核源码的网址为: http://www.kernel.org,在这里能够下载各版本的内核源码,包括测试版和最新稳定版。

1.1.1 Linux系统特点

Linux是一个开放自由的操作系统内核,具有一些鲜明的特点。
(1)开放性。遵循世界标准规范。凡遵循国际标准所开发的硬件和软件,都能彼此兼容,可方便地实现互连。
(2)多用户。Linux操作系统是一个真正的多用户操作系统;系统资源可以被不同用户各自拥有使用,即每个用户对自己的资源有特定的权限,互不影响。
(3)多任务。多任务是现代计算机的最主要的一个特点。它是指计算机同时执行多个程序,而且各个程序的运行互相独立。Linux系统调度每一个进程平等地访问处理器。
(4)良好的用户界面。Linux向用户提供了两种界面:用户界面和系统调用。Linux的传统用户界面是基于文本的命令行界面,即Shell,它既可以联机使用,又可存在文件上脱机使用。Shel有很强的程序设计能力,用户可方便地用它编制程序,从而为用户扩充系统功能提供了更高级的手段
(5)设备独立性。Linux操作系统把所有外部设备统一当作成文件来看待,只要安装它们的驱动程序,任何用户都可以像使用文件一样,操纵、使用这些设备,而不必知道它们的具体存在形式。
(6)完善的网络功能。Linux内置完整的POSIX网络协议栈,在通信和网络功能方面优于其它操作系统。 Linux为用户提供了完善的、强大的网络功能。支持Internet,网络文件传输。用户能通过一些Linux命令完成内部信息或文件的传输。远程访问功能。
(7)可靠的系统安全。Linux采取了许多安全技术措施,为网络多用户环境中的用户提供了必要的安全保障
(8)模块化。运行时可以根据系统的需要加载程序而无需重启系统。Linux的模块化极大地提高了Linux的可裁剪性和灵活性。
(9)良好的可移植性。Linux是一种可移植的操作系统,能够在从微型计算机到大型计算机的任何环境和任何平台上运行。目前已经成为支持平台最广泛的操作系统。

1.1.2 Linux系统组成

Linux内核由5个主要子系统组成,分别是:内存管理、进程管理、进程间通信、虚拟文件系统和网络,各子系统之间的关系如下图所示。
在这里插入图片描述

1.1.3 Linux发行版

由Linus主持开发的Linux仅仅是一个内核,提供硬件抽象层、磁盘及文件系统控制、多任务等功能,并不是一个完整的操作系统。一套基于Linux内核的完整操作系统叫作Linux操作系统,也称GNU/Linux,据不完全统计,目前大大小小应用于不同场合的Linux发行版已经超过400余种,桌面/服务器上常见的也就十来种,如Redhat, Mandriva, Fedora, SuSe, Debian.Ubuntu等。
Debian,是最具有Linux精神,最严谨、组织发展最整齐的Linux,以稳定性著称。遵循GNU规范, 100%免费,优秀的网络和社区资源,强大的apt-get,安装相对不易,目前发展较为缓慢, stable分支的软件极度过时。
Ubuntu,基于Debian开发,堪称最完美的Linux操作系统。每6个月发布一个新版本。人气颇高的论坛提供优秀的资源和技术支持,固定的版本更新周期。
Ubuntu kylin,是Ubuntu官方认可的衍生版,其宗旨是创建一个Ubuntu的中文变体,以更适合华人用户。为中国用户量身定制。针对中国本土化需求定制的,有大量定制软件如金山快盘、wps等。
RedHat,由Redhat公司发行,曾经是最流行的Linux发行版,一度几乎成为了Linux的代名词。由于其良好的兼容性和完善的开发工具,目前依然是不少工程师进行嵌入式Linux开发的首选平台。优点是拥有数量庞大的用户,优秀的社区技术支持。缺点是已经停止开发,新硬件支持不佳或者不能支持。

1.1.4 Linux嵌入式

嵌入式Linux是对运行在嵌入式设备上的Linux的统称。嵌入式Linux往往针对于某个特殊领域,专门为实现某些特定的功能而开发,一般说来,嵌入式Linux所运行的程序相对来说比较单一,功能定位也比较明确,如嵌入式网关、路由器等。由Linus主持开发的Linux与其它嵌入式系统产品一样,嵌入式Linux产品在物理形态上与普通Linux设备有很大差异,不同产品之间物理形态也是各不相同。与桌面Linux相比,嵌入式Linux产品往往没有硕大的显示器,或者鼠标键盘这样的外设。
嵌入式Linux产品既可以作为一个独立形态的产品出现,如手持机、交换机、路由器等无论如何,它们的共性都是运行了经过高度裁剪的、具备特定功能的嵌入Linux操作系统。下图列举了生活中一些常见的嵌入式Linux产品。
无论最终产品以何种形态出现,在开发阶段,串口和网口几乎是必不可缺的外设口。嵌入式Linux的默认终端通常是调试串口,系统输出信息通过串口输出,也通过串口接收各种命令。而网口则常用于数据传输和程序调试,特别是在内核开发阶段以及应用程序开发阶段,网络几乎也是必须的
在这里插入图片描述

1.2 Linux常用操作

本小节介绍Linux Shell及常用操作命令。

1.2.1 Linux Shell

前面已经提到过, Linux系统为用户提供了多种用户界面,包括Shell界面、系统调用和图形界面。其中Shell界面是UNIX/Linux系统的传统界面,也可以说是最重要的用户界面,无论是服务器、桌面系统还是嵌入式应用,都离不开Shell.
Shell,英文本意是外壳, Linux Shell就是Linux操作系统的外壳,为用户提供使用操作系统的接口,是Linux系统用户交互的重要接口。登录Linux系统或者打开Linux的终端,都将会启动Linux所使用的Shell。
linux Shell一个命令解释器,是Linux下最重要的交互界面,从标准输入接收用户命令,将命令进行解析并传递给内核,内核则根据命令,作出相应的动作,如果有反馈信息,则输出到标准输出上,示意过程如下图所示。嵌入式Linux的标准输入和输出都是串口终端。
在这里插入图片描述
Shell既能解释自身的内建命令,也能解释外部命令,如系统某个目录下的可执行程序。
Shell也是一种解释型的程序设计语言,并且支持绝大多数高级语言的程序元素,如变量、数组、函数以及程序控制等。Shell文件其实就是众多Linux命令的集合,也称为Shell脚本文件。

1.2.2 Linux常用命令

本节对进行嵌入式Linux开发经常会用到的一些操作和命令说明。命令是Linux最重要的人机交互界面之一,学习和掌握Linux命令是学习Linux不可逾越的阶段。在Shell下,一些命令加上一些参数,或者几个简单命令进行组合,可以完成在图形界面下需要经过复杂操作才能完成的功能。
Linux的命令通常会有很多选项和参数,但日常操作中用到的都不多,在这里也仅仅择取常用的进行介绍,更多或者完整的Linux命令请参考Linux命令手册或者其它资料。在接触具体的命令之前,先对Linux命令的特点做一个概括,也是使用Linux命令的一些注意事项。
(1)大多数命令都有各种参数和选项;
(2)大多数命令的参数可以组合使用(相斥参数除外) ;
(3) 用"命令–help"或者"man命令"可以获取相应命令的详细用法;
(4) 命令/工具不同版本所支持的参数可能会有所差异;
(5)命令区分大小写,包括参数;
(6)Shell支持TAB键命令补齐,输入命令开头字母,按TAB键能补齐命令

ls-查看当前目录的内容
打开Linux虚拟终端后,查看当前目录下的内容,几乎是所有Linux使用者的习惯。查看当前目录下有什么文件和目录,然后再进行其它操作。查看当前目录下的内容的命令式Is,简单的输入1s就可以了,参考下图。
在这里插入图片描述

ls命令应该是学习Linux的第一个命令。Is命令支持选项,加上不同选项,可以按不同条件查看或者按不同方式排序结果。下面给出一些常用选项和说明,如下表所列。
选项 说明
空 按字母顺序列出当前目录下的所有非隐藏文件(包括目录)
-a 按字母顺列出当前目录下的所有文件,包括隐藏文件
-1 列出当前目录下的所有文件,包括文件长度、拥有者、权限和时间戳等信息
-t 按文件最后修改时间列出文件
–color 以不同颜色显示目录、普通文件、可执行文件、压缩文件以及链接文件等

cd-切换工作目录
得知所处目录下的内容后,可以根据需求进行操作。如果想进入到更深的目录中去,或者进入到系统其它目录中去,又该如何操作?这就要用到cd命令。cd命令是change directory的缩写,用于改变工作目录
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
pwd-查看当前路径
掌握了前面介绍的Is和cd两条命令后,几乎可以走遍整个Linux文件系统中所允许访问的目录。但是如果将Linux的命令提示设置为只提示当前目录名而不会显示完整的路径,在Shell下如果进入的目录较深,有时候可能不清楚当前所在路径而“迷路" .pwd命令是一个导航辅助命令,功能是打印当前所在路径,告知用户当前所处位置。用法很简单,在Shell终端中输入pwd即可。
在这里插入图片描述
mkdir-创建目录
创建目录在日常研发过程中是再常用不过的了。在图形界面下,单击右键选择新建文件夹可以完成目录创建的工作。在命令行下,用mkdir命令可以更简单快速的创建一个或者多个目录,甚至多级目录。mkdir用于创建一个或者多个目录,加上选项也可以创建多级目录,这样的快捷性是图形界面无法做到的。
rmdir-删除空目录
rmdir命令只能删除空目录,也可删除多级空目录。
rm-删除命令
用rmdir命令很安全,不会误删数据,但是实际上用的不是很多,更常用的是用rm命令。rm命令既可以删除文件,也可以删除目录而不管目录是否非空。
注意:删除命令,无论是删除目录还是文件,一旦删除,都将不可恢复,并不像Windows下或者桌面下会移动到回收站暂存。特别是一般的嵌入式并不设定“回收站" ,所以在删除的时候请特别小心。为了确保不误删文件,可使用alias别名,将rm命令设置为"rm-i" ,这样每次删除都会有确认过程。用法: alias rm=" rm-i"
cat-查看文件内容
cat命令可以将一个或者多个文件输出到标准输出上,可以用于文件查看。
poweroff/reboot-关机重启命令
重启系统用reboot命令,关机用poweroff命令,两者都需要root权限。
sudo-临时过去ROOT权限
在普通用户权限下, Linux下很多命令都是不能使用的,一般在/sbin和/usr/sbin目录下的命令,执行都需要root权限。sudo命令则可以临时获取root权限,需要输入密码。
1.3 Linux文件系统
Linux文件系统对文件的管理包括两方面,一方面是文件本身,另一方面是目录管理。先从目录入手,会显得比较直观和更加容易理解一些,
Linux目录树
Linux整个文件系统以根目录(/)为最顶层目录,下面包含众多和多级其它目录,形成了一个拓扑结构,整个目录结构看起来就像一棵倒挂着的树,称之为"Linux目录树" ,如下图所示。整个Linux有且只有这样一棵树。
在这里插入图片描述
理论上, Linux目录树的目录结构是可以随意安排的,事实上很多Linux系统开发人员也这么做,但这就带来了不同开发人员之间不统一的情况存在,很容易出现混乱。后来这样的问题得到了重视,文件层次标准(FHS, Filesystem Hierarchy Standard)就在这种情况下出台的。FHS对Linux根文件系统的基本目录结构做了比较详细的规定,尽管不是强制标准,但事实上,大部分Linux那遵循这个标准。Linux目录树下各子目录的简单说明如下表所列。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Linux文件名称
Linux的文件名保存目录文件中,命名应当遵循以下规则:
区分大小写;
不能以“+“和”-"开头;
不能包含<>; 1’-$!% &*?\ () []等在Shell中有特殊含义的字符;
不能包含空格;
长度不能超过255个字符。
Linux系统中,文件名以点号(.)开始的文件是隐藏文件,用Is命令不加参数-a将看不到在这类文件。“同名"的隐藏文件与非隐藏文件是不同的,如.file与file是两个不同的文件。

1.4 Vi/vim编辑器的使用

Linux用户经常需要对系统配置文件进行文本编辑,所以至少掌握一种文本编辑器,首选编辑器是vi/vim,几乎任何一个发行版都有vi或者vim编辑器,在嵌入式Linux通常也会集成vi编辑器。
Vi编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下,支持众多的命令,是一款功能强大,效率很高的文本编辑器。Vi编辑器可以对文本进行编辑、删除、查找和替换、文本块操作等,全部操作都是在命令模式下进行的。Vi有两种工作模式:命令模式和输入模式。嵌入式Linux系统中集成的vi编辑器通常是由Busybox构建的,只支持了部分Vi命令,很多完整版Vi中的命令在嵌入式中将不可用
Vim是Vi的加强版,比Vi更容易使用。vi的命令几乎全部都可以在vim上使用,安装了Vim的系统,在命令行输入vi,实际启动的是Vim编辑器。下面的介绍不对Vi和Vim加以区分。
Vi的工作模式可分为命令模式和输入模式,两者之间可以任意切换。
命令模式:从键盘上输入的任何字符都被作为编辑命令来解释, vi下很多操作如配置编辑器、文本查找和替换、选择文本等都是在命令模式下进行的。
输入模式:从键盘上输入的所有字符都被插入到正在编辑的缓冲区中,被当作正文。
启动Vi后处于命令模式,在命令模式下,输入编辑命令,将进入输入模式;在输入模式下,按ESC键将进入命令模式, Vi的关系转换如下图所示。这里指的编辑命令是指:插入(i或者1)、附加(a或者A)以及打开(0或者0)命令。
在这里插入图片描述
启动vi
在Linux Shell终端,输入vi或者"vi文件名"即可启动Vi编辑器,默认进入命令模式。刚启动的Vi界面如下图所示。在这里插入图片描述
退出Vi
在命令模式下输入如下表所示的命令都可以退出Vi编辑器,回到Shell界面。
命令 说明
:q 退出未被编辑过的文件
:q! 强行退出vi,丢弃所做改动
:x 存盘退出vi
:wq 存盘退出vi
ZZ 等同于:wq
光标移动
Vi编辑器的整个文本编辑都用键盘而非鼠标来完成,传统的光标移动方式是在命令模式下输入h.j.k.1完成光标的移动,后来也支持键盘的方向键以及Page Up和Page Down翻页键了,并且这些键可在命令模式和输入模式下使用。光标移动示意图如下图所示。
在这里插入图片描述
总结一下,在命令模式下光标移动的方法:
上: k、Ctrl+P
下: j、Ctrl+N
左: h、 Backspace
右: l、 Space
无论在输入模式下还是命令模式下,都支持Page Up和Page Down翻页。另外, vi支持命令快速光标定位,常用命令如下表所列。
在这里插入图片描述
用户关于vi的使用,会使用vi打开文件,会模式切换,会光标移动,会i插入文字,会保存退出,基本可以满足ROS机器人操作要求。

最后 Rikirobot提供两驱动、四驱动、麦克纳姆轮、Omni全向三轮、Omni全向四轮、履带、阿克曼(舵机转向)、大型负载的各种ROS车,有配套指导、及完善售后。

2、交流方式

QQ交流群:130486387
RIKIBOT店铺连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值