Linux C学习笔记1

内容为学习笔记,以后学习中会随时增删所学内容

快捷键及 操作命令

常用快捷键

ctrl c:取消命令,并且换行
ctrl u:清空本行命令
Ctrl + insert:windows/Linux下复制文本
Shift + insert:windows/Linux下粘贴文本
tab:可以补全命令和文件名,如果补全不了快速按两下tab键,可以显示备选选项
##常用命令
su - :切换到root权限,还可以用su root命令,su +用户名可以切换到任意用户
sudo +命令:命令的权限为root权限
ls: 列出当前目录下所有文件,蓝色的是文件夹,白色的是普通文件,绿色的是可执行文件

-l    // 展示详细信息;
-h    // 人性化的显示详细信息;
-a    // 显示所有的文件(包括被隐藏的文件, 所有被隐藏的文件都是以.或..开头的);
–help // 显示此帮助信息并离开
ll    // 等价于ls -la

cp XXX YYY: 将XXX文件复制成YYY,XXX和YYY可以是一个路径,比如…/dir_c/a.txt,表示上层目录下的dir_c文件夹下的文件a.txt

功能相当于复制 + 粘贴 + 重命名
Example:
	cp a/tmp.txt b //复制a文件夹下的tmp.txt 到b文件夹
	cp a/tmp.txt b/new_tmp.txt //复制a文件夹下的tmp.txt到文件夹b 并重命名)若复制文件夹后面加-r
	cp a b -r //将目录a及下面的复制过到b目录下

目录切换cd(change directory)操作

相对路径:用"./“表示
绝对路径:从根目录开始到指定目录,用cd /表示
当前目录:用pwd(print working directory)确认当前目录在哪里,用”."表示
上级目录:用cd ..切换到上一目录
家目录:用cd ~"切回到家目录
上一个目录:用cd -在这里插入代码片"切回上一次的路径

文件查找命令

find命令

将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:


# find . -name "*.c" //支持通配符查找方式
# find 指定文件夹名 -name 文件名 //将当前目录及其子目录中的所有文件列出:
# find . -type f 

grep命令

grep abc *file //命令用于查找文件里符合条件的字符串。在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。此时,可以使用如下命令:
grep -r update /etc/acpi //以递归的方式查找符合条件的文件,-r是递归的查找,-n列出行号,*代表所有的文件。

解压与压缩tar命令

tar常用选项:
-c:(create):表示闯将用来生成文件包,表示压缩
-x: 表示提取,从文件包中提取文件
-z:使用gzip方式进行处理,与"c"结合表示压缩,与x结合表示解压缩。
-j:使用bzip2方式进行处理,与x结合表示解压缩。
用gzip:
压缩:"tar czf 创建的压缩文件名(test.tar.gz) 指定压缩的文件"
解压:"tar xzf test.tar.gz"
用bzip:
压缩:"tar cjf 创建的压缩文件名(test.tar.gz2) 指定压缩的文件"
解压:"tar xjf test.tar.gz2"

文件管理

mkdir XXX: 创建目录XXX(-p递归创建目录)
rmdir XXX: //删除空文件夹
rm XXX //文件删除

