上一讲,我们成功烧写了Ubuntu系统、搭建了旭日X3派的环境,熟悉了基本了VNC、SSH远程登陆等操作,并且安装了Opencv库。
这一讲,我们主要学习利用Shell语言来操作Ubuntu系统,并简单学习了ROS操作系统的一些基本指令和操作。在此基础上,我们下载了VSCode来运行我们的工程代码,同时发现了下载Pybluez资源包时的一些问题。
一、Linux操作系统指令学习
1、Sudo dpkg -i + 文件路径
Sudo:表示提升至管理员权限
Dpkg:表示安装在ubuntu系统里面的一个deb文件的
2、ROS2的工作空间结构
3、新建文件(夹)与删除
Mkdir -p ~/dev_ws/src
在主文件夹下面创建一个dev_ws/src这样的文件夹
Touch read.txt
touch新建一个新的文件
rm -R text
rm -R递归删除文件夹
4、添加环境变量:
每次启动前要在终端输入下面这一句话:
Source install/local_setup.sh
表示增加环境变量
Source+路径表示增加环境变量
如果在.bashrc文件中添加环境变量,则上电之后就会加入环境变量
5、传输文件:
scp [可选参数] file_source file_target
(1)将本地文件复制到目标服务器
scp /home/bill/jay.mp3 root@10.214.127.53:/home/jack/
/home/bill/jay.mp3:本地要传输的文件\文件夹
root:要传输到机器的用户名
(2)将服务器文件复制到本地电脑
scp root@10.214.127.53:/home/jack/jay.mp3 /home/bill/
在MobaXterm上,Ubuntu系统表示本地文件,个人端PC电脑表示目标服务器。
6、连接wifi:sudo nmcli wifi connect + wifi名字 password + wifi密码
7、更新源:sudo apt-get update ,当更新完新的源(镜像源)之后再用这句话
更新软件:sudo apt-get upgrade
修复损坏的软件包,尝试卸载出错的包,重新安装正确版本的:sudo apt-get -f install
8、自动安装缺少依赖:sudo apt install -f
9、输入Pwd 查看当前目录的路径
10、架构问题:
- ARM架构和X86架构
- ARM架构下分为arm32和arm64
- X86架构下分为x64(64位)和
二、Shell语言学习
计算机只能认识(识别)机器语言(0和1),如(11000000 这种)。但是,我们的程序猿们不能直接去写01这样的代码,所以,要想将程序猿所开发的代码在计算机上运行,就必须找"人"(工具)来翻译成机器语言,这个"人"(工具)就是我们常常所说的 编译器或者解释器。
1. 编程语言分类
编译型语言:
程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++
解释型语言:
程序不需要编译,程序在运行时由解释器翻译成机器语言,每执行一次都要翻译一次。因此效率比较低。比如Python/JavaScript/ Perl /ruby/Shell等都是解释型语言。
2.shell简介
shell的种类
[root@wolf ~]# cat /etc/shells
/bin/sh #是bash的一个快捷方式
/bin/bash #bash是大多数Linux默认的shell,包含的功能几乎可以涵盖shell所有的功能
/sbin/nologin #表示非交互,不能登录操作系统
/bin/dash #小巧,高效,功能相比少一些
/bin/csh #具有C语言风格的一种shell,具有许多特性,但也有一些缺陷
/bin/tcsh #是csh的增强版,完全兼容csh
3. shell脚本
(一) 什么是shell脚本?
简单来说就是将需要执行的命令保存到文本中,按照顺序执行。它是解释型的,意味着不需要编译。
若干命令 + 脚本的基本格式 + 脚本特定语法 + 思想= shell脚本
(二) 什么时候用到脚本?
重复化、复杂化的工作,通过把工作的命令写成脚本,以后仅仅需要执行脚本就能完成这些工作。
(三)shell脚本能干啥?
①自动化软件部署 LAMP/LNMP/Tomcat…
②自动化管理 系统初始化脚本、批量更改主机密码、推送公钥
③自动化分析处理 统计网站访问量
④自动化备份 数据库备份、日志转储…
⑤自动化监控脚本
(四)shell脚本的基本写法
1)脚本第一行,魔法字符#!指定解释器【必写】
#!/bin/bash 表示以下内容使用bash解释器解析
注意: 如果直接将解释器路径写死在脚本里,可能在某些系统就会存在找不到解释器的兼容性问题,所以可以使用: #!/bin/env 解释器
2)脚本第二部分,注释(#号)说明,对脚本的基本信息进行描述【可选】
#!/bin/env bash
# 以下内容是对脚本的基本信息的描述
# Name: 名字
# Desc:描述describe
# Path:存放路径
# Usage:用法
# Update:更新时间
#下面就是脚本的具体内容
commands
...
3)脚本第三部分,脚本要实现的具体代码内容
(五)shell脚本的执行方法
标准脚本执行方法(建议)
1) 编写人生第一个shell脚本
[root@wolf shell01]# cat first_shell.sh
#!/bin/env bash
# 以下内容是对脚本的基本信息的描述
# Name: first_shell.sh
# Desc: num1
# Path: /shell01/first_shell.sh
# Usage:/shell01/first_shell.sh
# Update:2019-05-05
echo "hello world"
echo "hello world"
echo "hello world"
2) 脚本增加可执行权限
[root@wolf shell01]# chmod +x first_shell.sh
3) 标准方式执行脚本
[root@wolf shell01]# pwd
/shell01
[root@wolf shell01]# /shell01/first_shell.sh
或者
[root@wolf shell01]# ./first_shell.sh
注意:标准执行方式脚本必须要有可执行权限
该部分参考链接:
1、https://blog.csdn.net/wolfGuiDao/article/details/105694828
2、https://xiejun.blog.csdn.net/article/details/52693464
三、ubuntu18.04修改IP为静态IP并能够上网(傻瓜式教学)
目的:自建局域网解决Wifi变更下,X3派IP地址不变的问题。
前提:X3派和PC设置同一个静态IP地址。
连接我的手机的局域网,IP地址是192.168.148.28
VNCserver启动
https://blog.csdn.net/booklijian/article/details/107734980
四、python相关库(Pybluez)安装遇到的问题
安装pybluez的问题:
前提:使用Ubuntu的清华镜像源无法安装pybluez。
更改使用原厂源。使用的Ubuntu原厂的源,Ubuntu安装pybluez的时候报错
尝试的方法包括但不限于:
1、sudo update
2、将依赖包放在同一个文件夹下面,全部解压。
问题:现在依赖中缺乏依赖
相关问题以及尝试如下图:
(1)使用阿里镜像源,利用sudo apt-get install libbluetoothdev后,显示报错
(2)更换Ubuntu原厂源后,使用sudo apt-get install libbluetoothdev显示无法locate package
(3)按照网上搜索的帖子,我们单独下载了libbluetooth的三个包,并且放在同一个文件夹下面解压。显示缺少依赖
对于蓝牙库的建立依然需要工程师的帮助,如若不能完全安装将会影响到之后的上下机位整机调控。需要x3工程师尽快帮助我们解决。
评论(0)
您还未登录,请登录后发表或查看评论