Linux:软件编程

目录

一、Linux系统

[1. 操作系统概念:](#1. 操作系统概念:)

2.认识Linux操作系统

二、shell命令

1.基本命令

2.文件查看命令

三、shell编程

1.解释型语言与编译型语言

2.shell脚本开发流程

3.shell脚本的本质

4.shell脚本的引号

5.shell中的变量

6.自定义变量

7.分支

8.分支语句

9.循环语句(3种)

10.数组:

11.函数


"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 //查看进程信息

⑤重定向
功能: 将原来输出在终端的内容写入到文件中
> 覆盖重定向
>> 追加重定向
⑥通配符
*:匹配任意长度任意字符
?:匹配一位长度任意字符

\]:匹配一位长度指定字符 使用示例: ![](https://i-blog.csdnimg.cn/direct/043c031a04e84d79afef276a74dd1c17.png) ⑦chmod 功能:修改文件权限 ![](https://i-blog.csdnimg.cn/direct/09974cc129d841009f8ac95c50642a94.png) ⑧ 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:查看网卡信息 ![](https://i-blog.csdnimg.cn/direct/99bfb93e095847659b2a9878cdfc3f2a.png) 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才会打印

相关推荐
人间打气筒(Ada)2 小时前
k8s:CNI网络插件flannel与calico
linux·云原生·容器·kubernetes·云计算·k8s
老师用之于民2 小时前
【DAY21】Linux软件编程基础&Shell 命令、脚本及系统管理实操
linux·运维·chrome·经验分享·笔记·ubuntu
路由侠内网穿透.2 小时前
本地部署代码托管解决方案 Gitea 并实现外部访问( Windows 版本)
运维·服务器·网络协议·gitea
serve the people2 小时前
python环境搭建 (十三) tenacity重试库
服务器·python·php
jake don3 小时前
GPU服务器搭建大模型指南
服务器·人工智能
江畔何人初3 小时前
pod的内部结构
linux·运维·云原生·容器·kubernetes
不做无法实现的梦~3 小时前
PX4编译环境配置和qgc配置安装教程(2)
linux·stm32
齐鲁大虾3 小时前
Linux下用什么编程语言方便开发B/S架构程序
linux·运维·架构
范纹杉想快点毕业3 小时前
状态机设计与嵌入式系统开发完整指南从面向过程到面向对象,从理论到实践的全面解析
linux·服务器·数据库·c++·算法·mongodb·mfc