【应用】02.Linux相关编程工具

【嵌入式八股】一、语言篇https://www.nowcoder.com/creation/manager/columnDetail/mwQPeM

【嵌入式八股】二、计算机基础篇https://www.nowcoder.com/creation/manager/columnDetail/Mg5Lym

【嵌入式八股】三、硬件篇https://www.nowcoder.com/creation/manager/columnDetail/MRVDlM

【嵌入式八股】四、嵌入式Linux篇(本专栏)https://www.nowcoder.com/creation/manager/columnDetail/MQ2bb0

二、Linux系统编程

结合操作系统学习

1、Linux相关编程工具

shell与基本命令

14.什么是Shell?

Shell是一个计算机程序,它是在操作系统上运行的命令行解释器。它是用户和操作系统之间的接口,允许用户与操作系统交互。用户可以使用Shell来输入命令,然后Shell将这些命令解释并传递给操作系统执行。Shell还可以读取环境变量和配置文件,并在用户输入命令后提供命令历史记录和自动补全功能。

在Unix/Linux操作系统中,常用的Shell包括Bash(Bourne-Again SHell)、Korn Shell(ksh)、C Shell(csh)、T Shell(tcsh)等。每个Shell都有自己的特性和语法,但它们都提供了基本的命令行接口,以便用户可以与操作系统交互。Shell还可以用来编写脚本,以便执行自动化任务和批处理操作。

15.什么是BASH

BASH(Bourne-Again SHell)是一种 Unix shell,是 Bourne shell 的增强版本,也是 Linux 和 macOS 等操作系统默认的 shell。它是一个命令解释器,它提供了一个命令行界面来与操作系统进行交互。BASH支持用户在命令行中输入命令、执行程序、管理文件和目录,以及进行脚本编程等。BASH还支持变量、环境变量、别名、函数、管道、重定向和控制结构等功能,可以让用户更加方便和高效地使用命令行进行操作。

16.Shell编程

shell编程_Stephen_Tao的博客-CSDN博客

17.常考的 21 条Linux 命令

Linux管理文件和目录的命令

命令 功能 命令 功能
pwd 显示当前目录 ls 查看目录下的内容
cd 改变所在目录 cat 显示文件的内容
grep 在文件中查找某字符 cp 复制文件
touch 创建文件 mv 移动文件
rm 删除文件 rmdir 删除目录
vi 编辑文件 mkdir
find 文件搜索

有关磁盘空间的命令

命令 功能
mount 挂载文件系统
umount 卸载已挂载上的文件系统
df 检查各个硬盘分区和已挂上来的文件系统的磁盘空间
du 显示文件目录和大小
fsck 主要是检查和修复Linux文件系统

文件备份和压缩命令

在Linux中,常用的文件压缩工具有gzip、bzip2、zip。bzip2是最理想的压缩工具,它提供了最大限度的压缩。zip兼容性好,Windows也支持。

命令 功能
bzip2/bunzip2 扩展名为bz2的压缩/解压缩工具
gzip/gunzip 扩展名为gz的压缩/解压缩工具
zip/unzip 扩展名为zip的压缩/解压缩工具
tar 创建备份和归档

有关关机和查看系统信息的命令

命令 说明
shutdown 正常关机
reboot 重启计算机
ps 查看目前程序执行的情况
top 查看目前程序执行的情景和内存使用的情况
kill 终止一个进程
date 更改或查看目前日期
cal 显示月历及年历

管理使用者和设立权限的命令

命令 说明 命令 说明
chmod 用来改变权限 useradd 用来增加用户
su 用来修改用户 chown 改变文件的所有者
chgrp 改变文件所属用户组

线上查询的命令

命令 功能
man 查询和解释一个命令的使用方法,以及这个命令的说明事项
locate 定位文件和目录
whatis 寻找某个命令的含义

文件阅读的命令

