嵌入式Linux开发常用命令以及工具总结

news2024/10/7 14:26:18

现在的Linux发行版诸如 Ubuntu、 CentOS、Fedora都具有图形界面环境,Linux 中的桌面环境(GNOME、Unity等)也是一个程序,它们是命令行的抽象,例如,当您通过单击“X”关闭窗口时,该操作会导致运行一个命令,关闭掉当前窗口。Linux系统作为一种常见的嵌入式开发环境,刚开始都是不带界面的,只能通过命令来管理,而且它提供的命令行非常强大,使开发人员和高级用户更加高效。所以,要想熟练使用 Linux,就必须记忆很多命令。

本文以嵌入式开发为视角,精简了一些必要的指令进行说明。同时介绍了Linux环境下提供的诸如Vim等工具,帮助工程师进行更有效的开发。另外,在制作嵌入式Linux操作系统(Android)以及底层的开发过程中,有时也不可避免的需要手写一些命令以及工具。

目录

Linux命令

系统信息相关

文件和目录

文件搜索与文本处理

其他常用命令

Vi/Vim

命令模式 

输入模式

底行命令模式

SSH


Linux命令

shell是一种命令解释器,它提供了用户和操作系统之间的交互接口。您在命令行输入命令,shell进行解释,然后送往操作系统执行,shell可以执行 Linux 的系统内部命令,也可以执行应用程序。你还可以利用shell编程,执行复杂的命令程序。在ubuntu系统桌面中按下Ctrl+Alt+T组合键,可打开shell(Terminal窗口),参见下图:

系统信息相关

  • uname命令用于显示操作系统信息,例如内核版本、主机名、处理器类型等。下图为不同参数显示机器的处理器架构和使用内核版本。
  • cat命令能够用于连接文件并打印到标准输出设备上。可通过查看/proc下的虚拟文件来获取当前系统各方面的实时信息。
    • cat /proc/cpuinfo 显示CPU info的信息。
    • cat /proc/interrupts 显示中断。
    • cat /proc/meminfo 校验内存使用。
    • cat /proc/swaps 显示哪些swap被使用。
    • cat /proc/net/dev 显示网络适配器及统计信息。
    • cat /proc/mounts 显示已加载的文件系统。
  • ps命令即process status,用于显示当前进程的状态,类似于 windows 的任务管理器。常见的用法是查找指定进程,例如显示php的进程:ps -ef | grep php。
  • top命令经常用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况。

  • date 显示系统日期。
  • shutdown 命令可以用来进行关机程序。shutdown -h now即时关闭系统,shutdown -h hours:minutes & 按预定时间关闭系统。
  • reboot 重启。
  • logout 注销。

