Linux软件编程:shell
学习接口调用-->软件操作流程和思想-->软件设计思想和流程架构
1.IO操作文件
2.多任务编程
3.网络编程
4.数据库编程
一、Linux系统概述
1.世界上第一款操作系统:unix
2.操作系统存在意义:为了屏蔽底层不同的硬件平台,为上层提供统一的接口
3.GNU:开源组织,GPL协议
4.林纳斯Linux重写了unix操作系统,类unix操作系统
5.Linux应用场景:服务器、嵌入式
6.GNU:Linux、Apache,Mysql,Python,LAMP
二、Linux系统简介
1.常见Linux系统:Ubuntu、Debian、Redhat、CentOS等
2.Linux操作系统是操作系统的核心,也称内核
3.linux内核的主要功能:内存管理、多任务管理、文件系统管理、多任务间通信、网络管理
三、shell命令
(一)shell的主要作用(shell是操作系统的外壳)
1.保护linux内核,防止用户直接操作内核导致异常问题
2.命令解释器的作用(f翻译助理),用户通过命令给shell,并转换为对应的内核代码实现功能
(二)shell命令的执行流程:用户->shell命令->内核->硬件->用户
(三)常用的shell命令
1.基本shell命令:ls、cd、touch、rm、mkdir、rmdir、cp、mv
2.文件查看命令
2.1cat(cat+文件名):查看文件中内容
2.2head(head+文件名):查看文件开头内容
head -n行数 文件名:查看前n行
2.3tail(tail+文件名):查看文件末尾内容
tail -n行数 文件名:查看后n行
3.文件查找命令
3.1find(find .-name 文件名):在当前目录下查找文件
3.2查找包含某个字符串的文件:find . type f -print0 | xargs -0 grep -1 "字符串"
3.3whereis(whereis valgrind):查找二进制可执行文件
4.通配符
4.1 *:(ls file*.txt)匹配任意长度、任意字符的文件名
4.2 ?:(ls file_??.txt)匹配一位长度、任意字符的文件名
4.3 []:(ls file_[1-5].txt或者ls file_[^3].txt或者ls file_[1,3,5].txt)匹配一位长度、指定字符的文件名
5.常见命令
5.1echo(echo "hello"):在终端显示
5.2grep(grep "字符串" 文件名):查找包含字符串对应的行并显示
6.管道:将前面命令的输入作为后续命令的输入
6.1./a.out | grep "字符串"
6.2ls file* | grep ".sh"
7.重定向:将原本要输出在终端的内容定向到文件中
7.1覆盖重定向(>):原来被覆盖
7.2追加重定向(>>):在原来基础上加上
8.压缩和解压命令
8.1tar.gz格式
压缩:tar -zcvf 文件名.tar.gz 目录名/*
解压:tar -zxvf 文件名.tar.gz
8.2tar.bz2格式
压缩:tar -jcvf 文件名.tar.bz2 目录名/*
解压:tar -jcvf 文件名.tar.bz2
9.用户管理命令
9.1useradd(sudo useradd 用户名):新建用户
9.2userdel(sudo userdel 用户名):删除用户
9.3passwd(修改密码):sudo passwd 用户名
9.4su(切换用户):su 用户名 exit 退出当前用户
9.5chmod(修改文件权限):
9.6chown(修改文件的所属用户):sudo chown 用户名 文件名
9.7chgrp(修改文件的所属组):chgrp 组名 文件名
四、shell脚本
(一)编程语言分类
1.编译型语言
1.1先编译在运行
1.2有丰富的数据类型,擅长计算
1.3执行效率高
1.4开发效率低
1.5C、C++、C#、java
2.解释性语言
2.1边编译边执行
2.2擅长对系统维护管理
2.3执行效率高
2.4开发效率低
2.5shell、python、javascript
(二)shell脚本编程(本质:一系列shell命令的集合)
1.编写步骤
1.1编写脚本文件:vim filename .sh
1.2使用chmod命令为脚本加上执行权限:chmod 0777+x filename.sh
1.3运行脚本:./filename.sh
2.指定脚本对应的运行shell:#!bin/bash
3.shell脚本的输入和输出
3.1输入(read filename): 从终端接收输入放入filename变量中
3.2输出(echo $filename):将变量filename中的内容打印在屏幕上
4.shell脚本中的引导
4.1单引号(echo'$filename'):原封不动打印里面内容
4.2双引号(echo"$filename"):将里面的变量换成对应的值打印
4.3倒引号(echo`seq 10`):将里面内容当命令来处理
5.shell中的变量
5.1环境变量(HOME、PWD、PATH):shell自带的一些变量,在程序运行时已经存在
5.2位置变量
5.3自定义变量:value = 0 $value
6.分支结构
6.1if分支(test可以用[]代替)
①基本结构
②表达式可以由test命令实现(man test)
6.2case分支
7.循环结构
7.1while
while 表达式
do
语句块
done
7.2uniti (判断条件与while相反)
while 表达式
do
语句块
done
7.3for
for i in 数据集
do
语句块
done
8.数组的使用
9.函数