命令 功能
head 查看文件的开头部分
tail 查看文件结尾的10行
less less是一个分页工具,它允许一页一页地(或一个屏幕一个屏幕地)查看信息
more more是一个分页工具,它允许一页一页地(或一个屏幕一个屏幕地)查看信息

网络操作命令

命令 功能 命令 功能
ftp 传送文件 telnet 远端登陆
bye 结束连线并结束程序 rlogin 远端登入
ping 检测主机 netstat 显示网络状态

其他命令

命令 功能 命令 功能
echo 显示一字串 passwd 修改密码
clear 清除显示器 lpr 打印
lpq 查看在打印队列中等待的作业 lprm 取消打印队列中的作业
18.Linux下查看内存使用情况的命令?

在 Linux 下查看内存使用情况的命令主要有以下几个:

  1. ps:可以查看进程的内存使用情况和其他信息。常用的命令选项有 -o(自定义输出格式)、-e(显示所有进程信息)等。ps -aux
  2. top:可以动态地查看系统资源使用情况,包括内存、CPU、进程等。在 top 命令中,按下“Shift + M”可以按内存使用量排序。
  3. free:可以查看系统内存使用情况,包括内存总量、空闲内存、已使用内存、缓存区内存、交换分区等。常用的命令选项有 -m(以 MB 为单位显示)、-g(以 GB 为单位显示)等。
  4. htop:是 top 命令的升级版,可以更直观地查看系统资源使用情况。在 htop 中,按下“F6”可以按内存使用量排序。
  5. vmstat:可以实时地查看系统内存使用情况和进程活动情况。常用的命令选项有 -s(以人类可读的格式显示内存使用情况)、-a(显示所有活动的进程信息)等。
  6. cat /proc/meminfo 显示一些关于系统内存使用情况的详细信息。
19.ps跟top有什么区别?
  • ps只是查看的是命令执行瞬间的进程信息;
  • 而top可以实时地持续监视,如CPU负载、内存消耗,不断更新进程状态。top还可以操作进程,如改变优先级(命令r)和关闭进程(命令k)。
20.Linux下查看磁盘的命令?
  • df -hl:查看磁盘剩余空间
  • df -h:查看每个根路径的分区大小
  • du -sh [目录名]:返回该目录的大小
  • du -sm [文件夹]:返回该文件夹总M数
  • du -h [目录名]:查看指定文件夹下的所有文件大小(包含子文件夹)
21.Linux系统中,从后台启动进程,应在命令的结尾加上&。:orange:

如何让进程后台运行

是的,这是在默认的Linux系统中启动后台进程的方法之一。在Linux系统中,当我们执行一个命令时,它会占用当前的终端并且直到该命令执行完毕后才会返回控制权。如果需要在后台运行该命令,可以在命令的末尾加上一个“&”符号。这样就可以让命令在后台运行,并立即返回控制权。

例如,如果我们要在后台运行一个脚本文件my_script.sh,则可以使用以下命令:

$ ./my_script.sh &

这将使my_script.sh在后台运行,并立即返回终端的控制权。如果我们希望查看该进程的输出信息,则可以使用ps命令查看进程ID,然后使用tail命令查看输出信息,例如:

$ ps aux | grep my_script.sh
$ tail -f my_script.log

请注意,在后台运行进程时,我们需要注意进程是否产生了输出信息,以及如何监视该输出信息。如果我们不关心进程的输出信息,则可以将其输出重定向到一个文件中,例如:

$ ./my_script.sh > my_script.log &

这将把my_script.sh的输出信息重定向到my_script.log文件中,以便我们稍后查看。

22.Linux关机、重启的命令有哪些?

关机命令:halt、shutdown -h 时间、init0、poweroff。

重启命令:reboot、shutdown -r 时间、init6。

注意:shutdown可以安全地关闭或重启Linux系统,它在系统关闭之前给系统上所有登录用户提示一条警告信息,还允许用户设置一个缓冲时间。

