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