学习嵌入式第二十四天
文章目录
- Linux系统
- 1.Linux系统概述
- 2.Linux系统简介
- shell命令
- 1.常用shell命令
- 2.shell脚本
Linux系统
1.Linux系统概述
- 世界上第一款操作系统:Unix
- 操作系统的功能:为了屏蔽底层不同的硬件平台,为上层提供统一的接口
- 林纳斯:重写了Unix操作系统(Linux),也叫类Unix操作系统
- Linux应用场景:服务器、嵌入式
- GNU:Linux,Apache,Mysql,Python,LAMP
2.Linux系统简介
-
常见的Linux系统:Ubuntu、Debian、Redhat、CentOS……
-
Linux操作系统是操作系统的核心,也就是内核,内核的主要功能为:
- 内存管理
- 多任务管理
- 文件系统管理
- 多任务间的通信
- 网络管理
-
shell是操作系统的外壳,主要作用为:
- 保护Linux内核,防止用户直接操作内核导致的异常问题
- 命令解释器的作用,用户可以通过命令给到shell,并转换为对应内核代码实现功能
-
shell命令操作流程
用户输入shell命令,shell将命令转换为内核中的c语言,内核再控制硬件,最后反馈给用户
shell命令
1.常用shell命令
-
基本的shell命令
- ls
- 查看文件
- cd
- 进入目录
- touch
- 创建文件
- rm
- 删除文件
- mkdir
- 创建文件夹
- rmdir
- 删除文件夹
- cp
- 拷贝文件
- mv
- 移动文件
- ls
-
文件查看命令
-
cat
- 查看文件的内容
cat 文件名
-
head命令
- 查看文件开头内容
head -n 行数 文件名
-
tail命令
- 查看文件末尾内容
tail -n 行数 文件名
-
-
通配符
多用来搭配shell命令使用,操作多个文件
-
- 匹配任意长度,任意字符的文件名
ls file*.txt
-
?
- 匹配一位长度,任意字符的文件名
ls file_??.txt
-
[]
- 匹配一位长度,指定字符的文件名
ls file_[1-5].txt //从一至五都输出 ls file_[^3].txt //除了3,其余都输出 ls file_[1,3,5].txt //输出1,3,5的文件
-
-
管道
- 将前面命令的输出作为后续命令的输入
./a.out | grep "字符串" ls file* | grep ".sh"
-
重定向
-
将原本要输出在终端的内容定向到文件中
-
覆盖重定向(将原来的内容覆盖)
echo "hello" > file.txt
-
追加重定向(在原来内容的末尾添加新内容)
echo "hello" >> file.txt
-
-
-
文件查找命令
-
find命令
-
查找文件
find . -name 文件名
-
查找包含某个字符串的文件
find . -type f -print0 | xargs -0 grep -l "字符串"
-
-
whereis命令
-
查找二进制可执行程序
whereis valgrind
-
-
-
常见命令
-
echo命令
-
在终端上显示内容
echo "hello"
-
-
grep命令
-
查找包含字符串对应的行并显示
grep "字符串" 文件名
-
-
-
压缩和解压命令
-
.tar .gz格式
-
压缩
tar -zcvf 文件名.tar.gz 目录名/*
-
解压
tar -zxvf 文件名.tar.gz
-
-
tar.bz2格式
-
压缩
tar -jcvf 文件名.tar.bz2 目录名/*
-
解压
tar -jxvf 文件名.tar.bz2
-
-
-
用户管理命令
-
新建用户
sudo useradd 用户名
-
删除用户
sudo userdel 用户名
-
修改密码
sudo passwd 用户名
-
切换用户
su 用户exit //退出当前用户
-
修改文件权限
chmod 权限值 文件名0664 110 110 100 rw- rw- r-- 第一个rwx:创建该文件的用户对文件是否拥有读写执行权限 第二个rwx:创建文件同组的用户对文件是否拥有读写执行权限 第三个rwx:其余人是否拥有读写执行权限
-
修改文件所属用户
chown 用户名 文件名
-
修改文件所属组
chogrp 组名 文件名
-
2.shell脚本
-
编程语言的分类
- 编程型语言
- 先编译再运行
- 有丰富的数据类型,擅长计算
- 执行效率高
- 开发效率低
- c,c++,c#,java
- 解释型语言
- 边翻译边执行
- 擅长对系统维护管理
- 执行效率低
- 开发效率高
- shell,python,javascript
- 编程型语言
-
shell脚本编程
- 脚本的本质就是一系列shell命令的集合
-
编程步骤:
-
编写脚本文件
vim filename.sh
-
使用chmod命令为脚本加上执行权限
chmod + x filename.sh
-
运行脚本
./filename.sh
-
-
指定脚本对应的运行shell
#!/bin/bash
-
shell脚本的输入和输出
-
输入
#从终端接收用户输入放入filename变量中 read filename
-
输出
#将变量filename中的内容打印在屏幕上 echo $filename
-
-
shell脚本的引号
-
单引号
-
原封不动打印引号中的内容
echo '$filename'
-
-
双引号
-
将双引号中的变量替换为对应的值打印
echo "$filename"
-
-
倒引号
-
将引号中的内容当作命令来处理
echo `seq 10`
-
-
-
shell中的变量
-
环境变量
-
shell自带的一些变量,在程序运行时就已经存在
echo "$HOME" echo "$PWD" echo "$PATH"
-
-
位置变量
$0 :脚本的名称 $1 :执行脚本时传入的参数1 $# :传入参数的个数 $? :上一条shell命令的运行结果 $$ :脚本运行的进程编号
-
自定义变量
value=0 $value
-
-
分支结构
-
if分支
-
基本结构
if 表达式 then语句块 else语句块 fi
-
比较方法
-gt #大于 -lt #小于 -ge #大于等于 -le #小于等于 -eq #等于 -ne #不等于 -e #检测文件是否存在
-
-
case分支
-
基本结构
case 变量名 in常量1)语句;;常量2)语句;;常量3)语句;; esac
-
-
-
循环结构
-
while循环
-
基本形式
while 表达式 do语句块 done
-
-
for
-
基本形式
for i in 数据集 do 语句块 done
-
-
until
-
基本形式
until 表达式 do语句块 done
-
-
-
数组
#!/bin/bash array=("hello" "world" "how" "are" "you") i=0echo ================================ for ((i = 0; i < 5; i++)) do echo ${array[$i]} doneecho ================================ echo "${array[*]}"
-
函数
#!/bin/bash add() {sum=`expr $1 + $2`echo "$sum"return $sum } read num1 read num2 #获得函数内输出的字符串 ret=`add $num1 $num2` #打印函数的运行的值 echo "$?" #打印函数内输出的字符串 echo "ret = $ret"