Start
写在最初:
开始学习C/C++ 慢慢记录,常回顾。
目的:
创建虚拟机模拟操作的硬件设备
方式:
在当前电脑中按装虚拟机
云服务器(成本高)
手搓服务器(真实硬件)
VMware安装
下载 Vmware
安装 一直下一步
创建虚拟机
给虚拟机中配置系统
选中该虚拟机 进入其设置界面 选中CD/DVD 选择 iso 镜像文件 浏览到 下载的 ubuntu 镜像文件(优势 小)优先选择 断网连接【或者拔网线】 启动虚拟机
配置虚拟机
注意语言的选择
插件Tool
VMTools
主机给虚拟机共享
作用:
原始的VMware 界面不能自适应改变 优化其操作,便于操作
使 主机系统与虚拟机system可以相互赋值黏贴,包含文件、文件夹、字符串
使主机共享内容给虚拟机
查看位置虚拟根目录下 mnt hgfs 共享的文件
安装:
方式 镜像文件安装
1. 进入虚拟机
2. 选择 CD/DVD
3. 选择ISO镜像
4. 浏览到下载的 VMTools镜像文件
5. 选中启动时连接与已连接
6. 确认
7. 弹出DVD窗口
8. 赋值其中的压缩包到HOME目录下
9. 在home目录下解压该压缩包
10. 进入解压的文件夹中
11. 在空白区域点击鼠标右键 选中在终端打开
12. 在终端中输入
sudo ./vm ... pl
yes
一路回车
软件安装、卸载、更新命令
sudo apt-get install 要安装的软件全名 -y #安装
sudo apt-get remove 要卸载的软件全名 -y #卸载
sudo apt-get update #更新
Samba
虚拟机给主机分享
作用:
使主机查看虚拟机共享的文件
安装命令
sudo apt-get install samba -y
配置
1 添加用户
sudo smbpasswd -a 用户名
输入密码 确认密码
2. 修改配置文件
sudo gedit /etc/samba/samba.conf
尾部追加
[share]
path=共享文件夹地址
writable=yes
valid users=用户名
3. 重启samba服务
sudo /etc/init.d/samba restart
使用
主机中使用
1. win+R
2. 输入 \\虚拟机ip [ip a 查询ip]
3. 双击share文件
4. 输入账号和密码
5. 连接
openssh-server
【用这个就行】
这个是基于samba的优化 所以 后期 有这个 就可以不用 samba 但是这个是基于 命令控制的
作用:
使用主机控制台连接虚拟机控制台
安装命令
sudo apt-get install openssh-server -y
使用
一:打开主机控制台
1 方式1 win+R 输入 cmd
2 方式2 在搜索框搜索命令提示符
3 方式3 菜单栏中寻找命令提示符
4 方式4 文件管理器地址栏 输入 cmd
二:在主机终端输入
ssh 连接的虚拟器名称 @IP地址
例如:
ssh xxz@127.0.0.1
三: 输入 yes 注意第一次连接该ip地址的时候需要
路径问题
分类:
相对路径 相对于当前文件或文件夹的路径
绝对路径 相对于盘符根目录开始书写 例如:F:\360浏览器 注意 Linux系统没有盘符,只有一个根目录使用/表示
#特殊路径
/ 根目录
路径分割符
# /home/xxz ==》 第一个/ 表示根目录 第二个表示 路径分隔符
~ home 目录 ==》 /home/用户名
. 当前目录
.. 上一级目录
1.Liunx常用命令
命令的本质就是一个程序,程序的本质就是一个文件
命令的格式:
# 命令 选项 参数
命令: 就是那个文件名
选项: 可有可无 【多个选项之间使用空格隔开】
参数: 可有可无 【多个参数之间使用空格隔开】
例如 ls -a -l -h /
标准写法 删除 a.txt b.txt强制删除 并且 路径是相对的 因为不是从根目录来的 参数之间空格隔开 选项也是
rm -r -f a.txt b.txt
非标准写法:
rm -rf a.txt b.txt
1.1 --help
--help
#作用:查询其他命令的帮助信息
语法:
命令 --help 例如: # ls --help
注意: 不是所有的命令都能使用
1.2 man
man是Linux提供的一个手册[说明书],
#注意:这个手册有很多个章节
###############################
第一章 中放的是 命令 的帮助信息
第二章 中放的是系统调用(操作系统提供的函数 open)
第三章 中放的是库函数(c库提供的函数 printf)的帮助信息用法:
###########################################
man 章节【1 2 3】 要查找的命令或者函数名
man 1 ls ===》 也就是 查询 第一章 命令 ls的信息
man 2 open ==》 这个查询的是 第二章 系统调用 open的信息
1.3 cd
作用
进入
语法
cd 要进入的文件夹路径
如 cd /home/xxz/a
cd a
1.4 pwd
作用:
# 显示当前工作目录的绝对路径
语法:
pwd
1.5 ls
作用: 查看
查看当前目录下 或指定目录下的文件于文件夹
语法:
ls 选项 参数
选项
参数
要是指定查看的目录需要书写
如果查看当前目录无需书写
ls -a # 表示显示所有文件和文件夹
-l # 列表显示
-h # 科学显示文件大小
以d开头的 是文件夹 以r 开头是 文件
1.6 tree
优势: 树状图看着清晰 但是复杂 并不如 ls
作用:查看文件于文件夹,可以查看多级
注意:系统没有提供,自己下载
sudo apt-get install tree
语法格式:
tree 选项 参数
选项:
-L 层级
参数:
查看的层数
# tree -L 层级
1.7 clear
作用: 清空
1.8 cat
查看指定文件中文本的内容,其他的会乱码
语法:
cat 要查看的文件路径/文件名
如:
cat a/a.txt # 相对路径
cat /home/a/a.txt # 绝对路径
1.9 rm
作用:删除
语法:
rm 选项 参数
选项:
-r: 文件夹操作
-f: 强制
参数:
要删除的文件或者文件夹路径
如:
rm -rf a
1.10 cp
作用: 复制
语法:
cp 选项 源文件或文件夹路径或者名称 目的路径
选项:
-r:文件夹操作
-v: 显示进度
cp /home/xxz/a/a.txt /home/xxz/share
# 将xxz目录下的a文件下的a.txt复制进 share文件中
1.11 mv
作用:剪切
语法:
mv 要剪切的文件或目录 目的路径
如:
mv /home/a/a.txt /home/share
1.12 mkdir
作用:创建文件夹
语法:
mkdir 选项 要创建的文件夹路径
注意 :如果递归创建的话,需要加 -P
如: mkdir -p xx/zz/kk 也就是按顺序创建文件夹
且所在目录必须可写,即允许创建文件夹
1.13 touch
作用: 创建文件
语法:
touch 文件名
1.14 find
作用:在指定路径下查找指定文件
语法:
find 路径 -name 文件名
find /home/xx -name a.txt
# 在 /home/xx 下及其子目录下找 a.txt
也可以这样写
# *通配符号
find *a* 查找包含 a 的文件
find *a 查找以 a 结尾的文件
find a* 查找以 a 开头的文件
1.15 grep
作用:查询文件中的指定内容 【记忆】
语法:
grep 查找信息 文件名 参数
参数:
-n 显示行数
-r
grep hello /home/teacher/test.txt -n
意思是在/home/teacher/test.txt文件中找hello字符串,
显示出来并带行号
例:在某个路径及其子目录下的所有文件中查找字符串
1.16 In
链接文件 使两文件内容保持一致
作用:
语法:
ln 源文件名字 连接文件(快捷方式)名称 选项
选项:
-s 表示软连接 注意: 不加 就是默认硬链接
文件一连接 两份文件内容就保持一致了 但是 本质 还是两份文件
分为 软硬连接 也就是删除的时候有区别
硬链接 两文件内容保持一致 优势 甲删除 乙还在 【缺点占用内存】
软连接 两文件内容保持一致 但是 甲删除 乙也就清空了 【优点:节省内存】
开发常用 软连接 也就是加 -s
1.17 gzip
作用:压缩与解压缩命令
语法:
z: gzip格式
j: bz2格式
c: 压缩
x: 解压缩
v: 进度
f: 执行
tar 选项 参数
选项:
z: gzip格式
j: bz2格式
c: 压缩
x: 解压缩
v: 进度
f: 执行
gzip:
语法:
//压缩
tar zcvf
tar zcvf 压缩包包名要压缩的文件1要压缩的文件2
tar zcvf 2024.bz2 a.txt b.txt
# 将 a.txt b.txt 压缩进 形式为 bz2格式的2024.bz2文件中
bz2
语法:
tar jcvf 压缩包包名 文件1 文件2
tar jxvf 压缩包的名称
解压
解压方法
1:解压到当前目录
tar zxvf 压缩包的名称
1.18 重定向
作用: 重新定义方向
符号:
> 覆盖
>> 追加
1.19 管道
作用: 将管道左边命令的输出作为管道右侧命令的输入
再加工的意思
左边查询或者操作完 然后再去右边继续右侧的命令操作
# 符号==》 |
grep a a.txt
a.txt
grep 是工具 a.txt 是输入 也就是提供者
下面查询的结果 就是输出结果 也就是成果
左边查询或者操作完 然后再去右边继续右侧的命令操作
解释: 左侧 ls 先查看当前目录下 或指定目录下的文件于文件夹 并将左侧查询的结果 输送到右侧去进行 右侧命令的操作 进行 查找 包含txt的文件
注意: 不是只有查找命令 是都可以
将 abcd 打印在控制台 后将结果进行查询 字符 b 的操作
1.20 echo
作用: 输出内容在控制台
牛逼作用: 可以写东西进文件
语法:
echo 输出的内容
如:
echo 德玛西亚 就会在控制台看见了
xxz@xxz:~$ touch a.txt
xxz@xxz:~$ ls
a.txt
xxz@xxz:~$ echo 德玛西亚 # 控制台打印字符串
德玛西亚
xxz@xxz:~$ echo 德玛西亚 >> a.txt #牛逼之处可以重定向 来写东西进文件
xxz@xxz:~$ ls
a.txt
xxz@xxz:~$ cat a.txt
德玛西亚
1.21 gedit
作用:以文本编辑器的方式打开
语法:
sudo gedit /etc/samba/samba.conf # 以最高权限来将 samba.conf 文件以文本编辑器的方式打开
技巧:
上下键翻开历史命令
tab 自动补全
2.Vim编辑器
安装:
sudo apt-get install vim
安装 catgs 目的优化vim
sudo apt-get install catgs
操作:
1 创建或保存文件
2 编辑
编辑模式
按i 进入插入模式
按shift+: 进入命令行模式
插入模式
按esc 键回退到编辑模式
命令模式
w:保存
q:退出
!: 强制
注意:
当前文件被打开输入编辑模式
使用vim 编辑完文件后 只是一个文本文件,不能执行 但是想让其可执行 需要使用编译器
编译器:
c 语言编译器 ==》 gcc
c 文件的后缀名: .c
c++ 语言编译器 ==》 g++
c++ 文件后缀名: .cpp
使用vim 创建一个文本 a.cpp
#include <iostream>
using namespace std;
int main(){
cout << "hello, world" << endl;
}
g++ a.cpp 将a.cpp文件编译为可执行文件
运行执行文件:
# ./可执行文件
./a.cpp
一步到位:【要求熟练掌握】
将代码的文本文件编译为可执行程序g++要编译的文本文件名-0生成的可执行文件名
g++ a.cpp -o [自己起编译后的文件名]
-o及以后部分可以省略不写,默认生成的可执行文件名为a.ou
分步进行
g++ -E hello.cpp -o hello.i 1、预处理 就干两件事 1 头文件展开 2 宏替换 面试最多问这步 是程序可操作的 其余步骤 都没办法
g++ -S hello.i -o hello.s 2、编译 将代码转换为汇编语言
g++ -c hello.s-o hello.o 3、汇编 将汇编语言转换为二进制文件
g++ hello.o -o hello_elf 4、链接 将二进制文件转换为可执行文件