目录
一、怎么使用Ubuntu
1、操作系统
使用Linux系统 原因:开源,免费,可以和硬件结合。
2、VMware虚拟机
WMware:虚拟出一片空间,专门用作开发,用作启动Ubuntu。
3、Ubuntu操作环境打开
打开方式:
拍摄快照:
关闭方式:
建议待机挂起
情况:如果打不开Ubuntu
4、认识Ubuntu结构
树状图,重点区分/home和用户家目录的区别
二、熟悉Linux
一般嵌入式开发都没有图形化界面,都是通过命令行远程连接到某一台设备
1、终端快捷键
打开
1.点击终端图标
2.ctr alt t
3.ctr shift t 在已经打开终端的前提下,重新打开一个新的终端
4.ctrl shift e 在已经打开终端的前提下,左右分屏
5.ctrl shift o 在已经打开终端的前提下,上下分屏
关闭:
1.点击关闭
2.ctrl d
3.exit
快捷方式:
1.ctrl shift + 放大 (该+是+=混合间的键盘)
2.ctrl - 缩小
3.ctrl shift c 赋值
4.sgtr shift v 粘贴
2、命令行提示符
ubuntu @ ubuntu: ~ $
| | | | |
用户名 分隔符 计算机名 前用户的家目录 普通用户权限
#表示超级用户的权限
命令行提示符的第四个位置表示当前所在工作路径
三、shell指令
格式1:指令 参数 选项
格式2:指令 选项 参数 (随着版本的更新,部分指令可以使用这个格式)
注意:指令,参数,选项之间必须使用空格,参数和选项位置可以互换
参数和选项可有可无
终端操作不要在root权限下进行
因为root是Linux中的超级用户,权限较大,所以root的操作基本都被允许不会报错。
1、man(查看手册,man手册类似于数据手册)
2、su(切换用户)
su 用户名
su root
root的密码 默认是随机的,这样谁都不知道密码,所以要修改密码
可以使用exit退出当前登录用户,返回上一个登录用户
3、passwd(修改密码 )
passwd 用户名
sudo passwd root
修改密码过程中,会要求输入多次密码,每一次都看不到密码(不会显示)
只有管理员可以修改密码,现在没有管理员权限,可以用sudo指令赋予单次的管理员权限
显示已成功更新密码:说明密码更新成功,可以使用新的密码登录了
4、sudo(单次管理员权限)
sudo 指令
作用:使用超级用户的权限执行后面的指令
帮助记忆:
su 直接回车,默认切换到root用户,su切换到超级用户 do做···
5、pwd(查看当前所在位置的绝对路径)
pwd ----->直接在终端输入
查看Ubuntu用户的绝对路径:/home/ubuntu (绝对路径指的是从根目录出发的路径)
注意:绝对路径中第一个/既表示路径分隔也表示根目录
6、ls(查看目录下有哪些文件)
ls 参数 操作数(实际就是一个路径) ls用于查看指定路径下有哪些文件
直接在终端输入ls:查看当前路径下有哪些文件
1、ls 后的路径是文件名时,直接回显文件名到终端
2、ls 后的路径是目录名时,直接回显目录中的文件名到终端
ls指令可以加参数
ls -i 带inode显示文件名 (文件的inode号是文件在系统中的唯一标识,类似于人的身份证号)
ls -a 显示路径下的所有文件(包括隐藏文件) (隐藏文件:文件名前面带.的就是隐藏文件)
ls -l 显示路径下文件的详细信息
ls -lh 给文件大小带单位的显示路径下文件的详细信息 多个参数可以结合使用
7、ls -l显示的详细信息的介绍
- rw-rw-r-- 1 ubuntu ubuntu 18 Mar 19 16:26 2.c
| | | | | | | |
文件 | 每一种用 | 硬链接 | 文件所 | 文件所 | 大小 | 时间戳 | 文件名
类型 | 户对文件 | 文件的 | 属用户 | 属组用 |
的权限 个数 户
- 普通文件 时间戳(文件最后一次被修改的时间)
Linux下的文件类型一共有七种 分别是 b c d - l s p
b:块设备文件
c:字符设备文件
d:目录文件
-:普通文件
l:软链接文件
s:套接字文件
p:管道文件
rw-:文件所属用户对文件的权限(第一组)
rw-:文件所属组用户对文件权限(第二组)
r--:文件其他用户对文件的权限(第三组)
所属用户:哪个用户创建文件,哪个用户就是文件的所属用户
所属组用户:分小组作业时,所属用户属于哪一个组,文件所属组就是哪一个组
其他用户:和文件没有任何关系的用户
r 可读 w 可写 x 可执行 - 不具备该权限
8、chmod(修改文件权限)
1)使用字母表示法修改文件权限
知道用户的字母表示和权限的字母表示
用户的字母表示:
所属用户:u(user) 所属组用户:g(group)
其他用户:o(other) 所有用户:a(all)
权限的字母表示:
r:可读 w:可写 x:可执行
修改权限的格式: chmod 用户的字母表示 +/-/= 权限的字母表示 文件名
+:添加权限
-:取消权限
=:赋指定权限
例: 给1.c文件的所属用户添加可执行权限 chmod u+x 1.c
2)使用八进制表示法修改文件权限
通过八进制数修改文件权限
文件权限的八进制表示法:
三位二进制数,分别表示有无 读权限 写权限 执行权限
将三位二进制数转为一位八进制数表示一个用户的权限范围
三位八进制数,分别表示 所属用户 所属组用户 其他用户 的权限
格式: chmod 三位八进制数 文件名
三位八进制数分别对应三种用户的权限,一定要写三位八进制数
eg: chmod 666 1.c --->给1.c文件的所属用户、所属组和其他用户都是可读+可写的权限
chmod 0777 1.c --->0是八进制数的前导符,777是权限
9、cd(切换工作路径)
格式:
cd 操作数(指定路径)
cd 指定路径
cd 直接回车 ---->会切换到当前登录用户的家目录
cd - 切换到上一次的工作路径
cd .. ---->切换到当前目录的上一级目录中
cd . ---->切换到当前目录中
绝对路径:从根目录出发的路径,就是绝对路径
相对路径:相对于当前位置/当前用户而言的路径,就是相对路径
/:绝对路径 ~:相对路径
~是一个相对路径,当前登录的用户是谁,就切换到谁的家目录
10、mkdir(创建目录)
目录就是Windows下的文件夹
格式: mkdir 目标路径 ---->创建指定目录
eg: 当前在家目录下:
mkdir 25041 --->在家目录下创建了25041目录
mkdir 25041/day2 --->在家目录下的25041目录下创建了目录day2
mkdir创建多层目录,但是缺少前面层目录时
可以通过给mkdir指令加上参数 -p,解决创建多层目录的问题
mkdir -pv 25041/day3/test
-v 可以在终端打印递归创建的过程
11、touch(创建文件)
创建文件
touch 文件名(可以是文件的绝对路径也可以是文件的相对路径) 1、文件本身不存在,创建文件 2、文件本身存在,更新文件的时间戳 文件的时间戳:最后一次被修改的时间
12、tree软件的使用
Linux下安装的软件,可以直接在终端输入软件名进行使用
13、rm(remove删除文件)
rm 文件的绝对路径/文件的相对路径
rm 1.c ----->删除当前目录下的1.此文件
rm -r 目录路径 ---->递归删除目录 不管目录里有没有文件,都删除
-v 可以在终端打印递归的过程
14、通配符
* 可以通配一个或多个字符
? 只能通配一个字符
[abc] 可以通配[]内的任意一个字符
[[:lower:]] 通配所有小写字母
[[:upper:]] 通配所有大写字母
15、rmdir(删除空目录)
rmdir 目录的路径 --->删除目录
rmdir -pv 目标目录的路径 --->递归删除目录
rmdir -p 使用时要把一整条路径写清楚,会从后往前逐个删除空目录,只删除路径下的空目录
rm -r 则会从后往前逐个删除目录,不论是否有内容
16、Tab键(自动补齐)
可以输入部分然后按Tab键,将关键字补齐
如果当前打的部分关键字不唯一,则按两下Tab键,提示关键字
17、cp(copy拷贝文件/目录)
拷贝目录时需要加上 参数 -r
功能:实现文件以及目录的拷贝
1.文件拷贝文件
格式:cp 文件1 文件2 把文件1拷贝为文件2
cp f1 f2 f1必须存在,f2可有可无
当f2不存在,把f1拷贝一份为f1,重名为f2
当f2存在,把f1拷贝一份为f1,重名为f2,替换原来的f2文件
2.目录拷贝目录
格式:cp 目录1 目录2 -r 目录1存在,目录2可有可无
cp dir1 dir2 -r
当dir2不存在,则把dir1拷贝一份,重名为dir2
当dir2存在,则把dir1拷贝一份,存储到dir2里面
3.文件拷贝目录
cp file dir 文件和目录提前存在
如果dir中没有同名file文件,把file拷贝一份存到dir里面
如果dir中有同名file文件,把file拷贝一份存到dir里面,替换原文件
18、mv(move 移动,重命名,删除,剪切文件或目录)
移动文件/目录 ---->类似于剪切(源文件消失,新的文件存在)
可以直接移动目录
功能:剪切,实现文件的重命名
1.文件剪切文件
格式:mv 文件1 文件2 把文件1重名为文件2
mv f1 f2 f1必须存在,f2可有可无
当f2不存在,把f1重名为f2,f1删除
当f2存在,把f1重名为f2,替换原来的f2文件
2.目录剪切目录
格式:mv 目录1 目录2 目录1存在,目录2可有可无
mv dir1 dir2
当dir2不存在,则把dir1重名为dir2
当dir2存在,则把dir1剪切到dir2里面
3.文件剪切目录
mv file dir 文件和目录提前存在
如果dir中没有同名file文件,把file剪切dir里面
如果dir中有同名file文件,把file剪切到dir里面,替换原文件
19、cat(查看文件中的信息)
格式:
cat 文件的路径
功能:读取文件中的内容到终端 cat只能读取文件,
即使cat后面随便放了一个字符串,该字符串也会被是被为文件
20、echo(直接在终端中输出内容)
格式: echo 字符串
将字符串显示在终端,即使echo后面跟的是文件名,也只会把文件名识别为字符串
21、重定向符
格式:
输出指令 重定向符 文件
逻辑:
将输出指令的输出结果存入文件中
>: 重定向
1、cat 1.c > 2.c
将1.c中的内容重定向到2.c文件中
如果2.c不存在则创建并写入
如果2.c存在,覆盖掉原来2.c中的内容
2、echo hello > 2.c
将hello重定向到2.c文件中
如果2.c不存在则创建并写入
如果2.c存在,则覆盖掉2.c中原有的内容
>>: 追加
1、cat 1.c >> 2.c
将1.c中的内容追加到原来2.c内容的后面
如果2.c不存在则创建并写入内容
如果2.c存在,则将1.c中的内容追加到2.c后面
2、echo hello >> 2.c
将hello追加到原来2.c内容的后面
如果2.c不存在则创建并写入内容
如果2.c存在则将hello追加到2.c后面
22、文件信息解读
1)/etc/passwd
该文件下不存储用户的密码,存储的是用户的信息
root :x: 0: 0: root: /root: /bin/bash
| | | | | | |
用户名 是否加密 uid gid 所属组 用户家目录 用户使用的bash解析器
2)/etc/group
ubuntu:x: 1000:
组名 是否加密 组id
3)/etc/shadow
用来存用户密码的,普通用户没有查看权限
如果想要查看文件需要加sudo
23、vim(编辑器)
vim:是一个编辑器,用来写代码,
vim兼容vi,vim添加新的操作,查找,高亮显示
格式:
vim 文件名 打开一个文件
vim -o 文件1 文件2... 上下打开多个文件
vim -O 文件1 文件2... 左右打开多个文件
1)命令行模式
作用:赋值,粘贴,剪切,删除等
当进入到vim编辑器时,默认在命令行模式
复制:
yy 复制光标所在行
p 粘贴在光标所在行的下一行
P 粘贴在光标所在行的上一行
nyy 复制光标所在行的n行
选中代码y 复制选中的内容
剪切=删除:
dd 剪切光标所在行
ndd 剪切光标所在行的n行
选中代码d 剪切选中的内容
u 撤回
ctrl r 反撤回
跳转:
gg 光标跳转到首行
G 光标跳转到尾行
ngg -->nG 光标跳转到n行
组合使用:
ggyG 全文复制
ggdG 全文删除,剪切
= 格式对齐
gg=G 全文对齐
先点中ctrl shift 鼠标左键选中赋值的代码,在点击c
2)插入模式
编辑内容,写代码
记住 o 在光标所在行的下一行插入 insert键 在光标所在字符的前面插入 就行
a 在光标所在字符的后面插入
A 在光标所在行的行尾插入
i 在光标所在字符的前面插入
I 在光标所在行的行首插入
o 在光标所在行的下一行插入
O 在光标所在行的上一行插入
s 剪切光标所在字符,并且在该字符的位置插入
S 剪切光标所在一行,并且在行的行首位置插入
insert键 在光标所在字符的前面插入
3)底行模式
作用:保存,退出,查找,替换,高亮显示等
:w 保存
:q 退出
! 强制操作
a 所有
:wqa 保存退出所有
/字符串 查找字符串,高亮显示
:noh 取消高亮显示
:set nonu 取消行号
:set nu 显示行号
:%s/字符串1/字符串2 全文把字符串1替换为字符串2
:%s/字符串1/字符串2/g 全文把字符串1替换为字符串2
:m,ns/字符串1/字符串2/g 把m-n行的字符串1替换为字符串2
:m,ny
:m,nd
4)三个模式间如何切换
24、gcc(解析器,编译器)
gcc是以GNU发行的C和C++的集成器,编译器
1.直接运行
gcc ***.c 默认生成一个a.out可执行二进制文件
./a.out 运行a.out文件
2.修改可执行文件
gcc ***.c -o 指定的可执行文件名
./指定可执行文件名
3.-Wall 显示所有警告的(实际是一组警告)
定义变量未初始化
未使用的参数,变量
函数未返回 ....
gcc ***.c -Wall 会发生警告:代码更安全
4.-Werror 把警告改为报错
gcc ****.c -Werror
如果***.c文件中存在警告,则改为error
目的:是程序更安全
5.gcc的分步编译(笔试)
gcc ***.c ---->本质上计算机执行4步
ESc .iso
预处理---》编译---->汇编---》链接
预处理:展开头文件,删除注释,替换宏,生成.i文件
gcc -E ***.c -o ***.i
编译:检查语法的正确性,生成.s(汇编)
gcc -S ***.i -o ***.s
汇编:把汇编文件转换为二进制文件.o(目标文件)
gcc -c ***.s -o ***.o
链接:把二进制文件转换为可执行文件(二进制文件)
gcc ***.o -o hello
执行
./hello