Linux软件编程基石——基础指令使用

Linux操作系统是功能及其强大的操作系统,而且这种操作系统是可以裁剪的,我们可以将我们需要的功能裁剪出来,这一点在我们的嵌入式领域有着广泛的应用

先来了解一下我们操作系统的基本概念:

操作系统

概念:

可以看作一个软件,功能是用来屏蔽底层不同的硬件平台,为上层应用提供统一的接口与运行环境

Linux内核功能:

1.内存管理:

2.文件系统的管理;

3.对任务的调度;

4.多任务的通信;

5.网络功能管理;

6.对硬件设备的管理;

我们用户往往是无法直接与内核进行数据的交互的,我们在这里需要引入shell的概念

shell

作用:

1.保护内核:用户与shell交互,shell与内核交互;

2.命令解释器:

将用户命令转换为对应的C语言代码;

内核是用来解决复杂指令与复杂功能

我们还有一种与内核间接进行交互的方式那就是:

库函数:

库函数是有我们用户进行的具有可以跨平台的工具

库函数会先对数据进行预处理,然后再呈递LInux内核

库函数可以安装到不同的操作系统中(移植便利)

有用户调用就没有系统调用了吗??

有的有的:

还有我们的系统调用:

系统调用是只能由Linux内核进行调用的,只有在Linux中可以调用的接口;

系统调用的内容都会在我们操作手册中,直接使用 man 2 指令就可以查看;

2.操作系统的组成:

  • linux 内核
  • shell
  • 库函数

接下来我们来了解一下基本的操作

1.shell命令

1.基本命令:

ls cd mkdir rmdir

使用形式 command options arg1 arg2 arg3 ···

2.文件查看命令:

1.cat 查看文件信息:

cat filename

2.head/tail 查看文件开头/末尾 的内容

head -n 10 filename

tail -n 10 filename

3.管道:

将前边命令的输出作为后续命令的输入

head -n 10 filename | grep "字符串"

ps -ef 查看进程信息

4.查看搜索

grep 搜索关键字

grep "字符串" 文件名

5.重定向

将原来输出在终端的内容写入到文件中

覆盖重定向:>

追加重定向: >>

6.通配符:

匹配任意长度长度任意字符 *

?:匹配一位长度任意字符

\[\]:匹配一位长度指定字符

7.chmod

修改文件权限:

读权限:r

写权限:w

执行权限:x

无权限:-

第一个rwx:创建文件的用户对文件是否拥有读写执行;

第二个rwx:创建文件的用户对同组用户是否拥有读写执行权

第三个rwx:其余人是否拥有读写执行权

rwx 对应的八进制码分别为:4 2 1

可以使用

chmod 0777 filename

修改全部权限

chmod +/- r/w/x filename

8.chgrp

修改文件所属的组

chgrp 用户名 filename

9.chown

修改文件所属的用户

chown 用户名 filename

10.压缩与解压缩

.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 目录 -name "文件名"

12.其余命令

1.echo 在终端显示对应内容

2.du 统计文件大小

du -m 文件名 以兆为单位

du -k 文件名 以Kb为单位

3.fdish 查看磁盘分区信息

fdish -l

4.sudo 使用超级用户权限来执行某个操作

sudo fish -l

5.data 查看时间

6.whoami 查看登录的用户信息

7.ps -ef 查看进程

8.top 根据CPU占用率查看进程信息

q 退出

9.ifconfig 查看网卡信息

10.ping 测试与目的主机是否连通

ping 8.8.8.8

13.dpkg 工具集

sudo dpkg -i filname.deb 安装软件

sudo dpkg -l 软件名 查看软件是否安装成功

sudo dpkg -p 软件名 卸载软件

14.aptget工具集

可以根据自己配置的园下载软件

根据软件依赖关系安装软件所需的所有依赖

ask:需要联网

点击"设置"

1.ping 8.8.8.8 检查是否有网

查看是否有回复请求

点击"虚拟网络适配器"

选择"NAT模式"

点击"确定"

  1. 修改Ubuntu配置文件

打开配置文件

修改配置文件为如下格式:

保存退出