文件和目录

  • cd 命令即Change Directory,切换路径。包含一下几种常见用法。
    • cd .. 返回上一级目录。
    • cd ../.. 返回上两级目录。
    • cd 进入个人的主目录。
    • cd ~user1 进入个人的主目录。
    • cd - 返回上次所在的目录。
  • ls命令即list directory contents,用于显示指定工作目录下之内容(列出目前工作目录所含的文件及子目录),包含以下几种常见用法。
    • ls 查看目录中的文件。
    • ls -F 查看目录中的文件。
    • ls -l 显示文件和目录的详细资料。
    • ls -a 显示隐藏文件。
  • pwd即print work directory,命令用于显示当前工作目录。
  • tree命令显示文件和目录由根目录开始的树形结构。
  • mkdir命令即make directory,用于创建目录,常见以下几种用法。
    • mkdir dir1 创建一个叫做 'dir1' 的目录。
    • mkdir dir1 dir2 同时创建两个目录。
    • mkdir -p /tmp/dir1/dir2 创建一个目录树。
  • rm命令即remove,用于删除一个文件或者目录。常见的用法如下。
    • rm -f file1 删除一个叫做 'file1' 的文件。
    • rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容。
    • rm -rf dir1 dir2 同时删除两个目录及它们的内容。
  • mv命令即move file,用来为文件或目录改名、或将文件或目录移入其它位置。常见的用法如下。
    • mv dir1 new_dir 重命名/移动 一个目录。
  • cp命令主要用来复制文件和目录,常见用法如下。
    • cp file1 file2 复制一个文件。
    • cp dir/* . 复制一个目录下的所有文件到当前工作目录。
    • cp -a /tmp/dir1 . 复制一个目录到当前工作目录。
    • cp -a dir1 dir2 复制一个目录。
  • ln命令即link files,它的功能是为某一个文件在另外一个位置建立一个同步的链接,类似Windows的快捷方式。常见用法如下。
    • ln -s file1 lnk1 创建一个指向文件或目录的软链接。
    • ln file1 lnk1 创建一个指向文件或目录的物理链接。
  • touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。 若文件不存在,系统会建立一个新的文件。用法如下。
    • touch -t 0712250000 file1 修改一个文件或目录的时间戳 - (YYMMDDhhmm)。

文件搜索与文本处理

  • find命令用于在指定目录下查找文件和目录。 它可以使用不同的选项来过滤和限制查找的结果。常见的用法如下。
    • find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录。
    • find / -user user1 搜索属于用户 'user1' 的文件和目录。
    • find /home/user1 -name \*.bin 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件。
    • find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件。
    • find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件。
    • find / -name \*.rpm -exec chmod 755 '{}' \; 搜索以 '.rpm' 结尾的文件并定义其权限。
    • find / -xdev -name \*.rpm 搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备。
  • grep命令用于从文件中搜索文本或字符串,常见的用法如下。
    • grep Aug /var/log/messages 在文件 '/var/log/messages'中查找关键词"Aug"。
    • grep ^Aug /var/log/messages 在文件 '/var/log/messages'中查找以"Aug"开始的词汇。
    • grep [0-9] /var/log/messages 选择 '/var/log/messages' 文件中所有包含数字的行。
    • grep Aug -R /var/log/* 在目录 '/var/log' 及随后的目录中搜索字符串"Aug"。
  • cat命令即concatenate,用于创建单个或多个文件,查看文件包含,连接文件以及在终端或文件中重定向输出。常见的使用方法如下。
    • cat /etc/passwd 显示/etc/passwd文件的内容。
    • cat test >> test1 将test文件追加到test1后。
    • cat < test2 将test2重定向到标准输入。
  • sed命令即Stream EDitor,它是一个面向行处理的工具,它以“行”为处理单位,针对每一行进行处理,处理后的结果会输出到标准输出(STDOUT)。常见的使用方法如下。
    • sed 's/stringa1/stringa2/g' example.txt 将example.txt文件中的 "string1" 替换成 "string2"。
    • sed '/ *#/d; /^$/d' example.txt 从example.txt文件中删除所有注释和空白行。
    • sed -e 's/stringa1//g' example.txt 从文档中只删除词汇 "string1" 并保留剩余全部。
  • sort命令用于对文本内容进行排序,下面是几个常见的用法。
    • sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份)。
    • sort file1 file2 | uniq -u 删除交集,留下其他的行。
    • sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件)。
  • comm 命令用于比较两个已排过序的文件,常见的使用如下。
    • comm -1 file1 file2 比较两个文件的内容只删除 'file1' 所包含的内容。
    • comm -2 file1 file2 比较两个文件的内容只删除 'file2' 所包含的内容。
    • comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分。

其他常用命令

  • mount命令用于挂载Linux系统外的文件,常见的使用如下。
    • mount -t vfat /dev/hda5 /mnt/hda5 挂载一个Windows FAT32文件系统。
    • mount /dev/sda1 /mnt/usbdisk 挂载一个usb 捷盘或闪存设备。
    • mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share 挂载一个windows网络共享。
    • umount -n /mnt/hda2 运行卸载操作而不写入 /etc/mtab 文件- 当文件为只读或当磁盘写满时非常有用。
  • df -h 用于显示已经挂载的分区列表;ls -lSr |more 以尺寸大小排列文件和目录;du -sh dir1 估算目录 'dir1' 已经使用的磁盘空间'。
  • tar命令即tape archive ,常用于压缩与解压文件,用法如下。
    • tar -xvf archive.tar -C /tmp 将压缩包释放到 /tmp目录下。
    • tar -cvfj archive.tar.bz2 dir1 创建一个bzip2格式的压缩包。
    • tar -xvfj archive.tar.bz2 解压一个bzip2格式的压缩包。
    • tar -cvfz archive.tar.gz dir1 创建一个gzip格式的压缩包。
    • tar -xvfz archive.tar.gz 解压一个gzip格式的压缩包。
  • tail -f /var/log/messages 实时查看被添加到一个文件中的内容,这个用法在观看log文件的时候经常用到。
  • 网络相关的命令我们嵌入式工程师也经常会涉及,常见的如下。
    • ifconfig eth0 显示一个以太网卡的配置。
    • ifup eth0 启用一个 'eth0' 网络设备。
    • ifdown eth0 禁用一个 'eth0' 网络设备。
    • ifconfig eth0 192.168.1.1 netmask 255.255.255.0 控制IP地址。
    • iwlist scan 显示所有无线网络。
    • tcpdump tcp port 80 显示所有 HTTP 数据包。
    • route -n 显示路由表。

Vi/Vim

所有的 Unix Like 系统都会内建 Vi 文本编辑器,但是目前我们使用比较多的是 Vim 编辑器。它们的区别简单的来说就是vi 是老式的字处理器,Vim 则可以说是程序开发者的一项很好用的工具。Vim 的官方网站自己也说 Vim 已经是一个程序开发工具而不单纯是文字处理软件。基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底行命令模式(Last line mode)。三种模式的切换关系如下图所示。

命令模式 

用户刚刚启动 vi/vim,便进入了命令模式,在命令模式下可以使用不同的命令对文本进行操作。此状态下vi/vim接受键盘输入的命令完成动作。命令包括以下几种。

  • i  命令切换到输入模式,以输入字符。
  • x 命令删除当前光标所在处的字符。
  • 命令切换到底线命令模式,以在最底一行输入命令。
  • dd 删除光标所在行。
  • yy 复制光标所在的行。
  • h 光标左移。
  • o 在光标所在行的下方插入一-行并切换到输入模式。
  • p 在光标所在行的下方粘帖。
  • P 在光标所在行的上方粘帖。

输入模式

若想要编辑文本,首先启动Vim,进入了命令模式,按下i,切换到输入模式;若想使用更多的命令,则要输入:进入底线命令模式输入更多命令。

在输入模式中,可以使用以下按键。

  • 字符按键以及Shift组合,输入字符。
  • ENTER,回车键,换行。
  • BACK SPACE,退格键,删除光标前一个字符。
  • DEL,删除键,删除光标后一个字符。
  • 方向键,在文本中移动光标。
  • HOME/END,移动光标到行首/行尾。
  • Page Up/Page Down,上/下翻页。
  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线。
  • ESC,退出输入模式,切换到命令模式。

底行命令模式

底行命令模式可以输入单个或多个字符的命令常用的命令如下。

  • W 保存。
  • q 退出。
  • ! 强制操作。
  • vs 文件名 可以不断分屏,ctrl +w +w快速切换屏幕。
  • set nu 列出行号
  • 代表一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了。
  • /关键字,查找关键字。

下图展示了Vi/Vim常用的键位图。

SSH

SSH 叫安全外壳协议(Secure Shell),是一种加密的网络传输协议,可在不安全的网络中网络服务提供安全的传输环境。SSH 是一种协议, 存在多种实现,既有商业实现,也有开源实现(OSSH,OpenSSH)。本文使用的自有软件 OpenSSH, 毕竟它是目前最流行的 SSH 实现,而且是所有操作系统的默认组件。

我们可以首先在远程目标机器上运行SSH Server,这样我们就可以在本地的机器上使用SSH Client通过网络来远程访问到目标机器上的命令行。SSH Client 的基本使用方法是:

ssh user@remote -p port
  • user 是你在远程机器上的用户名,如果不指定的话默认为当前用户。
  • remote 是远程机器的地址,可以是 IP,域名,或者是后面会提到的别名。
  • port 是 SSH Server 监听的端口,如果不指定的话就为默认值 22

实际上,知道了上面这三个参数,用任意的 SSH Client 都能连接上 SSH Server,例如在 Windows 上 PuTTY 就是很常用的 SSH Client。在执行了 ssh 命令之后,远程机器会询问你的密码。输入密码(并不回显),摁下回车即可登录成功。

local$ ssh user@remote -p port                                                      
user@remote's password:

常用的功能就是在两台机器上传输文件, 我们用scp命令就可以实现。scp 用起来很简单,下面是一些例子。

# 把本地的 /path/to/local/file 文件传输到远程的 /path/to/remote/file
scp -P port /path/to/local/file user@remote:/path/to/remote/file

# 把远程的 /path/to/remote/file 下载到本地的 /path/to/local/file
scp user@remote:/path/to/remote/file /path/to/local/file

# 远程的默认路径是家目录
# 下面命令把当前目录下的 file 传到远程的 ~/dir/file
scp file user@remote:dir/file

# 加上 -r 命令可以传送文件夹
# 下面命令可以把当前目录下的 dir 文件夹传到远程的家目录下
scp -r dir user@remote:

# 别忘了 . 可以用来指代当前目录
# 下面命令可以把远程的 ~/dir 目录下载到当前目录里面
scp -r user@remote:dir/ .

 十六宿舍 原创作品,转载必须标注原文链接。

©2023 Yang Li. All rights reserved.

欢迎关注 『十六宿舍』,大家喜欢的话,给个👍,更多关于嵌入式相关技术的内容持续更新中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/778842.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

<C语言> 数据在内存中的存储

1.数据类型介绍 C语言中的基本内置类型如下&#xff1a; char //字符数据类型 short //短整型 int //整型 long //长整型 long long //更长的整型 float //单精度浮点数 double //双精度浮点数类型的意义&#xff1a; 1.使用这个类…

vue2如何将页面生成 pdf 导出 html2Canvas + jspdf

1.引入两个依赖 npm i html2canvas npm i jspdf 2.在utils文件夹下新建html2pdf.js文件 import html2canvas from html2canvas; import jsPDF from jspdf export const htmlToPDF async (htmlId, title "报表", bgColor "#fff") > { let pdfDom do…

Java使用 java.util.regex.Pattern 正则表达式校验参数值是否规范

场景&#xff1a; java中我们可以利用 Pattern 注解对某个入参进行规则校验&#xff0c;但有些特殊参数在接口入口处不方便校验&#xff0c;需要在代码中校验 一、使用 Pattern 注解校验 Pattern(regexp "^[a-zA-Z0-9]$", message "xxx号限输入字母、…

个人博客系统(SSM版 前端+后端)

前言 在学习Servlet的时候,也写了一个博客系统,主要的就是使用servelet加Tomcat进行实现的,而这个项目 仅仅适合去学习Web项目开发的思想,并不满足当下企业使用框架的思想,进行学习过Spring,Spring Boot,Spring MVC以及MyBatis之后,我们就可以对之前的项目使用SSM框架的形式进行…

Elasticsearch API(二)

文章目录 前言一、Elasticsearch指标ES支持的搜索类型ES的能力ES的写入实时性ES不支持事务 二、Elasticsearch名词节点&#xff08;Node&#xff09;角色&#xff08;Roles&#xff09;索引&#xff08;index&#xff09;文档&#xff08;document&#xff09; 三、Elasticsear…

126.【Redis 二刷】

Redis 二刷 (一)、认识NoSQL 与 SQL1.NoSQL与SQL的区别 (二)、认识Redis1.Redis 特征2.Redis安装及启动的三种方式 (基于Window)(1).命令行配置文件 3.Redis 客户端(1).命令行客户端(2).Redis可视化客户端 4.Redis 数据结构(1).Redis 通用命令(2).String 类型(3).Redis 的Key层…

【C++】list 模拟笔记

文章目录 list定义结点类&#xff08;list_node&#xff09;为什么封装迭代器为类 &#xff1f;库里面模板多参数的由来 &#xff1f;为什么普通迭代器不能隐式类型转换成const迭代器&#xff1f;迭代器位置指向及其返回值和整体代码 list list 和前面学习的 string 和 vector …

SAP HANA数据库学习

Systems介绍&#xff1a; Catalog下面存HANA的 Schema。 Content下面建package来 放view 。 Provisioning可以建虚拟表 数据源啥的。 Security下面 是用户角色和权限。 一个calculation view里面的scenario场景下都有啥呢&#xff1f; 首先是semantics下面的节点&#xff0…

跨网段耦合器的作用

你是否曾经遇到过需要跨网段访问设备的问题&#xff1f;比如在工业自动化领域&#xff0c;PLC和数控设备的连接。这时候&#xff0c;远创智控YC8000-NAT就能帮你轻松解决。 1, 远创智控YC8000-NAT是一款功能强大的设备&#xff0c;它可以将LAN1口所连接PLC的IP地址和端口号&a…

MySQL多版本并发控制原理(MVCC)

在数据库系统中&#xff0c;事务是指由一系列数据库操作组成的一个完整的逻辑过程&#xff0c;事务的基本特性是ACID&#xff1a; A : Atomicity (原子性) C: Consistency (一致性) I: Isolation (隔离性) D: 持久性&#xff08;Durability&#xff09; 由于大部分数据库都是高…

听GPT 讲K8s源代码--pkg(五)

在 Kubernetes 中&#xff0c;kubelet 是运行在每个节点上的主要组件之一&#xff0c;它负责管理节点上的容器&#xff0c;并与 Kubernetes 控制平面交互以确保容器在集群中按照期望的方式运行。kubelet 的代码位于 Kubernetes 代码库的 pkg/kubelet 目录下。 pkg/kubelet 目录…

档案数字化扫描完成标准有哪些内容?

档案数字化扫描完成标准是指在进行数字化扫描即将纸质文档或图片等非数字化文件转化为数字格式的文件的过程中&#xff0c;要满足一系列严格的要求。 1.扫描速度快。由于档案数量庞大&#xff0c;数字化扫描需要快速高效地进行&#xff0c;因此需要采用高效的扫描设备和软件&am…

函数-嵌入式C语言

函数-嵌入式C语言 值传递 地址传递

基于C语言的科学计算器

完整资料进入【数字空间】查看——baidu搜索"writebug" 一、产品概述 计算器&#xff1a; 它是一个拥有扁平化优雅用户界面的科学计算器&#xff0c;拥有科学计算与基础计算器功能&#xff0c;可以计算是是数学表达式&#xff1a;从一个简单的表达式&#xff0c;如…

postgresql源码学习(58)—— 删除or重命名WAL日志?这是一个问题

最近因为WAL日志重命名踩到大坑&#xff0c;一直很纠结WAL日志在什么情况下会被删除&#xff0c;什么情况下会被重命名&#xff0c;钻研一下这个部分。 一、 准备工作 1. 主要函数调用栈 首先无用WAL日志的清理发生检查点执行时&#xff0c;检查点执行核心函数为CreateCheckPo…

96、Kafka中Zookeeper的作用

Kafka中zk的作用 它是一个分布式协调框架。很好的将消息生产、消息存储、消息消费的过程结合在一起。在典型的Kafka集群中, Kafka通过Zookeeper管理集群配置&#xff0c;选举leader&#xff0c;以及在Consumer Group发生变化时进行rebalance。Producer使用push模式将消息发布到…

PyQt5:使用PyQtWebEngine

1. PyQt 5.13.0 1.1 安装PyQt pip install PyQt55.13.0 -i https://pypi.tuna.tsinghua.edu.cn/simple1.2 安装PyQtWebEngine pip install PyQtWebEngine5.13.0 -i https://pypi.tuna.tsinghua.edu.cn/simplepip list 1.3 测试 python文件 import sys from PyQt5.QtCore imp…

ARM——点灯实验

循环点灯 RCC寄存器使能GPIOE、GPIOF组寄存器 修改GPIOx组寄存器下的值 通过GPIOx_MODER寄存器设置为输出模式通过GPIOx_OTYOER寄存器设置为推挽输出类型通过GPIOx_OSPEEDR寄存器设置为低速输出通过GPIOx_PUPDR寄存器设置为禁止上下拉电阻点灯 通过GPIOx_ODR寄存器设置为高电…

day33哈希表

1.哈希表 常见的哈希表分为三类&#xff0c;数组&#xff0c;set&#xff0c;map&#xff0c;C语言的话是不是只能用数组和 2.例题 题目一&#xff1a; 分析&#xff1a;题目就是判断两个字符串出现的次数是否相同&#xff1b; 1&#xff09;哈希表26个小写字母次数初始化为0&…

K8S初级入门系列之一-概述

一、前言 K8S经过多年的发展&#xff0c;构建了云原生的基石&#xff0c;成为了云原生时代的统治者。我将用三个博客系列全面&#xff0c;循序渐进的介绍K8S相关知识。 初级入门系列&#xff0c;主要针对K8S初学者&#xff0c;以及希望对K8S有所了解的研发人员&#xff0c;重点…