Ubuntu桌面基础介绍 17.10.26
1. 目录结构和文件系统
ubuntu的文件系统也是一个又层次的树形结构,文件系统的最上层是 / ,表示根目录,所有其他文件和目录都位于根目录下,在linux中,一切皆为文件,包括硬盘、分区和拔插介质。跟目录下的常见目录列表:
- /bin - 重要的二进制 (binary) 应用程序,如cd,ls等; /bin/bash
- /boot - 启动 (boot) 时用到的核心配置文件;
- /dev - 设备 (device) 文件;
- /etc - 存放系统管理所需的配置文件、启动脚本等 (etc)
- /home - 本地用户主 (home) 目录。主文件夹在home里,一般从home中创建文件夹。
- /lib - 系统库 (libraries) 文件,存放最基本的动态链接共享库,几乎所有应用程序都要用到该目录下的文件;
- /lost+found - 在根 (/) 目录下提供一个遗失+查找(lost+found) 系统,该目录平时是空的,当系统遇到非正 常关机,会做一些文件的备份工作;
- /media - 挂载可移动介质 (media),诸如 CD、数码相机等
- /mnt - 挂载 (mounted) 文件系统
- /opt - 提供一个供可选的 (optional) 应用程序安装目录
- /proc - 特殊的动态目录,用以维护系统信息和状态,包括当前运行中进程 (processes) 信息。
- /root - root (root) 用户主文件夹,读作“slash-root”
- /sbin - 重要的系统二进制 (system binaries) 文件
- /sys - 系统 (system) 文件
- /tmp - 临时(temporary)文件
- /usr - 包含绝大部分所有用户(users)都能访问的应用程序和文件
- /var - 经常变化的(variable)文件,诸如日志或数据库等
- 2. 常用命令及快捷键
- ls: (list)查看当前路径下的文件目录,结果以不同颜色,经过排列的文本列出目录下所有文件;
- ll: 列出当前路径的文件目录,包含文件的所有信息(时间,是否可读等)
- mkdir +文件名称: (Make Directory)在当前目录下创建文件;
- cd +目录: (Change Directory)切换目录,从当前目录切换成cd后跟的目录;
- cp +源文件+目标文件目录: (Copy)拷贝源文件到指定目标文件目录;
- cat + 文件名:显示文件内容
- rm +文件名称: (Remove)删除指定的文件;
- mv +源文件+目标文件目录: (Move)移动指定的文件或目录到指定的目录下,相当于执行剪切操作;
- locate+文件或目录名称: 查找文件或目录;可以使用通配符来匹配一个或多个文件,用“*”匹配所有文件,用“?”匹配单个字符;
- pwd: (print working directory)显示当前所在目录;
- 常用cd命令:
cd / 进入根目录
cd 或 cd ~ 进入用户的home目录
cd .. 进入上一级目录
cd ../book 进入同一主文件夹的另一文件夹
“.”是指当前目录。 “/”是目录层分隔表示符
“./”也是当前目录,但./后一个程序名,则会运行程序
- 使用 cd 命令可以切换目录,
在 Linux 里面使用 :cd + . 表示当前目录,.. 表示上一级目录, - 表示上一次所在目录,~通常表示当前用户的"home"目录。使用 pwd 命令可以获取当前所在路径(绝对路径)。
(以 . 开头的文件都是隐藏文件,所以这两个目录必然也是隐藏的,你可以使用ls -a 命令查看隐藏文件)
- man +指令: (Manual)显示某个命令的说明信息;
manual的缩写,操作说明、手册、指南 如:man ls
- ifconfig: 显示系统的网络;
- Ctrl+Alt+F1~F6: 从桌面模式切换到控制台模式,一共可以启动6个控制台同时工作,对用F1~F6;
- Ctrl+Alt+F7: 从控制台切换回桌面模式;
3. 文本编辑器gedit
- ubuntu中所有的配置和设定都保存在文本文件中,默认的文本编辑工具是gedit,在文件前加上 gedit,表示使用gedit文本编辑器启动其后的文本。例如命令 sudo gedit ~/.bashrc表示使用gedit编辑工具编辑home目录下的.bashrc文件。
打开文件: gedit + 文件名
4. 软件包管理程序APT
- ubuntu本身提供了很多应用程序软件可供下载安装,这些软件包可以通过APT实现在Internet上搜索、安装和更新等操作。
- APT(Advanced Packaging Tool)是Ubuntu中用来管理程序软件包的命令行程序,可以方便的完成对软件的安装、卸载和更新,也可以对ubuntu系统本身进行升级。APT的源文件是 /etc/atp/source.list文件。
常用apt命令:
- 安装软件包: sudo apt-get install packagename
- 重新安装软件包: sudo apt-get install packagename -- reinstall
- 删除软件包: sudo apt-get remove packagename
- 删除软件包和配置文件: sudo apt-get remove packagename -- purge
- 获取新的软件包列表: sudo apt-get update
- 更新已安装的软件包: sudo apt-get upgrade
- 升级系统: sudo apt-get dist-upgrade
- 搜索软件包: sudo apt-cache search packagename
- 查看软件包的详细信息: sudo apt-cache show packagename
apt的相关路径
- /etc/apt/source.list 设置软件包的获取来源
- /etc/apt/apt.conf apt配置文件
- /etc/apt/preferences 版本参数
- /var/cache/apt/archives/ 已下载的软件包的存放目录
- /var/lib/apt/lists/ 存放已下载的软件包的详细信息
有的软件还需安装依赖项,具体怎么安装,需百度,大概是:
-
- 安装软件相关依赖项;二、下载软件压缩包,解压unzip opencv.zip ;
然后编译安装cmake ,make, sudo make install
5.进入管理模式和使用终端:
- ubuntu将系统超级管理员权限授予特定用户,默认情况下,这个权限分配给在ubuntu系统中第一个创建的账户,这个账户可以通过使用sudo 应用程序来执行管理任务,使用方法是在执行的命令前添加上 sudo。
键入sudo su后输入密码可进入root模式,即‘$’变‘#’。(root模式) 密码:AMOV
- 2. 启动终端快捷键: Ctrl+Alt+T ;关闭终端:输入exit。
- 3.查看历史命令行:history n
6.Linux 文件的基本操作
- 1.新建
- 新建空白文件 touch+文件名称
使用 touch 命令创建空白文件,关于 touch 命令,其主要是来更改已有文件的时间戳的,但其在不加任何参数的情况下,只指定一个文件名,则可以创建一个为指定文件名的空白文件。例子:touch test
- 新建目录 mkdir+文件名称
使用 mkdir(make directories)命令可以创建一个空目录,也可同时指定创建目录的权限属性。例子:mkdir mydir
使用 -p 参数,创建子目录,同时创建父目录(如果不存在该父目录),如下我们同时创建一个多级目录(这在有时候安装软件,配置安装路径时非常有用):mkdir -p father/son/grandson
mkdir –p 目录A/目录B
touch是创建文件,mkdir是创建文件夹也可以说是创建目录
- 2.复制
- 复制文件 cp
使用cp(copy)命令复制一个文件或目录到指定目录。例子:cp test father/son/grandson
- 复制目录
要成功复制目录需要加上-r或者-R参数。例子:cp -r father family
- 3.删除
- 删除文件 rm+文件名称
使用rm(remove files or directories)命令,删除一个文件或目录;例子:rm test
有时候你会遇到想要删除一些为只读权限的文件,直接使用rm删除会显示一个提示,就需要用上参数 -f ;
例如:rm -f test ( -f 强制删除)
- 删除目录
跟复制目录一样,要删除一个目录,也需要加上-r或-R参数。例子:rm -r family(-r 删文件夹)
- 4.移动文件与文件重命名
使用mv(move or rename files)命令,移动文件(剪切)。
格式:mv 源目录文件 目的目录。例子:mv file1 Documents
- 重命名文件
格式:mv 旧的文件名 新的文件名
例子:mv file1 myfile
- 5.查看文件
- 使用cat,tac和nl命令查看文件。
7. 1快捷键
- Tab ---------补全命令,补全目录,补全命令参数;
- Ctrl+c ------强行终止当前程序;
- Ctrl+d ------键盘输入结束或退出终端;
- Ctrl+s ------暂定当前程序,暂停后按下任意键恢复运行;
- Ctrl+z ------将当前程序放到后台运行,恢复到前台为命令fg;
- Ctrl+a ------将光标移至输入行头,相当于Home键;
- Ctrl+e ------将光标移至输入行末,相当于End键;
- Ctrl+k ------删除从光标所在位置到行末;
- Alt+Backspace ------向前删除一个单词;
- Shift+PgUp ------将终端显示向上滚动;
- Shift+PgDn ------将终端显示向下滚动。
7.2最常用的帮助命令
- man [数字] 命令 查看手册
- 命令 --help 查看帮助
- ls 查看当前目录
- find 关键词 查询内容
8.使用VIM
- 打开终端,键盘输入vimtutor进行学习。(VIM不是IDE,是一个命令,用于文本编辑)
- 欲进入vim编辑器(从命令行提示符,终端),请输入∶vim + 文件名 + <回车>;也是打开文件。
- 常用命令:
Esc +
:q! 丢弃所有的修改并退出;不保存退出;
:wq 将缓冲区内的资料写入磁盘中,保存并离开vim;
:set 环境变量的当前值;
:set nu 设定资料的行号;
:set ai 自动内缩。
∶d$ 从当前光标删除至当前行末尾;
∶dd 删除整行,请输入。
insert 进入编辑模式
set nu 设置行号
9.Hello SLAM
- 编译1:
首先在/home中创建slamboook文件夹,对应章节/ch2;
注:在主文件夹里创建(复制粘贴)不需要进入root模式,在/home中进行操作必须进入root模式。
- 使用vim/gedit输入并保存helloSLAM.cpp文件。(一定要输入正确!!!)
- 编译:g++ helloSLAM.cpp(正常是没有任何输出。)
若没有安装g++,键入 sudo apt-get install g++安装。
- g++编译成功会产生一个a.out文件。(%号省略前面的文件夹)
输入 ./a.out 会输出Hello SLAM!
- 更改生成的文件名
g++ helloSLAM.cpp -0(零) hello
输入运行:./hello
- 编译2:使用cmake(确保输入正确)
在 linux 平台下使用 CMake 生成 Makefile 并编译的流程如下:
1、编写 CmakeLists.txt。
2、执行命令“cmake PATH”或者“ccmake PATH”生成 Makefile ( PATH 是 CMakeLists.txt 所在的目录 )。
3、使用 make 命令进行编译。
1. 在slambook/ch2中新建(vim)一个CMakeLists.txt文件,按模板输入,确保输入正确。
2. 在ch2下调用cmake进行工程分析:键入 cmake .(生成一些中间文件和MakeFile。)
3. 编译工程:键入 make (输出一个编译进度,产生可执行程序helloSLAM。)
4. 执行程序:键入 ./helloSLAM (输出 Hello SLAM!)
5.处理中间文件:
mkdir build (创建build,build文件夹在ch2文件夹里面)
cd build
cmake .. (对上一层文件夹(代码所在文件夹)进行编译)
make (build文件外,ch2里不可有其他文件,处于未编译过,即 2个.cpp和1个.txt文件)
6.添加一个可执行程序 语法:add_executable(程序名 源代码文件)
7.添加一个库:add_library(hello libHelloSLAM.cpp)
8.共享库:add_library(hello_shared SHARED libHelloSLAM.cpp)
9.链接:target_link_libraries(useHello hello_shared)
10.调用库:头文件(.h)+库文件(.a)
注:断点调试是指自己在程序的某一行设置一个断点,调试时,程序运行到这一行就会停住,然后你可以一步一步往下调试,调试过程中可以看各个变量当前的值,出错的话,调试到出错的代码行即显示错误,停下。
调试方法:
1)设置断点:在程序代码编辑框(能打代码的地方)外双击,就成功设置了一断点(可以看到有一点在那里)。
2)开始调试按F5,程序运行到断点之后,按F10就会执行当前程序行。
完整的CMakeLists.txt
Hello SLAM!
Hello SLAM 2017
使用库
Open CV的安装和编译
下载opencv-3.1.0.zip的压缩包。将它解压到任意目录下,我们发现 OpenCV 亦是一个 cmake 工程。事实上 OpenCV 的依赖项很多,缺少某些编译项会影响它的部分功能(不过我们也不会用到所有功能)。OpenCV 会在 cmake 阶段检查依赖项是否会安装,并调整自己的功能。在安装之后,OpenCV默认存储到你的/usr/local 目录下。
文件结构