1.文件系统结构
windows:是以分区的形式存储文件,分区在目录之上
linux:是以目录的形式储存文件,目录在分区之上
2.linux下一切皆文件
七大文件类型:
- 普通文件:(.txt ,.c ,.cpp )
d 目录文件: (类似文件夹)
p 管道文件:(用于进程之间通信)
b 块设备文件:(dev)
c 字符设备文件:()
l链接文件:(硬链接,软链接)
s 套接字:(应用于网络间通信)
3.ls的用法
ls -a ----显示隐藏文件(.开头的)一些配置文件
ls -l ----显示文件详细信息
ls -R ----显示文件夹里的内容,递归查询(迭代ls)
ls -i ----查询文件的inode号 每个文件的inode号不一样,硬链接产生的文件inode号一样,是同一个文件,而复制粘贴的inode号不一样,是不同的文件
4.文件的详细信息
drwxr-xr-x 2 hqyj hqyj 4096 8月 4 2021 Desktop
d :文件类型
rwxr-xr-x :文件权限 读,写,执行。用户,组,其他 chmod改权限
2 :硬链接数
hqyj :用户名
hqyj :组名
4096 :文件大小
8月 4 2021 :最后修改的时间
Desktop :文件名
5.cd的用法
cd 路径 去到某个路径下
cd . 去到当前
cd ..去到上一级
cd 去到根目录
cd ~去到家目录(~等价于/home/用户名)
cd - 返回上一步
6.创建与删除
mkdir dirname(目录名)
rm -r dirname删除目录
rmdir dirname删除空目录
touch filename文件存在就更新时间戳,不存在就创建一个普通空文件😊
touch {1,2,3,4,5,6}.c 创建多个文件
vi filaname 利用vi编辑器床边文件并打开
rm filaname 删除文件
diff file1file2:比较两个文件内容是否相同,罗列出不同的行
cat filename 查询文件内容
mv file1 file2 重命名,把file1,重命名为file2
mv可移动文件夹,在当前文件夹移动等于重命名,移动到其他文件夹就是移动
7.vi编辑器
vi/vim filaname文件存在则打开,文件不存在则创建并打开
三种模式;
1.命令行模式:
复制 nyy(n代表行数)
粘贴 p
剪切 ndd
撤销 u
反向撤销 ctrl r (撤销撤销)
查找 /内容,n向下查找,N向上查找
代码对齐 gg=G
输入1G:文件开头
输入G:文件结尾
2.插入模式(编辑模式):
在命令行模式的基础上按i/a/o,进入插入模式,在任意模式的基础上按esc,进入命令行模式, A进入到当前行的末尾
3.底行模式:命令行模式下输入: 进入底行模式
w保存 q退出 wq保存并退出 q!强制退出 wq!强制保存并退出
w filename 另存为
替换:范围 s/str1/str2 将范围内的每一行的第一个str1替换str2💖💖💖 :% s hello/HELLO/g :1,. s/hello/Hello/g
范围: .当前行 $表示末尾 %表示全文替换等价于1,$ g全部替换 (g用/加在最后)
设置行号:setnumber 取消行号:setnonumber
跳转到number行 :number
块剪切: :范围 y 块复制 eg:28,58y 复制28~56行
:范围 d 块剪切 粘贴要去命令行模式按p
8.cp的用法
cp file1 file2 :把file1复制为file2(复制粘贴)
cp 文件的路径1 文件的路径2:复制路径1的文件到路径2
eg:cp first.c ../test.c 复制并重命名为text.c
cp file 文件的路径:把file复制到路径下
cp -r/-a dirname1:复制目录
9.快捷键
创建终端:ctrl+shift+n(如已有终端,创建的终端路径与前终端相同)
ctrl+alt+t(创建一个终端)
结束终端:命令exit
切换终端:alt+tab
清屏:ctrl+l(命令 clear)
↑:向上查询历史输入命令
↓:向下查询历史输入命令
Tab:补全(不唯一时,按两次可以提示)
ctrl+c:结束进程
10.编译的4个阶段
1.预处理
展开头文件与宏、删除注释
gcc-E file.c -o file.i(-o是重命名)
2.编译
检查语法错误,生成汇编文件
gcc -S file.i -o file.s
3.汇编
生成二进制文件
gcc -c file.s -o file.o
4.链接
链接库 ,生成可执行文件
gcc file.o -o file
11.运算符
1.算术运算:
+ - * / % ++ -- (++在前先加后用,++在后先用后加)
=(赋值) ==(值是否相等) ===(全等,值与类型都等)+= -= *= /=
2.关系运算:> < >= <= == !=
c语言中有短路法则:当程序得到结果就不会往下执行了
eg: a>b>c;不能这样写 (改:a>b&&b>c)
3.逻辑运算: &&(逻辑与)同真为真 ||(逻辑或)同假为假0 !(逻辑反)
4.位运算符: ~(位反) &(位与) |(位或) ^(异或,相同为假,不同为真(生孩子符号,不同才为真)) >>:右移 <<:左移 移位之后补0 01100110>>2 00011001<<2 01100100
负数先算补码,移位后再转换为原码,才能读值(负数移位符号位不变,xyz,x代表符号位,只移yz,) 补码=反码+1
-23 :1001 0111 反码 11101000 补码 11101001 🙌🙌🙌
<<3 1100 1000(补码)
>>3 1000 1101(补码)
多个字节后 = 时,移位不会溢出负数移位,左移补0,右移补符号位