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模式" 点击"确定" 2. 修改Ubuntu配置文件 打开配置文件 修改配置文件为如下格式: 保存退出 :wq 3. 重启Ubuntu 2. 配置apt-get工具集的源 1. 点击"Ubuntu Software" 2. 右键选择"Software \& Updates" 3. 点击"close" 4. 输入命令 5. 软件安装 6. shell编程 7. 解释型语言与编译型语言 8. 解释性语言:边翻译边执行 开发效率高 执行效率低 不适合做数据运算 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 2. 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 相当于传出返回值

相关推荐
FairGuard手游加固2 小时前
面具外挂检测方案
linux·运维·服务器
熬夜有啥好2 小时前
Linux软件编程——Shell命令
linux·运维·服务器
一只自律的鸡2 小时前
【Linux驱动】环境搭建和开发板操作 下篇
linux·运维·服务器
模型时代2 小时前
Linux系统安全革命:Amutable公司推出全新验证完整性技术
linux·运维·系统安全
云小逸2 小时前
【Nmap 源码学习】深度解析:main.cc 入口函数详解
网络·windows·学习·nmap
醇氧2 小时前
【Linux】centos 防火墙学习
linux·学习·centos
~光~~2 小时前
【嵌入式linux学习】06_中断子系统
linux·单片机·学习
LYS_06182 小时前
寒假学习(14)(HAL库5)
java·linux·学习
郝学胜-神的一滴2 小时前
Python美学的三重奏:深入浅出列表、字典与生成器推导式
开发语言·网络·数据结构·windows·python·程序人生·算法