Linux进阶--软件编程
用户->shell->内核->硬件设备->用户
shell命令:
文件查看:
文件内容能在终端显示的文件叫做ascii码文件----代码,文章
文件内容不能在终端显示的叫做二进制文件------图片,视频,压缩包
od -c: 以八进制ascii的值显示内容
head:查看文件开头内容(默认10行)
head -n 5:查看头5行内容
tail: 末尾内容(和head类似)
man +N:查看对应功能

find 文件夹 -name 文件名---查找文件路径
通配符:*:匹配任意长度任意字符的文件名 例如 txt.*---匹配以txt开头的文件
?:匹配n个字符的文件(n取决与?的个数)
\]:匹配一位指定字符的文件,指定字符在\[\]内 通配符可用于所有命令 whereis:查找指定内容的路径 whereis 二进制文件/程序 grep '字符串' ----找相关的带字符串的名字 重定向 \>\>将终端内容重新定向到一个文件中,将原来的内容基础上追加新的内容 \>将原来的内容覆盖掉 管道 ps -ef \| grep bash 将前面命令输出作为后续命令输出。 ps -ef 查看进程命令 echo---在终端上打印内容 du-------测试文件大小 压缩: tar -zcvf 压缩文件包名.tar.gz 文件夹 tar -jcvf 压缩包名.tar.bz2 解压: tar -zxvf 压缩文件包.tar.gz tar -jxvf 压缩文件包名.tar.bz2 #### linux配置网络 查看IP地址 1.ifconfig 查看IP地址 2.配置步骤 将虚拟机设置为NAT模式------NAT模式:通过操纵Windows上网使ubantu有网 桥接模式:ubantu直接操作网卡 点击虚拟机,点击设置,点击网络适配器,选择NAT模式,点击确定 3.配置IP地址 sudo vim/etc/network/interfaces网络配置 修改文件为: auto lo iface lo inet loopback auto ens33 iface ens33 inet dhcp 4.保存并退出 5.重启网络 sudo/etc/init.d/networking restart #### 下载应用 apt-get工具集: 1.设置apt-get工具的源 2.找到software,选择software \& updates 3.Download form 选择"other"-\>"china"-\>"mirrors.aliyun.com" 执行命令:1.sudo apt-get autoclean 2.sudo apt-get update 3.sudo apt-get install -f 4.安装软件 sudo apt-get install 软件名 5.卸载软件 sudo apt-get remove 软件名 6.查看是否安装成功 dpkg -l 软件名 7.dpkg -i 软件包名.deb #### IO文件 1.io输入输出,操作对象是文件 ###### 2.Linux文件类型: b block 块文件,按块扫描设备信息的文件 c character 字符设备文件,按字符设备扫描设备的文件 d directory 目录文件 存放文件 - 普通文件 存放数据 图片、视频、压缩包、文本文件 l link 连接文件 快捷方式 s socket 接字文件 套用于套接字通信 p pipe 管道文件 用来进程间通信 ###### 3.标准io,文件io 标准io是库函数,有缓存 文件io是系统调用,无缓存 系统调用:功能强大,应对复杂场景不够灵活 库函数 ;针对系统调用的封装,使用方便灵活 标准io 可以用于windows或者Linux平台使用 文件io只能在Linux系统平台使用 4.标准io语法函数 getchar putchar scanf printf gets puts 5.凑够文件中读写数据的流程: 打开文件-\>读写文件-\>关闭文件 fgetc/fputc 单个字符的读写 fgets/fputs 字符串的读写 6.函数接口: fopen 使用示例: ```cpp FILE *a=NULL; a=fopen("文件名","mode"); ``` FILE \*fopen(const char \*pathname,const char \*mode); 功能: 打开pathname对应的文件并与其建立一个文件流指针 参数: pathname:要打开文件路径的字符串 mode: r 只读 文件不存在则报错,文件存在则打开 r+ 读与写 文件不存在则报错,文件存在则读写打开 w 写 文件不存在则创建,文件存在将文件内容清空,只写打开 w+ 写读 文件不存在则创建,文件存在将文件内容清空,只写读打开 a 追加只写 文件不存在创建,文件存在则追加只写打开 a+ 追加写读 文件不存在创建,文件存在则追加读写打开 ###### 7.文件流: 1.具有方向性 2.具有连续性 3.具有顺序性 句柄:操作对象的一个抽象 fclose ----int fclose(FILE \*stream); 功能:关闭文件,释放文件流指针 stream:文件流指针 和fopen成对出现 8.特殊的三个流 stdin: 标准输入流 从终端读取数据 关闭后不能读取数据(scanf,gets) stdout: 标准输出流 向终端打印数据 关闭后不能输出数据(printf,puts) stder: 标准出错流 向终端打印数据 关闭后不会报错 程序默认打开,无需用fopen打开 真正操作硬件的是Linux的内核,但用户操作的是shell ###### 缓存: 1.全缓存 缓存区满刷新 刷新条件: 1.满4096kb 2.使用flash强制刷新 3.程序结束刷新 2.行缓存 刷新条件: 1.满1024kb 2.遇到\\n强制刷新 3.使用flash强制刷新 4.程序结束刷新 与终端建立的缓存 例如: stdin stdout 3.不刷新 条件:0kb stder 用于人机交互、界面控制、出错处理等需要及时操作的条件 改变缓存类型的方法: setvbuf(FILE \*stream,char \*buf,int mode,size_t size) 参数意义: stream:数据流 buf: 缓存空间首地址 mode:缓存方式 size:缓存的字节大小 setvbuf(stdout,NULL,_IONBF,0); //设置为不缓存 setvbuf(stdout,a,_IOFBF,4096); //设置为全缓存 setvbuf(stdout,a, _IOLBF,1024); //设置为行缓存 ###### 读写文件 fputc:向流中写入一个字符 int fputc(int c,FILE \*stream) c:写入字符的ascii值 成功则返回字符的ascii值