23.请写出下列常用命令?
Linux查看线程ID ①ps -T -p 进程号②top -H -p 进程号③pstree -Aup -h 进程号
Linux设置文件目录权限 chmod
uboot查看环境变量 printenv
创建文件 touch
创建目录 mkdir
24.如何查看正在使用的有哪些中断号?
cat /proc/interrupt
25.如何用命令打开终端?

CTRL + ALT + T或在菜单搜索栏中提供终端来启动终端。

VIM

26.VIM安装与配置

安装

$ sudo apt-get install vim  ctags cscope
$ cd ~/linux-4.9.140  //进入源码目录   
$ ctags   -R    //生成符号关联  
$ cscope -Rbkq  //生成索引库

配置

vim ~/.vimrc   添加vim 的配置文件
27.VIM三大模式和最常用命令
  • 命令模式
//切换到输入模式
i  //进入插入状态(按下i ,并不会输入一个字符,而被当作一个命令insert)
   //再输入字符,会插入在光标前
a  //进入追加状态(再输入字符,会追加在光标后)
o  //进入新一行输入状态(再输入字符,会在新一行输入)
   
//移动光标
     k 上 
h 前       l 后 
     j 下
     
r  //取代光标处的字符
x  //删除当前光标所在处的字符。

//打开默认的模式
ctrl + f  //下翻页
ctrl + b  //上翻页 
gg        //跳到第一行
shift + g //跳到最后一行

yy           //复制一行
v + h/j/k/l  //选取字符串
y            //复制
p            //粘贴 

dd        //删除一整行
ndd       //3dd: 删除3行

u         //撤销,复原前一个动作
Ctrl+r    //反撤销,回退到修改前状态

i   //命令模式切换到编辑模式,直接按键盘上的i,出现INSERT 
:   //命令模式切换到底行模式(即可在最底一行输入命令)   
  • 编辑模式

    编辑模式我们可以在这个模式上输入一些文本。

Esc //切换到命令模式
  • 底行模式
:w  //写入 
:q  //退出 
:wq //写入并退出
:q! //不保存退出
    
/word  //搜索字符串 word
       // n: 查找下一个  shift + n: 查找上一个 

:set nu //显示行号    
:set nu! //隐藏行号   
:30   //光标跳到第30行
 
Backspace //取消底行字符后,自动切换到命令模式	
28.VIM常用命令

移复删撤查,停替存比

vim 编辑器移动光标

命令模式下

K   //向上移动 
J   //向下移动 
H   //向左移动 
L   //向右移动 
Ctrl+F(PageDown)//下翻一屏 
Ctrl+B(PageUp)  //上翻一屏
gg  //将光标定位到第一行 
G   //将光标定位到最后一行 
ngg //将光标定位到第 n 行

vim 编辑器的文本的复制和粘贴

先将光标放在我们要复制内容的行首,使用上下左右按键来选择文字,选择好之后按键盘上的 Y,接 着按 esc 键回到一般模式,把光标移动到我们要粘贴的地方,然后按键盘上的 p

v + h/j/k/l  //选取字符串
y            //复制
p            //粘贴 
yy           //复制一行 
nyy          //复制当前行下的 n 行

vim 编辑器的删除

方法一:直接进到编辑模式,使用 delete 来删除

方法二:使用 dd 命令

dd           //删除光标所在行 
ndd          //删除 n 行 
n1,n2d       //删除指定范围的行。需要在命令行模式下操作。

vim 编辑器的撤销

撤销是在一般模式下,而且我们关闭过的文本文件就不能在这做撤销动作了

u            //撤销
ctrl+r       //反撤销

vim 编辑器的查找

在命令行模式下输入 “/” 或者 “?” 来查找的。

向下查找就是点击键盘上的“n”,他会向下查找了,按 ESC 回到一般模式,然后输入“?”,然后再 输入 da,敲下回车,然后按 n,他就会向上查找,所以说我们想要向上查找的话,我们使用“?”进到命 令行模式。

