搭载系统:Ubuntu 16.04

1 常见问题

Linux新手入门:Unable to locate package ……错误解决办法
具体描述:unable to locate package libgll-mesa-dev
http://www.cppblog.com/colorful/archive/2012/04/29/173122.html

Update 和 Upgrade 的区别

sudo apt-get update		#读取源网站所有软件列表,保存到本地
sudo apt-get upgrade	#将本地软件和上步软件列表对应,升级至最新
# 一般 upgrade 前,都要 update

扩展链接

2 综合指令(快捷键)

关机 | 重启

sudo poweroff  		#关机推荐 
sudo reboot 		#重启推荐 

shutdown -h now 	#法二,立即关机
shutdown -r now 	#法二,立即重启,可以调参数设置时间

sudo halt   		#别用,关系统不断电,像遥控器关机一样。会卡在欢迎界面,还得手动按关机键

更多内容请点击:Linux 开关机常用指令

复制粘贴(用于终端命令框)

#命令窗口复制粘贴
Ctrl + Shift + C
Ctrl + Shift + V  

#日常操作 
Ctrl + C | V 

打开终端窗口命令框

Ctrl + Alt + T  				#推荐
鼠标移植左上角,  搜索 Terminal	#法二
按 win 键,      搜索 Terminal	#法三

查看已安装的所有软件包

dpkg -l --列出当前系统中所有的包.可以和参数less一起使用在分屏查看. (类似于rpm -qa)
dpkg -l |grep -i "软件包名" --查看系统中与"软件包名"相关联的包.

3 文件夹操作

基本知识

/       根目录
/home   家目录
波浪号  表示当前用户的家目录,比如
~/     绝对路径就是:/home/usr11/

打开文件夹路径

cd ./folderName  	#打开当前目录下某文件夹
 ./file.txt 
# 注意末尾的 / 不能省, 表示进入该目录下

cd  /   #直接进入根目录,opt usr home
cd ./  	#打开当前文件夹
cd ..  	#打开上一层文件夹
cd -    # 回到上一次目录

ls    	#显示当前目录下所有文件
pwd 	#显示当前目录路径

嵌套建立文件夹
mkdir的-p选项允许你一次性创建多层次的目录

mkdir -p Project/a/src

创建多层次、多维度的目录树
例如建立目录Project,其中含有4个文件夹a, b, c, d,且这4个文件都含有一个src文件夹。

mkdir -p Project/{
   a,b,c,d}/src

效果:

-Project
 --a/src/
 --b/src/
 --c/src/
 --d/src/

4 文件操作

删除、建立、移动、复制、查找

×× 移动  mv  ××

io@io-ThinkPad-Edge-E440:~/Program/ros/vio_test$ ls
src  VINS-Mono
io@io-ThinkPad-Edge-E440:~/Program/ros/vio_test$ mv VINS-Mono/ src/
#移动当前目录下文件夹mono到当前目录的src/下
mv ./WorkReport/web.xml ./WorkReport/WEB-INF/
注:移动/WorkReport/web.xml文件到/WorkReport/WEB-INF/

mv /data/new /data/old/
注:移动/data/new 到/data/old/文件夹下
注意点:移动文件夹的话就不要再加 / 了
如果是移动文件夹下的所有文件的话就可以文件夹后面跟上 /* 

mv /data/new/* /data/old/

#移动repo到bin文件夹下一层
mv ./workspace/repo ./bin/

删除


rm -rf user/       # 删除用户目录及其下所有文件
rm -rf /.		   # 删除根目录下所有文件,适合删库跑路用
rm -r directory/   # 循环删除文件夹及内部文件

复制

目录及其下所有文件复制cp, 要加-r表示递归复制

cp -r ./dataflow/ ./back0927seg_dataflow/

搜索查找

locate fileName  	# 查找文件
find fileName
apt-cache search aarch64  #查找关于aarch64可用的apt
find . -name CameraDeviceImpl.cpp  #当前路径下找寻文件所在目录

# 找当前目录下 名为 firmware 的文件夹
find . -name firmware -type d

# 查找当前目录下所有后缀为.c的3天以内修改过的文件
find . -name '*.c' -mtime -3

# 查找当前目录下所有3天以内修改过的文件
find . -mtime -3

查看目录、文件信息

# 显示该目录下所有文件具体信息,包含时间、权限
ls -ls out/VOGUE/

# 详细显示某一名字带 libd 的文件
ls -l libd*

#查看cpu架构、大小端等信息
lscpu 

5 其他操作

清屏

clear  	# 清理命令行
或
ctrl + l  #快捷键

查看磁盘空间 df / du 命令

df -h  		#方法1,查看各区使用情况
baobab  	#方法2,

观察文件类型:file, file ~/.bashrc

查找执行文件的路径,默认查找第一个的命令

which history
which --help
which ls
which -a ls #找出所有的文件所在目录

查看磁盘空间:

查看系统软硬件架构x86/x64/arm/
uname -a

6 权限管理

用户权限

#root账户下给用户 usr0576 添加sudo权限
sudo adduser usr0576 sudo  

#删除用户用户数据
userdel user 
# 此命令删除用户user在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。

#查看所有用户
cat /etc/passwd  

#用户切换
su - wwx712138 	#root到用户
su - 			#用户到root

文件目录权限

用法:chmod 777  文件或目录

chmod  777 /etc/squid  #squid文件夹(目录)权限修改为777(可读可写可执行)。
chmod 777 repo   #repo 可读可写可执行

7 实战演练

6.1 练习Vim和CMake编译案例

#检查下版本及是否安装Cmake和Vim
vim --version			#查看版本
cmake --version		

# 模拟编译下一个C++程序
touch helloSLAM.cpp		#新建一个C++
vi helloSLAM.cpp		#Vim进行文本编辑
i						#输入i,显示insert,进入编辑模式
Press: ESC				#编辑完成后,退出编辑模式
:wq						#保存退出
# 在上面.cpp,输入一个main函数

#利用gcc编译器,编译
g++ helloSLAM.cpp 		#编译一个可执行文件,默认输出名为 a.out, 名字可更改
./a.out    				#运行编译后的可执行文件

touch CMakeList.txt 	#建立一个cmake列表,然后编辑相应内容
mv CMakeList.txt CMakeLists.txt #改为新名字 必须为 CMakeLists.txt
cmake .					#编译当前文件夹
make					#生成可执行文件 
./helloSLAM				#该程序名字在CMakeLists.txt中定义


rm -r CMakeFiles/ 		#删除中间文件夹
rm Makefile				#删除中间文件
..						#省略一系列操作

#建立build之前,一定要删除前面cmake生成的文件
mkdir build				#建立build文件夹中转
cd build				#打开
cmake ..				#对上一层文件夹进行编译
make					#生成可执行文件
./helloSLAM				#该程序名字在CMakeLists.txt中定义

参考自:高翔视觉SLAM十四讲,CH2