Linux软件编程
- 操作系统概念:
操作系统可以看成是一个软件,功能用来屏蔽底层不同的硬件平台,为上层应用提供统一的接口和运行环境。

- 操作系统组成:
-
- Linux内核
- 内存的管理
- 文件系统的管理
- 任务的调度
- 多任务通信
- 网络功能管理
- 硬件设备管理
-
- Shell
- 保护内核
- 命令解释器
-
- 库函数
3.man用户手册
标准命令 系统调用 库函数 设备说明 文件格式 娱乐 杂项 管理员命令
一、Shell命令
1.基本命令
除了刚开始学过的命令(例如ls、cd、cp mv等)外,还有许多其他命令
(1)文件查看指令
- cat 查看文件内容
cat 文件名
- head/tail 查看文件开头/结尾 内容
head -n 10 文件名 // 查看文件前十行内容
tail -n 10 文件名 //查看文件后十行内容
(2)查看搜索
- grep
grep "字符串" 文件名
(3)管道
| 将前面命令的输出作为后续命令的输入
head -n 10 filename | grep "字符串" //在文件前十行查找该"字符串"
tail -n 100 /usr/include/stdio.h | grep "extern"
ps -ef | grep bash
(4)重定向
将原来输出在终端的内容写入到文件中
> 覆盖重定向 //将文件内容覆盖了
"hello world" > test.txt
>> 追加重定向 //接到文件内容后面
"hello world" >>test.txt
(5)通配符
- * 匹配任意长度字符
- ?匹配一位长度任意字符
-
\] 匹配一位长度指定字符
(6)chmod
修改文件权限
r读(4) w写(2) x执行(1)
三组rwx:
- rwx:创建文件的用户对文件是否拥有读写执行的权限
- rwx:创建文件的用户的同组用户对文件是否拥有读写执行的权限
- rwx:其余人是否拥有读写执行的权限
chmod 0777 * //使所有人都有读写和执行权限
chmod +/-r/w/x //使加上或者减去读/写/执行的权限
(7)chgrp
修改文件所属的组
chgrp 用户名 文件名
(8)chown
修改文件所属的用户
chgrp 用户名 文件名
(9)压缩和解压缩
.tar.bz2
.tar.gz
压缩:
tar -jcvf filename.tar.bz2 dirname/*
tar -zcvf filename.tar.gz dirname/*//两种形式都可,将dirname中的所有文件压缩到名为filename的压缩包中
解压缩:
tar -jxvf filename.tar.bz2
tar -zxvf filename.tar.gz
(10)文件查找
find 目录 -name"文件名"
2.其余命令
(1)echo 在终端显示对应的内容
(2)du 统计文件大小
du -m 文件名
du -k 文件名 //m和k为内存大小单位
(3)fdisk 查看磁盘分区信息
fdisk -l
(4)sudo 使用超级用户的权限来执行某个操作
sudo fdisk -l
(5)date 查看日期
(6)whoami 查看当前登录的用户
(7)ps 查看进程信息
ps -ef
(8)top根据CPU占用率查看进程信息
top
q //退出
(9)ifconfig查看网卡信息
(10)ping测试与目的主机是否连通
ping 8.8.8.8
二、dpkg工具集
#安装软件
sudo dpkg -i filename.deb
#查看软件是否安装成功
sudo dpkg -l 软件名
#卸载软件
sudo dpkg -P 软件名
三、aptget工具集
可以自己根据配置的源下载对应软件
根据软件依赖关系安装软件所需要的所有依赖

#安装软件
sudo apt-get install 软件名
#卸载软件
sudo apt-get remove 软件名 --purg
四、shell编程
1. 解释型语言与编译型语言
- 解释性语言:边翻译边执行
- 开发效率高
- 执行效率低
- 不适合做数据运算
- 适合对系统管理
- python、shell
-
- 编译型语言:先编译再执行
- 开发效率低
- 执行效率高
- 适合做数据运算符,有丰富的数据类型
- c/c++、c#、java
2.Shell脚本开发流程
(1)编写Shell脚本
vim filename.sh
(2)加上执行权限
chmod +x filename.sh
(3)运行
./filename.sh
3.Shell脚本本质
本质是一系列Shell命令的集合
4.Shell脚本中的引号
(1)双引号 " "
双引号中的变量内容会进行替换
(2)单引号' '
单引号中的内容为字符串常量,不会改变,直接操作
(3)倒引号` `
倒引号中的内容作为命令来执行
5.Shell中的环境
(1)环境变量
- 环境变量:shell脚本中用来存放系统相关信息的变量
- PWD:存放当前所在目录的绝对路径
- HOME:登录用户的家目录
- PATH:系统软件默认的路径
- ...
(2)位置变量
-
$0:程序名
-
$1:执行脚本时传入的第一个参数
-
$2:执行脚本时传入的第二个参数
-
...
-
$#:传入参数的个数
-
$?:上一句语句运行的结果
-
:执行脚本对应的进程的ID号
-
i=0
-
str="hello world"
示例:

6.分支
(1)if
- 基本格式
if 表达式
then
语句块
elif 表达式
语句块
fi
- test 检测文件类型,比较数值
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
-eq 等于
-ne 不等于
示例:判断两个数中的最大值
cpp
#!/bin/bash
read num1
read num2
#if test $num1 -gt $num2
#if [ $num1 -gt $num2 ]
then
echo "num1 = $num1"
else
echo "num2 = $num2"
fi
(2)case
- 基本形式
case 变量值 in
9)语句块
;;
8)语句块
;;
7)语句块
;;
*)语句块
;;
esac
示例:接收一个数,输出它的大写
cpp
#!/bin/bash
read num
case $num in
9)echo "玖"
;;
8)echo "捌"
;;
7)echo "柒"
;;
6)echo "陆"
;;
*)echo "不认识"
;;
esac
7.循环
- for
示例:0-100求和
cpp
#!/bin/bash
sum=0
i=0
for i in `seq 100` //seq为序列
do
sum=`expr $sum + $i` //expr为计算表达式
dome
echo "sum = $sum"
- while
示例:
cpp
#!/bin/bash
sum=0
i=0
while[$i -le 100]
do
sum=`expr $sum + $i`
((i++))
dome
echo "sum = $sum"
- until
示例:
cpp
#!/bin/bash
sum=0
i=0
until[ $i -gt 100 ]
do
sum=`expr $sum + $i`
i = `expr $i + 1`
done
echo "sum = $sum"
8.数组
示例:
cpp
#!/bin/bash
array=(nice to meet you)
echo ======================
echo ${array[0]}
echo ${array[1]}
echo ${array[2]}
echo ${array[3]}
echo ======================
echo ${array[*]}
9.函数
示例:
cpp
#!/bin/bash
add()
{
sum=`expr $1 + $2`
echo $sum
}
ret = `add 520 1`
echo "ret = $ret"