常用指令
系统操作
sudo #以其他身份执行命令,默认root
date
cal 2020
clear #清屏
shutdown -h now #关闭系统
init 0
telinit 0
shutdown -r now #重启
reboot #重启
logout #注销
目录操作
cd xxx #在当前目录下进入xxx目录
#蓝色为文件夹,白色为文件,绿色为可执行文件
cd .. #返回上一目录
cd ../.. #返回上两级目录
cd - #返回上次所在目录
pwd #查看当前路径
查看目录
ls #显示当前目录中的文件
ls -l #显示当前目录文件机信息
ls -a #显示所有文件(包括隐藏)
创建
touch xxx.xxx #当前目录下创建xxx.xxx文件
mkdir xxx #在当前目录下创建xxx目录(-p确保文件已存在)
复制
cp xxx target #将xxx复制到target目录(不包括目录),指定绝对目录
cp -a xxx target #将xxx的所有文件及目录复制到target
重命名和移动
mv xxx yyy #将当前目录下的xxx文件重命名为yyy
mv xxx source targrt #将xxx文件从source目录移动到target目录,向外移指明绝对目录
删除操作
rm xxx #删除当前目录下的xxx(目录非空时无法删除)
rmdir xxx #删除当前目录下的xxx目录
rm -rf xxx #删除xxx目录及目录下的内容
#指定绝对目录
APT软件工具
apt-get install xxx #安装或更新一个deb包
apt-get update #升级列表中的软件包
apt-get upgrade #升级所有已安装的软件
Vim操作
打开文件
vim xxx #用vim打开当前目录下的xxx文件,若没有则创建
一般模式
通过vim打开自动进入一般模式,此模式下可以查看,复制粘贴和删除
ctrl+f 向下一页
ctrl+b 向上一页
home,end 移动到行首或行末
G 移动到最后一行
nG 移动到第n行
gg移动到最后一行
x删除光标后一个字符,X删除光标后,nx删除光标后n个字符
dd删除光标所在整行
yy复制整行
p复制内容在下一行粘贴,P上一行粘贴
/xxx 向下查找xxx,n上一个重复操作(继续向下查找)
?xxx 向上查找xxx,N继续向上查找
编辑模式
在一般模式下按下i,o,a,r任意字母进入编辑模式
此时可以编辑代码
按下Esc退出编辑模式回到一般模式
命令行模式
按下: / ? 可进入命令行模式,使用命令行代码进行保存退出等操作
:w #保存
:q #退出
:wq #保存并退出
ZZ(shift+zz)
:set nu #显示行号
:set nonu #取消显示行号
编译文件
使用g++命令
g++ xxx.xxx #默认编译方式,生成a.out
g++ -std=c++14 xxx.xxx #指定使用的编译方式
g++ xxx.xxx -o yyy #指定得到运行文件的名称
cmake操作
虽然任何一个程序都可以使用g++命令进行编译,但当程序规模变得很大,存在多个文件夹,源文件,类,个文件之间还存在依赖关系,此时使用g++指令就会变得非常复杂,此时我们便选择使用cmake来管理项目
在一个cmake工程中,我们使用cmake命令生成makefile文件,再用make命令根据makefile的内容编译整个工程,makefile可理解为系统自动生成的编译指令
首先在项目目录下建立CMakeLists.txt,用于告诉cmake要在此目录下做的事
# 声明要求的 cmake 最低版本
cmake_minimum_required( VERSION 2.8 )
# 声明一个 cmake 工程,括号内为工程的名称
project( HelloWorld )
# 添加一个可执行程序,括号内为可执行程序名,加入编译的文件名
# 语法:add_executable( 程序名 源代码文件 )
add_executable( hello helloWorld.cpp )
上述语法必须遵从
编译步骤
cmake . #分析该工程(当前目录),此时会生成中间文件如makefile
make #对工程进行编译
#通过后,在该目录下就得到CMakeLists.txt中声明的hello文件
./hello #运行
实际上,完成的程序我们是不想保留中间文件的,所以一般我们在项目目录下创建一个build文件存储中间文件,完成后删除build文件再发布源码即可
mkdir build
cd build
cmake .. #对上一目录分析
make
cmake下使用c++的库
在c++的程序编译中,只有带main函数的文件才会被编译成可执行文件另一些文件只会被打包成库,供其他程序调用,c++的库称为library
一个库可以是许多算法,程序的集合,需要头文件(.h)和源文件(.cpp)
Linux中的库分静态库(xxx.a)和共享库(xxx.so),静态库每次调用都会生成一个副本,共享库只有一个副本,更节省空间
add_library( hlib hello_lib.cpp ) #静态库
add_library( hlib SHARED hello_lib.cpp ) #共享库
编译后会生成libhlib.a或libhlib.so文件,就是得到的库
要使得编译的可执行文件能跟库链接,需在CMakeLists.txt添加
add_executable( useHello useHello.cpp )
target_link_libraries( useHello hlib ) #使useHello与hlib链接
再使用cmake和make命令即可