/xxx     n   //向下查找xxx,shift + n: 查找上一个
?xxx     n   //向上查找xxx

vim 编辑器的暂停和返回

Ctrl+Z       //暂停当前Vim回到Linux页面
fg+enter     //回到中断的程序页面

vim 编辑器的替换

命令行模式

%s /old/new/g

vim编辑器的保存

:q!         //强行退出 
:wq         //保存退出 
:q          //退出没有编辑过的文本

vim 编辑器文件的对比

vimdiff file1 file2 file3
29.vim + cscope + ctags常用命令
Ctrl + ]  //调到定义处
Ctrl + o  //返回上一次位置
          //Ctrl + i  再返回
g f	      //跳到光标停留的include的头文件里	
d w       //删除个字符串
u         //可无限撤销
:cs f f driver.c   //搜索 driver.c 文件
g d       //选中当前光标处的字符串
          //再 n  查找下一个	
ctrl shift  -  s   //查找光标处的字符串
                   // j:下一条  k:上一条  f:下一页  b:上一页  shift+g: 到末尾
:cs f s attach     //全局 搜索字符串 attach【比Source Insight快】     
Ctrl+w v  //  垂直分割窗口
          //  Ctrl+w w 可在窗口间切换
          //  :q退出光标所在窗口
ctrl +    //变大字体
:e  .     //编辑当前目录

GCC

30.gcc编译4步骤

alt

  1. 预处理:在这一步,gcc会处理源代码文件中的宏定义、条件编译指令等预处理指令,并将它们替换成实际的代码

    gcc -E source_file.c -o preprocessed_file.i
    

    这个命令会将source_file.c文件进行预处理,并将结果保存到preprocessed_file.i文件中。

  2. 编译:在这一步,gcc会将预处理后的源代码翻译成汇编语言

    gcc -S preprocessed_file.i -o assembly_file.s
    

    这个命令会将preprocessed_file.i文件进行编译,并将结果保存到assembly_file.s文件中。

  3. 汇编:在这一步,gcc会将汇编代码翻译成机器码

    gcc -c assembly_file.s -o object_file.o
    

    这个命令会将assembly_file.s文件进行汇编,并将结果保存到object_file.o文件中。

  4. 链接:在这一步,gcc会将目标文件(object_file.o)与必要的库文件链接在一起,生成最终的可执行文件

    gcc object_file.o -o executable_file
    

    这个命令会将object_file.o文件进行链接,并将结果保存到executable_file文件中。

31.gcc编译常用参数
gcc -I ./hellodir hello.c -o hello
  • 当头文件和源码不在一个目录下时,需要指定头文件
  • 其中-I参数指定头文件所在位置,位置可以在编译文件前,

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

【嵌入式八股】嵌入式Linux 文章被收录于专栏

查阅整理上千份嵌入式面经,将相关资料汇集于此,主要包括: 0.简历面试 1.语言篇 2.计算机基础 3.硬件篇 4.嵌入式Linux【本专栏】 (建议PC端查看)

全部评论
问一下,系统调用失败怎么解决?
点赞 回复 分享
发布于 2023-03-25 19:24 黑龙江
零基础学得要多久?
点赞 回复 分享
发布于 2023-03-25 19:36 湖北
点赞 回复 分享
发布于 2023-04-02 09:58 辽宁

相关推荐

贺兰星辰:其他offer这块,如果你觉得你竞争力比较强或者不太想去这家公司,就如实说,否则就说还没有; 外地你就说发展好呗,或者说对地域没有什么倾向性,都可以; 薪资范围这个你就说参考了以往的同类型公司的薪资范围,结合自己的能力水平给了这样一个价格
查看3道真题和解析
点赞 评论 收藏
分享
5 7 评论
分享
牛客网
牛客企业服务