
四、Linux软件编程1. 操作系统一款软件为了屏蔽底层不同的硬件平台为上层提供统一的接口实现通用的软件代码PC三大操作系统Unix 世界上第一款操作系统Linux GNU GNUs Not Unix C语言编写服务器嵌入式Windows C/C2. Linux操作系统1Linux内核5大功能内存管理多任务调度文件系统的管理Linux系统中一切皆是文件多任务间的通信网络通信2Linux内核1. Linux内核是由系统调用组成的一些纯C代码2. 不允许与用户直接交互3. 内核功能复杂不容易被调用所以通过shell编写一系列命令来完成内核功能命令解释器3shell作用1. 保护内核2. 命令解释器4库函数1. 库函数是对系统调用的封装能够处理一些复杂的应用场景2. 系统调用是Linux内核中的函数接口只有在Linux系统中才能使用功能强大但十分简练3. 库函数可以移植所以具有通用性4.1 Shell1. shell命令1基础命令1. lsls -lls -a文件类型bblock 块设备文件ccharacter 字符设备文件ddirectory 目录文件-普通文件llink 链接文件ssocket 套接字文件ppipe 管道文件2. touch创建文件3. rm删除文件4. mkdir创建文件夹5. rmdir删除空文件夹6. rm -rf删除非空文件夹7. cp拷贝文件如果拷贝目录文件需要加 -rf选项8. mv移动文件2文件查看命令1. cat功能查看文件中的内容使用示例cat filename2. more/less3. head/tailhead/tail -n 行数 文件名3文件查找1. find功能在当前目录下找与文件名对应的文件路径find . -name 文件名2. grep功能打印出文件名中所有与字符串匹配的行grep 字符串 文件名4通配符*:匹配任意长度任意字符的文件名?:匹配一位长度任意字符的文件名[]:匹配一位长度指定字符的文件名file_*.txtfile_??.txtfile_[1,3,5].txtfile_[1-5].txtfile_[^6].txt5压缩解压命令压缩tar -zcvf filename.tar.gz dirname/*tar -jcvf filename.tar.bz2 dirname/*解压tar -zxvf filename.tar.gztar -jxvf filename.tar.bz26组合命令1. 管道将前面命令的输出作为后续命令的输入ps -ef | grep bash2. 重定向将前面命令的输出重定向到文件中 覆盖重定向 追加重定向ps -ef file.txt7其余命令1.echo将内容显示在终端2.history查看终端输入过的历史命令3.du查看文件大小du -m 文件名/目录名du -k 文件名/目录名4.od按照指定的方式查看文件中的内容od -c file.txt5.date查看时间和日期6.uname查看内核版本、平台架构uname -a7.ifconfig查看网卡信息8.ping测试主机与指定IP地址是否能够网络连通8dpkg工具集1.安装软件sudo dpkg -i 软件包名.deb2. 卸载软件sudo dpkg -P 软件名3. 查看安装是否成功dpkg -l 软件名9apt-get工具集1. 一定有网2. 设置apt-get工具集的源3. 下载并安装软件sudo apt-get install 软件名4. 卸载软件sudo apt-get remove 软件名 --purge2. shell编程1编译型语言1. 有丰富的数据类型2. 先编译再执行3. 执行速度快4. 开发效率低5. 数据的运算和处理2解释型语言1. 所有内容都是字符串2. 边翻译边执行3. 执行速度慢4. 开发效率高5. 系统的开发和维护3编写shell脚本并执行的步骤1.打开文件并编写代码vim filename.sh2.加上执行权限chmod x filename.sh3.运行脚本./filename.shshell脚本本质就是一系列shell命令的集合4. shell中的变量1环境变量PWDHOMEPATH2位置变量$0文件名$1给脚本传参$#传入参数个数$$脚本运行时的进程ID号$?上一条shell语句执行的结果3自定义变量变量名值5. shell中的引号双引号打印时会替换成变量的值单引号打印单引号中的内容不变倒引号将引号内部的内容作为一个命令使用6. shell脚本中的输入和输出echo 输出read 输入7. if分支语句if 判断条件thenelsefi8.case分支语句case 变量名 in值1)语句;;值2)语句;;值3)语句;;*)语句;;esac9.while循环while 条件do语句done10.for 循环#for i in 1 2 3 4 5#for i in {1..100}#for i in seq 100dodone