因工作学习 需求,在虚拟机软件VirtualBox安装了Ubuntu 20.04系统,本章节中主要介绍一些环境的安装以及Liunx中常用的一些命令。
1、软件和系统的安装
1.1 VirtualBox
VirtualBox是一款开源虚拟机软件,在软件中可以虚拟各种操作系统,下载相应版本的操作系统iso镜像文件,便可以在VirtualBox中安装并运行该操作系统。
官方下载网站:https://www.virtualbox.org/
百度云链接:https://pan.baidu.com/s/1rY0NYMwI_zukFJ9rKaauvQ 提取码: s3h4
按照步骤依次执行便可以安装成功。
1.2 Ubuntu 20.04
Ubuntu是一款以桌面应用为主的Liunx操作系统,是基于Debian的分支。
官方下载网站:https://cn.ubuntu.com/download
百度云链接:https://pan.baidu.com/s/1H0FcsJs0UYQ-PohlN7GiGA 提取码: 8klp
2、Liunx常用命令
2.1 基本指令
2.1.1 软件包相关
查找软件包sudo apt-cache search xxx
安装软件包sudo apt install xxx
安装.deb软件包chmod +x xxx.deb
sudo dpkg -i xxx.deb
查看已安装的程序dpkg --list
卸载程序,同时删除相关配置sudo apt-get --purge remove xxx
只卸载程序sudo apt-get remove xxx
sudo apt-get autoremove xxx
查找头文件所在的包(需要安装apt-file)sudo apt-file search xxx.h
2.1.2 系统相关
获取root权限sudo su
退出root权限exit or "Ctrl+D"
进程监控(随时间动态变化显示)top -c
进程一次性查看ps aux
读入指定的shell程序文件并依次执行文件中的所有语句source filename
或. filename
设置或显示环境变量
export [-fnp] [变量名]=[变量赋值]
-f #[变量名]为函数名称
-n #删除指定变量,不会输出到后续指令的执行环境中
-p #显示所有shell赋予程序的环境变量
2.1.3 文件相关
文件定位locate xxx
文件夹创建mkdir dir_name
文件创建touch filename
文件/文件夹复制
cp filename target_dir #复制文件filename至文件夹target_dir下
cp -r source_dir target_dir #复制文件夹source_dir及其所有内容至target_dir
文件/文件夹删除
rm filename
rm -r source_dir
mv source_dir target_dir #移动文件夹source_dir至target_dir
文件系统的浏览
cd path #进入到指定的路径下
ls #列出当前目录下的文件信息
ll #查看当前目录下的文件及详细信息
文件的压缩和解压
tar --exclude=file/xxx -zcvf file.tar file #对文件夹file进行压缩时排除文件xxx ,压缩后的文件命名为file.tar
tar -zxvf file.tar #对压缩文件进行解压
zip -q -r file.zip /hom/abc #将文件夹abc压缩为文件file.zip
unzip file.zip #对压缩文件进行解压
文件数据同步
rsync -r fileDir1 fileDir2 #复制文件夹fileDir1 及其所有内容至文件夹fileDir2中
rsync -a fileDir1 fileDir2 #复制文件夹fileDir1 至文件夹fileDir2中,并同步元信息(更为常用)
rsync -anv fileDir1 fileDir2 #模拟-a指令的执行结果(未执行),-n模拟结果,-v输出文件结构
rsync -av --delete fileDir1 fileDir2 #完全同步fileDir1 至fileDir2中,fileDir2中的多余文件被删除
rsync -av --exclude={‘filename’, ‘dir1/’} fileDir1 fileDir2 #排除指定文件后同步
rsync -av --include=”*.txt” --exclude=”*” fileDir1 fileDir2 #只将fileDir1 下的所有”.txt”文件同步至下fileDir2
rsync -av src/ username@ip:dest #远程同步,使用ssh协议
rsync -av username@ip:src/ des #远程同步,将远程内容同步到本地
scp file username@ip:/path/ #将本地文件file拷贝至远程设备的path路径下
scp -r dir username@ip:/path/ #将本地文件夹dir拷贝至远程设备的path路径下
scp username@ip:/path1/file /path2 #将远程设备的文件夹path1目录下的文件file拷贝至本地目录path2下
scp -r username@ip:/path1 /path2 #将远程设备的文件夹path1拷贝至本地目录path2下
ssh username@ip #username为客户端用户名,ip为服务器地址,默认端口是22
exit 或 ‘Ctrl+D’ #退出远程登录
2.2 文本编辑器的使用
2.2.1 vim
- 安装vim
sudo apt install vim
- 创建或打开指定文件
vim filename
- vim的普通模式,打开一个文件后即为普通模式,普通模式中可输入以下命令调节光标位置
命令 | 作用 | 命令 | 作用 |
h | 光标左移一个字符 | G | 光标移至缓冲区最后一行 |
l | 光标右移一个字符 | num G | 光标移至缓冲区第num行 |
j | 光标下移一行 | gg | 光标移至缓冲区第一行 |
k | 光标上移一行 |
- 普通模式下输入以下命令对文件进行保存、查找和替换等操作
命令 | 作用 | 命令 | 作用 |
:q | 退出 | : s/old/new | 用new替换文本中第一次出现的old |
:q! | 强制退出,不保存修改 | : s/old/new/g | 用new替换文本中第一行所有的old |
:wq | 保存修改并退出 | :n,ms/old/new/g | 用new替换n行到m行之间所有的old |
:w filename1 | 当前文件另存为filename1 | :%s/old/new/g | 用new替换文件中所有的old |
/test | 查找test在文件中出现的位置,使用 | :%s/old/new/gc | 用new替换文件中所有的old,每次替换前进行提示 |
- 普通模式下对缓冲区的数据进行编辑
命令 | 作用 | 命令 | 作用 |
x | 删除光标所在位置的字符 | dd | 删除光标所在行 |
dw | 删除光标所在位置的单词 | d$ | 删除光标位置至行尾的内容 |
J | 删除光标所在行行尾换行符 | u | 撤销上一次的操作 |
a | 光标后追加数据 | A | 光标所在行尾追加数据 |
r+char | 用char替换当前光标位置的单个字符 | R+text | 用text覆盖当前光标位置的数据,直到按下 |
- 复制和粘贴
在普通模式下,输入v
进入可视模式然后移动光标选择需要复制的内容,输入y
进行复制;然后移动光标只需要的位置,输入p
完成粘贴操作 - 普通模式下输入
i
进入插入模式后即可直接对缓冲区数据进行编辑,输入ESC
返回到普通模式 - 使用vim时,也可对.vimrc文件进行配置
- 更多的vim的命令操作以及使用教程,可以参考 https://vimjc.com/
2.2.2 nano
nano filename #打开或创建文件
nano -w filename #在文件内编辑时禁止自动换行
nano -m filename #在文件内编辑时开启鼠标支持
启动nano编辑器后,下方会有常用的命令提示,输入ctrl
加上相应的命令便可进行操作
2.2.3 gedit
gedit filename #打开或创建文件
类似于windows环境下的记事本,打开后右下方可选择文件保存的类型
2.3 程序自启动服务配置
2.3.1 通过etc/rc.local的方式
- 修改rc-local.service脚本内容
sudo gedit /lib/systemd/system/rc-local.service
在脚本末尾添加上 [Install] 字段
[Unit]
Description=/etc/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.local
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no
[Install]
WantedBy=multi-user.target
Alias=rc-local.service
- 将启动脚本写入rc.local文件中
sudo gedit /etc/rc.local
可以写入以下测试脚本,执行的命令需要写在exit 0
之前
#!/bin/sh
echo "测试脚本自启动服务!" > /usr/local/test.log
exit 0
- 对rc.local文件添加执行权限,并创建链接
sudo chmod +x /etc/rc.local
ln -s /lib/systemd/system/rc-local.service /etc/systemd/system/ #在文件路径/etc/systemd/system下创建/lib/systemd/system/rc-local.service的同步链接
- 重启ubuntu,查看log文件判断自启动是否成功
reboot
cat /usr/local/test.log #如果启动成功会看到步骤2中echo的文本内容
2.3.2 通过编写shell脚本的方式
将编写好的脚本 (.sh) 文件移动至 /etc/profile.d/
文件夹下,系统启动后就会自动执行该目录下的所有shell脚本。
3、Ubuntu 20.04安装相关开发工具
整理和总结开发过程中各种库和软件的安装,不定时更新…
3.1 工具安装
- GNU编辑器集合(gcc, g++, make)
sudo apt-get install build-essential
# 验证
g++ --version
gcc --version
make --version
- CMake
sudo apt-get install cmake
3.2 库安装
- eigen库
# 命令安装
sudo apt-get install libeigen3-dev
# 编译源码安装,下载源码后进入目录
mkdir build && cd build
cmake ..
sudo make install
# 验证,查看安装路径
ls /usr/include/eigen3/
- osqp、osqp-eigen库
# clone OSQP库
git clone --recursive https://github.com/oxfordcontrol/osqp
cd osqp
mkdir build && cd build
cmake .. -DBUILE_SHARED_LIBS=ON
make -j6
sudo make install
# 验证,查看安装路径
ls /usr/local/include/
# clone OSQP-Eigen
git clone https://github.com/robotology/osqp-eigen.git
cd osqp-eigen
mkdir build && cd build
cmake ..
make
sudo make install
# 验证,查看安装路径
ls /usr/local/include/