虚拟机中安装Ubuntu 20.04,Liunx系统的常用命令以及工具安装

因工作学习 需求,在虚拟机软件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在文件中出现的位置,使用norN实现跳转至上一个或下一个匹配的对象 :%s/old/new/gc 用new替换文件中所有的old,每次替换前进行提示
  • 普通模式下对缓冲区的数据进行编辑

    命令 作用 命令 作用
    x 删除光标所在位置的字符 dd 删除光标所在行
    dw 删除光标所在位置的单词 d$ 删除光标位置至行尾的内容
    J 删除光标所在行行尾换行符 u 撤销上一次的操作
    a 光标后追加数据 A 光标所在行尾追加数据
    r+char 用char替换当前光标位置的单个字符 R+text 用text覆盖当前光标位置的数据,直到按下ESC
  • 复制和粘贴

    在普通模式下,输入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的方式
  1. 修改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
    
  2. 将启动脚本写入rc.local文件中

    sudo gedit /etc/rc.local
    

    可以写入以下测试脚本,执行的命令需要写在exit 0之前

    #!/bin/sh
    echo "测试脚本自启动服务!" > /usr/local/test.log
    exit 0
    
  3. 对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的同步链接
    
  4. 重启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 工具安装

  1. GNU编辑器集合(gcc, g++, make)

     sudo apt-get install build-essential
     # 验证
     g++ --version
     gcc --version
     make --version
    
  2. CMake

     sudo apt-get install cmake
    

3.2 库安装

  1. eigen库
    # 命令安装
    sudo apt-get install libeigen3-dev
    # 编译源码安装,下载源码后进入目录
    mkdir build && cd build
    cmake ..
    sudo make install
    # 验证,查看安装路径
    ls /usr/include/eigen3/
    
  2. 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/
    

你可能感兴趣的:(Liunx和C++编程,ubuntu,VirtualBox,Linux程序自启动服务,Liunx常用命令)