Shell命令:
1.基本的shell命令:
1.ls
ls -a
ls -l
2.mkdir
3.rmdir
4.touch
5.rm -rf
6.pwd
7.cp
8.mv
文件查看命令:
1.cat 文件名
查看文件中的内容
2.grep 字符串 文件名
在文件名对应的文件中查找字符串相关的行
3.head -n 文件名
查看文件中的前n行
4.tail -n 文件名
查看文件中的最后n行
文件查找命令:
1.find 路径 -name 文件名
在路径下查找文件名对应的文件
2.locate 文件名
查找文件名对应的文件所在的路径
3.whereis 文件名
查找已经安装的二进制文件所在路径
压缩解压命令:
.tar.gz
.tar.bz2
压缩:
tar -zcvf 文件名.tar.gz 文件名/*
tar -jcvf 文件名.tar.bz2 文件名/*
解压:
tar -zxvf 文件名.tar.gz
tar -jxvf 文件名.tar.bz2
du -m/k 文件名 查看文件占用的空间大小(Mb/Kb)
通配符:
*:匹配任意长度任意字符的文件名
?:匹配一位长度任意字符的文件名
[a-z]:匹配a-z之间的任意字符
[1-9]:匹配1-9之间的任意字符
管道:
将前面命令的输出作为后续命令的输入
ps -ef | grep bash
查看进程中与bash相关的进程
重定向:
> 覆盖重定向
>> 追加重定向
标准IO
stdio.h
主要操作普通文件
1.打开文件
2.读写文件
3.关闭文件
特殊的流
stdin 标准输入流 行缓存
stdout 标准输出流 行缓存
stderr 标准错误流 不缓存
gets、getchar、scanf是基于stdin实现的
puts、putchar、printf是基于stdout实现的
perror是基于stderr
缓存:
1.全缓存 4096 4k
缓存区满刷新
与文件建立的缓存一般为全缓存
刷新条件:
1.缓存区存满了刷新
2.fflush函数接口刷新
3.关闭流时会刷新
2.行缓存 1024 1k
遇到\n刷新
与终端建立的缓存都是行缓存
刷新条件:
1.缓存区满刷新
2.遇到\n刷新
3.fflush函数刷新
4.关闭流时会刷新
3.不缓存 0 0k
立即刷新
刷新条件:
1.立即刷新
1.对设备的操作不允许缓存
2.通信不允许缓存
3.出错处理不缓存
1.fopen
FILE *fopen(const char *pathname, const char *mode);
功能:
打开pathname对应的文件并建立一个文件流
参数:
pathname:文件路径
mode:打开方式
r 只读 如果文件存在则只读打开
如果文件不存在报错
r+ 读写 如果文件存在则读写打开
如果文件不存在报错
w 只写 如果文件存在则清0,只写打开
如果文件不存在则创建
w+ 写读 如果文件存在则清0,读写打开
如果文件不存在则创建
a 追加只写 如果文件存在则追加只写打开
如果文件不存在则创建
a+ 追加读写 如果文件存在则追加读写打开
如果文件不存在则创建
返回值:
成功返回FILE*的指针
失败返回NULL并且将错误码置位
2.fclose
int fclose(FILE *stream);
功能:
关闭流
参数:
stream:文件流
返回值:
成功返回0
失败返回EOF(-1)
3.setvbuf
int setvbuf(FILE *stream, char *buf, int mode, size_t size);
功能:
改变流的缓存类型
参数:
stream:文件流
buf:缓存区的首地址
mode:
_IOFBF 全缓存
_IOLBF 行缓存
_IONBF 不缓存
size:缓存区大小
返回值:
成功返回0
失败返回非0
2.fgetc、fputc
int fputc(int c, FILE *stream);
功能:
向流中写入一个字符
参数:
c:写入的字符
stream:文件流指针
返回值:
成功返回写入字符的ASCII码值
失败返回EOF(-1)