IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux嵌入式入门 -> 正文阅读

[系统运维]Linux嵌入式入门

Linux常用命令

  1. ls 显示文件;ls -a 显示所有文件,包括隐藏文件;ls -l 显示文件的详细信息;ls -al 显示所有文件并显示详细信息。
  2. cd 切换目录(table可以补全输入,如果命令唯一);cd / 返回根目录;…/ 返回上一级目录。
  3. pwd 显示当前路径。
  4. uname 系统信息查看命令 ;-a 查看全部信息。
  5. clear 清屏。
  6. cat 查看文件内容。
  7. sudo 切换用户身份命令(临时);sudo su 切换用户身份。
  8. touch 创建文件命令(后加文件名)。
  9. cp 拷贝文件(后加原始文件名再新的文件名)。
  10. rm 删除命令;-f 为只读也直接删除;-rf 删除文件夹;rmdir 删除文件夹。
  11. mkdir 创建文件夹。
  12. mv 移动文件命令(后加新的名字可重命名文件)。
  13. ifconfig 显示网络配置信息;down 关闭网卡;up 打开网卡。
  14. reboot 重启命令。
  15. poweroff 关机命令。
  16. sync 数据同步写入磁盘命令。
  17. find 查找文件命令;-name 根据名字查找文件。
  18. grep 查找内容命令;-nr 显示行号 ;-ir 忽略大小写。Ctrl+C 停止命令。
  19. du 文件夹大小查看命令;-sh 以可读的方式查看。
  20. df 磁盘空间检查命令。
  21. gedit 使用gedit打开某个文件。
  22. ps 当前系统进程查看命令。
  23. top 进程实时运行状态查看命令。
  24. file 文件类型查看命令。
  25. chmod 修改文件权限;777 打开全部权限。

vim编辑器的使用

vi打开文件/etc/vim/vimrc 最后添加:

? set ts=4 //设置Tab为4个空格 默认为8个空格

? set nu //设置行号

编译C程序

使用gcc编译器编译c程序。

gcc [选项] [文件名]

-c 只编译不链接为可执行文件,把.c文件编译为.o的目标文件。

-o 编译指定输出文件名,默认为a.out。./ 启动可执行文件

make工具和makefile文件

利用make工具可以自动完成编译工作,这些工作包括:

  • 如果修改了某几个源文件,则只重新编译这几个源文件
  • 如果某个头文件被修改了,则重新编译所有包含该头文件的源文件

利用这种自动编译可以大大简化开发工作,避免不必要的重新编译。make工具通过一个称为Makefile的文件来完成并自动维护编译工作,Makefile文件描述了整个工程的编译、连接规则。

#编写例程:创建文件Makefile
main: main.o input.o calcu.o
	gcc -o main main.o input.o calcu.o
main.o:main.c
	gcc -c main.c
input.o:input.c
	gcc -c input.c
calcu.o:calcu.c
	gcc -c calcu.c 
clean:
	rm *.o
	rm main 

Makefile基本语法

规则格式

目标文件:依赖文件集合

(Tab) 命令

  • make 编译文件
  • make clean 清理编译的文件

入门:make工具与Makefile文件

变量

#Makefile变量的使用
objects = main.o input.o calcu.o
main:$(objects)
    gcc -o main $(objects)

赋值符

“=“ 变量的值取决于它所引用的变量的最后一次有效值。

”:=“ 变量使用当前定义,不会使用后面的定义。

”?=“ 如果前面没有赋值就使用当前赋值,如果有就使用前面的值。

”+=“ 后面追加内容。

模式规则

%.o:%.c

? 命令

自动化变量

自动化变量描述
$@表示规则中的目标文件集。在模式规则中,如果有多个目标,那么,"$@"就是匹配于目标中模式定义的集合。
$%仅当目标是函数库文件中,表示规则中的目标成员名。例如,如果一个目标是"foo.a(bar.o)",那么," %"就是"bar.o"," @“就是"foo.a”。如果目标不是函数库文件(Unix下是[.a],Windows下是[.lib]),那么,其值为空。
$<依赖目标中的第一个目标名字。如果依赖目标是以模式(即"%")定义的,那么"$<"将是符合模式的一系列的文件集。注意,其是一个一个取出来的。
$?所有比目标新的依赖目标的集合。以空格分隔。
$^所有的依赖目标的集合。以空格分隔。如果在依赖目标中有多个重复的,那个这个变量会去除重复的依赖目标,只保留一份。
$+这个变量很像"$^",也是所有依赖目标的集合。只是它不去除重复的依赖目标。
$*这个变量表示目标模式中"%“及其之前的部分。如果目标是"dir/a.foo.b”,并且目标的模式是"a.%.b",那么,"$*“的值就是"dir/a.foo”。

优化后Makefile文件代码

objects = main.o input.o calcu.o
main: $(objects)
    gcc -o main $(objects)
 %.o:%.c
	gcc -c $<
clean:
	rm *.o
	rm main

伪目标

#当目录下有相同名字(clean)文件时,make clean 并不能执行
clean:
	rm *.o
	rm main
        
#声明伪目标防止出现上述情况
.PHONY:clean
clean:
	rm *.o
	rm main

条件判断

<条件关键词>
	<条件为真时执行的语句>
endif
-----------------------
<条件关键词>
	<条件为真时执行的语句>
else
	<条件为假时执行的语句>
endif

条件关键字: ifeq(判断是否相等)、ifneq、ifdef、ifndef

函数使用

Makefile函数使用_常见函数

shell脚本

//创建文件xxx.sh
#!/bin/bash	//第一行必须要写成这样
echo "hello world!"	//可以编写多个命令 echo打印输出
  • read 读取变量;-p 可以读取多个变量

  • $((表达式)) 数值计算,仅支持整形

  • test 用于查看文件是否存在、权限等信息,可以进行数值,字符,文件三方面的测试。-e 查看文件是否存在。

  • &&和||命令

    • cmd1 && cmd2 当cmd1执行完并且正确,那么cmd2开始执行;如果cmd1执行完毕错误,那么cmd2不执行。
    • cmd1 || cmd2 当cmd1执行完并且正确,那么cmd2不执行;反之cmd2执行。
  • [ ]判断符 里面用==或!= 里面字符和变量需要加”“

  • 默认变量

    • $0~$9:表示shell脚本的参数,包括shell脚本命令本身,shell脚本命令本身为$0
    • $#:#表示最后一个参数的标号
    • $@:表示$1、$2、$3… 全部参数
  • 条件判断

    • if 条件判断;then //成立时执行的语句 fi

    • if 条件判断;then //成立时执行的语句 else //不成立时执行的语句 fi

    • if 条件判断;then //成立时执行的语句 elif 条件判断;then //成立时执行的语句 else //不成立时执行的语句 fi

    • //编写示例
      if <条件判断>;then
      	//条件成立时执行的语句
      	exit 0 //退出
      fi
      
    • //case语句
      case $变量 in
      	"第一个变量内容")
         	 	程序段
        	 	::	//表示该程序块结束
      	"第二个变量内容")
          	程序段
          	::
      esac
      
  • 脚本函数 function fname(){ //函数代码段 } //调用不需要加() 传参不是加在() 参数直接写在后面

  • 循环

    • while [条件] do //循环开始代码段 done //条件不成立时结束
    • for var in con1 con2 con3… do //循环代码段 done
    • for((初始值;限制值;执行步长)) do //循环代码段 done
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-24 11:53:55  更:2021-07-24 11:55:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 10:28:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计