目录
[1. 操作系统概念:](#1. 操作系统概念:)
"The Linux philosophy is 'Laugh in the face of danger'. Oops. Wrong One. 'Do it yourself'. Yes, that's it."
**------**Linus Benedict Torvalds
一、Linux系统
1. 操作系统概念:
1.操作系统诞生原因
早期每种硬件支持的汇编指令不同,希望通过一款软件,使相同的代码在不同硬件平台上实现相同的功能,这款软件后来成了操作系统
2.操作系统的作用:屏蔽不同底层硬件平台,为上层应用提供统一接口运行环境
3.操作系统的发展:Unix -> Linux -> windows/mac
Unix:世界上第一款操作系统
Linux :开源操作系统 (Unix 、Linux 均有纯C语言编写,所以执行效率极高) windows/mac:由C/C++编写,效率不如Unix 、Linux
4.操作系统的应用:
①服务器。因为由纯C编写,效率极高
②嵌入式领域(嵌入式的操作系统是裁剪了Linux得到的轻量级操作系统)
③GPU,NPU,边缘计算
2.认识Linux操作系统
①Linux概念:
Linux操作系统是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds)于1991年10月5日首次发布。目前已有上百种不同的发行版
它Linux操作系统是一个基于POSIX的多用户、多任务、支持多线程 和多CPU的操作系统。它支持32位和64位硬件,能运行主要的Unix工具软件、应用程序和网络协议。
Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
②Linux特点:免费、开源、可靠、安全、稳定、多平台
③Linux操作系统组成:Linux内核、库函数、shell
④Linux内核功能:
1.内存管理:哪怕硬件内存再小,也能虚拟到0-4G空间
2.文件系统的管理:Linux系统中,一切皆文件
3.多任务调度
4.多任务通信
5.网络功能管理
6.硬件设备的管理
⑤Linu操作系统的组成
图示
shell作用
①保护内核:shell作为Linux操作系统的大内总管,防止用户直接和内核交互,把内核搞坏
②作为命令解释器:linu是C写的,使用c接口太多太复杂
库函数作用
提前对用户的输入进行处理,最后传递给Linux内核进行处理
⑥Linu操作系统的使用流程
二、shell命令
使用形式: command [-options] agr1 agr2 ...
1.基本命令
ls
cd
cp
mv
mkdir
rmdir
rm
touch
pwd
这部分内容在我之前的博客中详细介绍过,这里就不赘述。
Linux:Linux基础-> 一、Linux中的操作命令,链接如下https://blog.csdn.net/2301_81830380/article/details/156695328?sharetype=blogdetail&sharerId=156695328&sharerefer=PC&sharesource=2301_81830380&sharefrom=mp_from_link
2.文件查看命令
①cat
功能:查看文件信息(≈vim ,只不过vim不在终端显示,但是在终端的命令可以使用通配符完成更多操作)
示例:cat filename
② head/tail
功能:查看文件 开头/末尾 内容
示例: head filename //默认查看头十行
head -n 10 filename //查看头十行
tail -n 50 filename //查看尾五十行
③grep
功能:搜索关键字
格式:grep "字符串" 文件名
示例:grep "int" main.c
④管道 |
功能:将前面命令的输出作为后续命令的输入
示例:head -n 10 filename | grep"字符串"
tai1 -n 100 /usr/include/stdio.h | grep "extern"
ps -ef | grep bash //查看进程信息
⑤重定向
功能: 将原来输出在终端的内容写入到文件中
> 覆盖重定向
>> 追加重定向
⑥通配符
*:匹配任意长度任意字符
?:匹配一位长度任意字符\]:匹配一位长度指定字符 使用示例:  ⑦chmod 功能:修改文件权限  ⑧ chgrp(英文:change group) 功能: 修改文件所属的组 格式:chgrp 用户名 filename ⑨ chown (英文:change owner) 功能:修改文件所属的用户 格式:chown 用户名 filename ⑩压缩和解压缩 压缩文件格式 .tar .bz2 .tar .gz 压缩: tar -jcvf filename.tar .bz2 dirname/\* tar -zcvf filename.tar.gz dirname/\* 解压缩: tar -jxvf filename.tar.bz2 tar -zxvf filename.tar.gz 11.find文件查找 功能:查找文件 格式:find 目录 -name "文件名" 12.其余命令 echo :在终端显示对应的内容 du:统计文件大小 du -m 文件名 (以M为单位显示) du -k 京件名 (以K为单位显示) fdisk:查看磁盘分区信息 fdisk -1 sudo:使用超级用户的权限来执行某个操作 sydo fdisk -1 date:查看日期 whoami:查看当前登录的用户 ps:查看进程信息 ps -ef top:根据CPU占用率查看进程信息 q:退出 ifconfig:查看网卡信息  ping:测试与目的主机是否连通 ping 8.8.8.8 dpkg工具集: 安装软件:sudo dpkg -i filename.deb(乌班图中所有安装包都是.deb结尾) #查看软件是否安装成功 sudo dpkg -1 软件名 #卸载软件 sudo dpkg -p 软件名
13.apt-get工具集
可以自己根据配置的源下载对应软件
根据软件依赖关系安装软件所需要的所有依赖
步骤:
①检查能否联网 :ping 8.8.8.8 (ctrl + cat 退出)
若无返回,需配网
配网步骤:
a.设置NAT模式(windows和Linux用同一个IP地址)【桥接模式:主机做服务器,得有一个唯一的IP地址情况下使用。】
b. 修改乌班图配置文件
打开配置文件:sudo vim /etc/network/interfaces 输入用户密码
修改配置文件为如下格式: auto lo
iface lo inet loopback
auto ens33
iface ens33 inet dhcp
c.保存退出
:wq
d. 重启乌班图
sudo shutdown -r now
d. ifconfig:查看网卡信息(看有无IP地址分配)
e.检查能否联网 :ping 8.8.8.8 (ctrl + cat 退出)
②配置apt-get工具集的源,修改源为阿里云点击"Ubunty Software"
右键选择"Software & Updates'
③再点击"close",若选reverse,则会恢复先前配置
④输入命令
sudo apt-get autoclean 清除源
sudo apt-get update 升级源
sudo apt-get insta11 -f 重建源的依赖关系
⑤使用
#安装软件sudo apt-get insta11 软件名
#卸载软件sudo apt-get remove 软件名 --purge 连同【配置一块删除,即彻底删除】
三、shell编程
1.解释型语言与编译型语言
a.解释性语言:边翻译边执行
特点:开发效率高
执行效率低
应用场景:不适合做数据运算(因为解释型语言下,所有数据类型都是字符串)
适合对系统管理
例:python、shell
b.编译型语言: 先编译再执行
特点:开发效率低
执行效率高
应用场景:适合做数据运算(因为有丰富的数据类型: int ,char ,double....)
适合对系统管理
例:c/c++ 、c# 、 java
2.shell脚本开发流程
a.编写shell脚本 vim filename.sh
b.加上执行权限 chmod +x filename.sh
c.运行 ./filename.sh
3.shell脚本的本质
本质:一系列shell命令的集合
4.shell脚本的引号
a.双引号
双引号中的变量内容会进行替换
b.单引号
单引号中的内容为字符串常量,不做任何改变,直接操作
c.倒引号`(键盘1 左边的按键)
将倒引号中的内容作为命令来执行
5.shell中的变量
a.环境变量: shel脚本中用来存放系统相关信息的变量
RWD:存放当前所在目录的绝对路径
HOME:登录用户的家目录
PATH:系统软件默认的路径
......
b.位置变量:
$0 :程序名
$1 :执行脚本时传入的第一个参数
$2 :执行脚本时传入的第二个参数
......
$# : 传入参数的个数
$? : 上一句语句运行的结果
: 执行脚本对应的进程ID号
$:使用变量(makefile就是借鉴shell脚本)
#!/bin/bash:表示 用bin下的bash运行脚本
#注释
!表取反
#!表示不是注释
注意:别乱加空格
示例:
6.自定义变量
i=0
str="hello world"
7. if分支
基本格式 :
if 表达式
then
语句块
elif
语句块
else
语句块
fi
注意:then和fi相当于C语言中的{ }
test检测文件类型,比较数值
示例
8.分支语句
基本形式
*相当于C中的default
9.循环语句(3种)
for
while
until
示例
10.数组:

11.函数
函数体内部的echo作为函数返回值,函数体外部的echo才会打印


















