文章目录
Linux命令
1.打开终端
- 直接点击
- ctrl alt t:家目录
- ctrl shift n:当前
2.关闭终端
- 直接点击
- ctrl d
- exit
3.终端
hq Ubuntu ~ $
用户名 主机名 当前目录 命令提示符
查看用户名:whoami
查看主机名:hostname
查看当前的路径:pwd (绝对路径)
4.ls
- ls -a:查看当前路径下所有文件包括隐藏文件
- ls -l:查看当前路径下文件的详细信息
- ls -al:查看当前路径下所有文件包括隐藏文件的详细信息
d rwxrwxr-x 5 hq hq 4096 1月 2 11:23 demo
文件类型 权限 连接数 用户名 组名 大小 最后一次修改的时间 文件名
5.文件类型
- b:块设备文件 查找的时候再根目录下的 dev 文件:/dev
- c:字符设备文件 /dev/input/mouse(/设备文件里/输入文件/输入里面的 mouse)
- d:目录文件 文件夹
- -:普通文件
- l:软连接 相当于快捷方式 <LinuxC高级>
- s:套接字文件 <网络编程>
- p:管道文件 <IO进程>
6.cd
- cd … :返回上一级
- cd - :返回上一次路径
- cd :家目录
- cd ~:家目录
- cd /home/用户名:家目录
7.新建
新建文件:touch 文件名
touch 同名文件名:会更新时间戳
新建目录:mkdir 目录名
mkdir 同名目录:报错 会告诉你已经存在了
mkdir -p 多级目录
8.删除
rm 普通文件名 (可以用 tab 补齐文件名)
rm -r 目录文件名
9.复制
cp 普通文件名 目标路径 (可以在文件名前面加路径找到文件名 放到你想复制的位置的路径就行)
cp -r 目录文件名 目标路径
另存为:cp 文件名 路径/新文件名
10.移动
mv 普通文件 或者 目录名 目标路径
重命名:mv 文件名 路径/新文件名
sudo hq_vm.sh:实现放大Ubuntu窗口、实现复制粘贴、实现文件拖拽
11.常用快捷键
补齐:tab (到后面我们写 mian 函数的时候直接 tab 补齐,这多方便啊)
放大终端:ctrl shift +
缩小: ctrl -
历史命令:上下键 (上一个或下一个命令)
清屏:ctrl + l | clear
vi编辑器
打开:vi 文件名
命令行模式、插入模式、底行模式:
插入模式
- a:从光标所在位置的下一个字符键入
- A:从光标所在行行尾键入
- i:从光标所在位置的前一个字符键入
- I:从光标所在行行首键入
- o:从光标所在行下面另起一行键入
- O:从光标所在行上面另起一行键入
命令行模式
- 复制:yy 复制很多行:nyy(n:行数)
- 粘贴:p
- 删除(剪切):dd 删除很多行:ndd(n:行数)
- 撤销:u
- 反撤:ctrl r
- 光标移动首行: gg
- 光标移动末行: G
- 光标移动行首:0
- 光标移动行尾:$
- 整理代码格式:gg = G
底行模式
- 指定行复制:5, 10y 复制5 - 10 行
- 指定行删除: 5, 10d 删除5 - 10 行
- 保存:w
- 退出:q
- 保存并退出:wq(顺序不能更改) 强制:! (w!、q!、wq!)
- 分屏:vsp
- 查找:/str
- 替换:s/str1/str2 光标所在行第一个str1替换成str2
- s/str1/str2/g 光标所在行所有str1替换成str2
- 替换全文:%s/str1/str2/g | 1, $s/str1/str2/g
- 设置行号:set nu
- 取消:set nonu
- 取消高亮:nohl search
gcc编译器
1.预处理
展开头文件、删除注释、替换宏定义
gcc -E xxx.c -o xxx.i
2.编译
检查语法错误,有错报错,没有问题转变成汇编语言,生成汇编文件
gcc -S xxx.i -o xxx.s
3.汇编
将汇编文件转换成二进制文件
gcc -c xxx.s -o xxx.o
4.链接
链接库文件,最终生成机器能够识别的可执行文件
gcc xxx.o -o xxx
C基础
计算机的存储单位
单位转换
位(bit)、字节(Byte)
1字节 = 8位
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1T = 1024GB
计算机数据表示形式
数据来说的话就是 数值型数据 和 非数值型数据
数值型数据
数值型数据就是你能够进行算数运算的并且能够得到一些明确数值概念的一些数据,比如进制的那些数据
二进制:0 - 1 (逢二进一) 10 = 2
八进制:0 - 7 (逢八进一) 10 (到八的时候用这个表示)
十进制:0 - 9 10
十六进制:0 - 9、a - f 10 (16进制我们想用一位去表示,但是 0-9 已经是极限了,所以用字母去替换它)
进制转换
十进制转二进制:
1.短除法:除2倒取余
2.拆分法:拆分成2的几次方的和 // 对应的位有这个几次方就写上1,没有就写0
3.计算器:程序员模式
66 = 1000010
拆分:
64 = 2的6次方
2 = 2的1次方
1000010
二进制转十进制:
2的次方和,从右向左从 0 开始依次增加(把所有一的位加起来)
101100 = 0 + 4 + 8 + 32 = 44
八进制转二进制:
一位八进制用3位二进制表示,以数字0开头
031 = 011 001
0765 = 111 110 101
二进制转八进制:
从低位开始,三个二进制为一组是一位八进制,不够补零 (可以使用 421 码)
100100 = 044
1011010011 = 001 011 010 011 = 01323
十六进制转二进制:
一位十六进制用4位二进制表示,十六进制的特点:0x开头(8421)
0xab = 1010 1011
0x3ce = 0011 1100 1110
二进制转十六进制:
从低位开始,四个二进制为一组是一位十六进制,不够补零 (可以使用 8421 码)
1100101010 = 0011 0010 1010 = 0x32a
非数值型数据
非数值型数据就是 ascii 码
在终端输入 man ascii
\0 ascii 码是0 \0 一般作为字符串的结束标志
\n 10 \n 一般表示换行
空格(SPACE) 32
字符0 48
字符9 57
A 65
Z 90
a 97
z 122
// 对应的字符 1-9减去48就是我们想要的数字 1-9
字符0 - 48 = 数字0
大写字母 + 32 = 小写字母
小写字母 - 32 = 大写字母
词法符号
主要分为5部分:
关键字、运算符、标识符、分隔符、标点符号
词法符号就是你在程序设置的时候在里面规定的一些由几个字符组成的一些简单的有意义的最小的语法单位
关键字
存储类型:
auto(自动) static(静态) extern(外部引用) register(寄存器)
数据类型:
char(字符型) short(短整型) int(整型) long(长整型) float(单精度浮点型) double(双精度浮点型) { signed(有符号的) unsigned(无符号) }
构造类型:
struct(结构体) union(共用体) enum(枚举)
选择结构:
if else switch case default
循环结构:
for while goto do { break continue }(循环控制语句)
其他(其他功能):
void(空类型) typedef(重定义) const(常量化,是只读的) sizeof(计算数据所占空间大小的) volatile(防止编译器优化) return(函数返回值) typedef(定义数据类型)