Example:
	rm tmp1.txt tmp2.txt //删除多个文件
	rm *.txt //删除所在目录所有的txt文件
	rm a/ //删除文件夹a里面所有的的东西
	rm -r //删除文件夹,不管文件夹有没有文件
	rm /* -rf删除所有文件 慎用!!!

mv XXX YYY:

//将XXX文件移动到YYY,和cp命令一样,XXX和YYY可以是一个路径;
//重命名也是用这个命令 (剪切+粘贴+重命名)
Example:
	mv a/tmp.txt b/ (将a文件夹下的tmp.txt移动到b文件夹下)
	mv b/tmp.txt a/new_tmp.txt (将b文件夹下的tmp.txt移到a文件夹下并重命名)
	mv tmp2.txt new_tmp2.txt (重命名)

cat XXX: 展示文件XXX中的内容

linux文件属性

Alt
chown (change owner) : 修改所属用户与组。
chmod (change mode) : 修改用户的权限。

chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
类型对应单词简写
用户useru
groupg
其他otherso
全部alla

chmod增加和删除权限
使用符号+、-、=修改权限

//-rwxr-xr-- 
chmod u=rwx,g=rx,o=r 文件名  

文件类型
当为 d 则是目录
当为 - 则是文件
文件权限: 文件权限可以用字母代替也可以用对应数字代替

类型value
r: readable4
w:writeable2
x: executable(可执行的)1

例如

-rwxrwx--- 分数则是:
    owner = rwx = 4+2+1 = 7
    group = rwx = 4+2+1 = 7
    others= --- = 0+0+0 = 0

vi/vim命令

vi 编辑器有三种模式,各个模式侧重点不一样:
a) 一般模式(光标移动、复制、粘贴、删除)
b) 编辑模式(编辑文本)
c) 命令行模式(查找和替换)

Alt

退出命令描述
x保存当前文档并且退出。
q退出。
w保存文档 。
q!退出 vi/vim,不保存文档。

一般模式

命令描述
h
j
k
l
nG 或 ngg光标移动到第 n 行首。
n+光标下移 n 行。
n-光标上移n行
Ctrl + f屏幕向下翻一页,相当于下页
Ctrl + b屏幕向上翻一页,相当于上一页。
ngg光标移至第 n 行的行首(n 为数字,想要跳转的行)
G转至文件结尾

内容编辑增删:

命令描述
o在当前光标所在行的下方,新建一行,并转为编辑模式。
cc删除整行内容,不删除行。
dd删除该行,不提供修改功能。
ndd删除当前行向下 n 行。
x删除光标所在的字符,在编辑模式下使用backspace删除。
A在光标所在行的行尾,并转换为编辑模式。
yy复制当前行,nyy 复制当前行及其下面 n -1行。
p粘贴最近复制的内容。
s删除光标所在字符。
r替换光标处字符。
u撤销上一步操作

替换查找

命令描述
:%s/p1/p2/g将文件中所有的 p1 均用 p2 替换
%s/p1/p2/gc替换时需要确认
“s“全称:substitute 替换;
“g“全称:global 全局;
“c“全称:confirm,确认
/搜索内容从光标开始处向文件尾搜索

gcc编译器

编译工作的4步骤:
预处理 --> 编译 --> 汇编 --> 链接,完成就可以得到可执行文件
预处理:gcc -E .c源文件 -o 目标.i
编译: gcc -S 目标.i -o 目标.s
汇编: gcc -c 目标.s -o 目标.o
链接: gcc 目标.o -o 目标(可执行文件)
执行可执行文件 ./可执行文件
执行一步生成:gcc 源文件,默认得到可执行文件为 a.out,gcc -o 源文件····也可以生成可执行文件

计算机基本结构

基本结构:处理器、存储器、输入设备和输出设备
外存:位于电脑上,例如磁盘,U盘等。存CPU上暂时不使用的数据或程序
内存:运行内存,放在CPU正在使用的程序和数据,掉电数据丢失
寄存器:位于CPU内,是一个存和取速度很快的一个存储器,容量小,用于存储正在使用过的程序和数据
程序:计算机系统可识别的一组二进制可执行文件

数值数据

进制表示方法举例
二进制bb0100 0000
八进制0057
十进制9
十六进制用0x或0X0x54 0X3f

进制数之间的转换

二进制和十进制转换
b 1010 = 1 × 2 3 + 0 × 2 2 + 1 × 2 1 + 0 × 2 0   (①) \tag{①} b1010 ={1}\times{2}^{3} +0\times2^{2}+1\times2^{1}+0\times2^{0}\ b1010=1×23+0×22+1×21+0×20 ()

八进制和十进制转换
01010 = 1 × 8 3 + 0 × 8 2 + 1 × 8 1 + 0 × 8 0   (②) \tag{②} 01010 ={1}\times{8}^{3} +0\times8^{2}+1\times8^{1}+0\times8^{0}\ 01010=1×83+0×82+1×81+0×80 ()

十六进制和十进制转换
0 x 1010 = 1 × 16 3 + 0 × 1 6 2 + 1 × 1 6 1 + 0 × 1 6 0   (③) \tag{③} 0x1010 ={1}\times{16}^{3} +0\times16^{2}+1\times16^{1}+0\times16^{0}\ 0x1010=1×163+0×162+1×161+0×160 ()

十进制转其他进制用短除法
二进制与八进制之间转换
0752 = b 111   101   010   (④) \tag{④} 0752 = {b111 \ 101\ 010}\ 0752=b111 101 010 ()

b 001   111   100 = 0174   (⑤) \tag{⑤} {b001 \ 111\ 100} = {0174}\ b001 111 100=0174 ()

二进制与八进制之间转换
0 x a 7 e 2 = b 1010   0111   1110   0010   (⑥) \tag{⑥} 0xa7e2 = {b1010 \ 0111\ 1110\ 0010}\ 0xa7e2=b1010 0111 1110 0010 ()

0 x a 7 e 2 = b 0011   1101   1010   0010 = 0 x 3 d a 2 (⑦) \tag{⑦} 0xa7e2 = {b0011 \ 1101\ 1010\ 0010}={0x3da2} 0xa7e2=b0011 1101 1010 0010=0x3da2()

常见的字符转成对应的ASCII码值来表示

字符对应ASCII
‘\0’0
‘0’~‘9’48 依次加1
‘A’ ~ ‘Z’65 依次加1
‘a’ ~ ’z’97 依次加1

关键字–>数据类型

表示数据类型的关键字:char、 double、 enum、float、int、 long、short、 shruct、 union、 void
表示控制语句的关键字 :break、 case、 continue、 default、 do、 else、 for、goto、 if、 switch、 while
表示数据类型的关键字:auto、 extern(外部变量)、 register、 static、
其他关键字
const修饰词
return – 结束函数
volatile – 防止编译器优化
typedef – 对已经存在的数据类型惊醒重命名
signed/unsigned – 有无符号

unsigned/signed对应的二进制数计算

1)有符号数
有符号数 char类型 “1” 在内存中的存储: 0000 0001
有符号数 char类型 “-1” 在内存中的存储:
原码、反码、补码,并且有符号数的最高字节的最高位标识符符号位,0表示正数,1表示负数,负数在内存中以补码的形式存储
什么是补码? 补码 = 反码 +1
什么是反码? 反码 = 原码取反
-1 :原码1000 0001
反码1111 1110
补码1111 1111

-5:原码:1000 0101
反码:1111 1010
补码:1111 1011
2)无符号数
该怎么存就怎么存
取值范围:
signed char:1000 000 ~ 0111 1111
unsigned char: 0~1111 1111 0~255
练习
signed int : -231~231-1
unsigned int:0~2^32
signed short: -215~215-1
unsigned short: 0~2^16-1
signed long: -263~263-1
unsgned long: 0-2^64-1
浮点型数据,整数部分和小数部分
float 单精度 占4字节 小数点后面默认有6位:只能用约等于好进行判断,不能用等号判断
double 双精度 占8字节 小数点后面默认有6位

常量

常数:值不可以修改
变量:值可以修改

常量分类
整型常量
字符型常量:‘a’
长整型常量:78L
无符号整形常量:78U
字符串常量:“aaa” ------用双引号括起来,是字符串常量,字符串后面面添加‘\0’
宏定义

 #define PI 3.1415927

预处理就是对宏进行替换

#defineAD(x,y) x+y //宏函数定义

宏函数在定义时要给他的每一个表达式以及整个表达式都要加括号,因为在使用是他只是做简单的替换工作

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值