【学习嵌入式day-21-Linux编程-shell命令】
Linux系统简介:
常见的linux系统:
linux系统是操作系统的核心,也成为内核,
内核的功能:内存管理、多任务管理、文件系统管理、多任务间的管理、网络管理
shell是操作系统的外壳,作用:
保护Linux内核,防止用户直接操作内核导致的异常问题
命令解释器作用:用户通过命令给到shell,并转换为对应的内核代码实现功能
常见的shell命令
ls 查看文件
cd 进入目录
touch 创建文件
rm 删除文件
mkdir 创建文件夹目录
rmdir 删除文件夹
cp 拷贝文件
mv 移动文件
shell命令的执行流程
文件查看命令:
cat命令:查看文件中的内容
cat 文件名
head命令:查看文件开头内容
head -n 行数 文件名
tail命令:查看文件末尾内容
tail -n 行数 文件名
通配符
用来搭配shell命令使用,操作多个文件
* :匹配任意长度、任意字符的文件命名
ls file*.txt
rm -rf* //删除所有文件
? :匹配一位长度、任意字符的文件名
ls file_??.txt
[] :匹配一位长度、指定字符的文件名
ls file-[1-5].txt //找1到5所有的文件
ls file-[^3].txt //找除了3以外所有的文件
ls file-[1,3].txt //找1和3的文件
管道:
将前面命令的输出作为后续命令的输入
./a.out | grep "字符串"
ls file* | grep ".sh"
重定向:
将原本要输出在终端的内容定向到文件中
覆盖重定向(将原来内容覆盖)
echo "hello world" > file.txt
追加重定向(在原内容末尾添加新内容)
echo "hello world" >> file.txt
文件查找命令
find命令:在当前目录下查找文件
find . -name 文件名
查找包含某个字符串的文件
find . -type f -print0 | xargs -o grep -l "字符串"
whereis命令:查看二进制文件
whereis valgrind
常见命令:
echo命令:在终端上显示内容
echo "hello world"
grep命令:查找包含字符串对应的行并显示
grep "字符串" 文件名
压缩和解压命令
.tar.gz命令
压缩
tar -zcvf 文件名.tar.gz 目录名/*
解压
tar -zxvf 文件名.tar.gz
.tar.bz2格式
压缩
tar -jcvf 文件名.tar.bz2 目录名/*
解压
tar -jxvf 文件名.tar.bz2
用户管理命令:
useradd新建用户
sudo useradd 用户名
userdel删除用户
sudo userdel 用户名
psswd修改密码
sudo passwd 用户名
su切换用户
su 用户名exit 退出当前用户
chmod修改文件权限
chown修改文件的所属用户
chown 用户名 文件名
chgrp 修改文件的所属组
chogrp 组名 文件名
shell脚本
编程型语言:
先编译再运行、有丰富的数据类型、擅长计算、执行效率高、开发效率低、C、C++、C#、Java
解释型语言:
边翻译边执行、擅长对系统维护管理、执行效率低、开发效率高、shell、python、javascript
编程步骤
//编写脚本文件
vim filename.sh
//使用chmod命令为脚本加上执行权限
chmod +x filename.sh
//运行脚本
./filename.sh
指定脚本对应的运行shell
#!/bin/bash
shell脚本的输入和输出
输出
输入
shell脚本中的引号
单引号:原封不动打印引号中的内容
echo '$filename'
双引号:将双引号中的变量替换成对应的值打印
echo "$filename"
倒引号:将引号中的内容当作命令来处理
echo `seq 10`
shell中的变量
环境变量
shell自带的一些变量,再程序运行时已经存在了
位置变量
自定义变量
分支结构
if分支
基本结构
表达式可以由test命令实现,test可以通过[]来替代
case分支
基本结构
循环结构
while循环
until循环
for循环
数组
函数
实现分数等级判断
#!/bin/bash read scoreif [ $score -lt 0 ] || [ $score -gt 100 ]thenecho "输入数据有误"exit 0fishiwei=`expr $score / 10`case $shiwei in10)echo "S优秀";;9)echo "S优秀";;8)echo "A良好";;7)echo "B中等";;6)echo "C及格";;*)echo "D不及格";;esac