:wq

  1. 重启Ubuntu

  2. 配置apt-get工具集的源

  3. 点击"Ubuntu Software"

  4. 右键选择"Software & Updates"

  5. 点击"close"

  6. 输入命令

  7. 软件安装

  8. shell编程

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

  10. 解释性语言:边翻译边执行
    开发效率高
    执行效率低
    不适合做数据运算
    sudo vim /etc/network/interfaces1
    auto lo
    iface lo inet loopback
    auto ens33
    iface ens33 inet dhcp

sudo shutdown -r now1

sudo apt-get autoclean

sudo apt-get update

sudo apt-get install -f

#安装软件

sudo apt-get install 软件名

#卸载软件

sudo apt-get remove 软件名 --purge

接下来来了解一下我们的shell编程吧

先了解一下:

解释性语言:

边翻译边执行

开发效率高

执行效率低

不适合做数据运算

适合对系统进行管理;

python shell 语言

编译性语言

翻译完再执行

开发效率低

执行效率高

适合做数据运算符,有丰富的数据结构

c# c++ c

  1. shell脚本开发流程

1.编写shell脚本

vim filename.sh

2.加上执行权限

chmod +x filename.sh

3.运行

./filename.sh

3.shell脚本本质

一系列shell命令的集合

4.shell脚本中的引号

1.双引号

双引号中的变量内容会进行替换

2.单引号

单引号中的为字符串常量,不做 任何改变,直接操作

3.倒引号

将引号内的内容作为指令来执行

5,shell中的变量

1.环境变量

shell脚本中用来存放系统相关信息的变量

PWD:存放当前目录的绝对路径

HOME:登录用户的家目录

PATH:系统软件的默认目录

2.位置变量

$0 程序名

$1 第一个传入的文件名

$2 第二个传入的文件名

$# 传入 参数的个数

$? 上一句语句运行的效果

$$ 执行脚本对应进程的id号

3.自定义变量

i=0;

str = "hello world"

无需定义,直接可用

read 可用于接收变量

6.分支语句:

1.基本格式:

c 复制代码
if 表达式
then 
	语句块
elif 表达式
	语句块
else
	语句块
fi 

2.test 访问文件类型,比较数值

(())中的括号中可以直接使用C语言代码

2.case分支

基本结构

c 复制代码
case $变量 in 
	9)	语句块
		;;
	8)语句块
	;;
	7)语句块
	;;
	*)语句块
	;;
	esac

循环结构:
#!/bin/bash 
sum=0
i=0

#for i in seq 100

#while $i -le 100

until $i -gt 100

do

sum=expr $sum + $i

i=expr $i + 1

done

echo "sum = $sum"

c 复制代码
#!/bin/bash
sum=0
i=0
for i in `seq 100`
while[$i -le 100]
until[$i -gt 100]
do
	sum = `expr$sun + $i`
	i = `expr $i+1`
done

echo "sum = $sum"

数组的实现

c 复制代码
#!/bin/bash

array = (i love china)

echo ${array[1]}
echo ${array[2]}
echo ${array[3]}

echo ${array[*]}

shell 中函数的实现

c 复制代码
#!/bin/bash

add()
{
	sum = `expr $1 + $2`
	echo $sum
}

ret =`add 100 200` 

echo "ret = $ret"

函数内部使用打印指令echo 相当于传出返回值

相关推荐
Full Stack Developme9 小时前
JVM 与 Linux 交互的核心原理
linux·运维·jvm
HackTwoHub10 小时前
最新Nessus2026.6.8版本主机漏洞扫描/探测工具Windows/Linux
linux·运维·服务器·安全·web安全·网络安全·安全架构
qq_1631357510 小时前
Linux 【04-mkdir命令超详细教程】
linux
qq_1631357510 小时前
Linux 【08-mv命令超详细教程】
linux
youngerwang11 小时前
【Windows tcpip协议栈完整静态反汇编分析】
windows·tcpip协议栈·静态反汇编分析
2301_7644413312 小时前
主流手机pc品牌的端侧模型部署梳理
人工智能·windows·机器学习·智能手机·产品运营
Java面试题总结12 小时前
C#12 中的 Using Alias
开发语言·windows·c#
qq_1631357513 小时前
Linux 【07-rm命令超详细教程】
linux
zh路西法13 小时前
【SSH 免密登录全流程】Windows Linux 通用方案
linux·windows·ssh
ScilogyHunter14 小时前
GCC完全指南
linux·gcc