两个半天一刷Ubuntu入门指令

2023-05-16

目录

两个半天一刷Ubuntu入门指令

一. Ubuntu初次体验

二. 设备驱动

三. Ubuntu用户组及其权限分配

四. 压缩解压

五. Linux连接文件

六. vim编辑器

七. Linux下C编程

八. gcc和make及其Makefile的引入

九. Shell脚本:


两个半天一刷Ubuntu入门指令

  • Ubuntu初次体验

对于拥有图像化界面的Linux系统可以比较好的从Windows系统习惯过来。如果实在是无法安装桌面的系统版本就只能心中想象吧。

  • 设备驱动

外部设备的挂载和取消挂载,例如U盘的挂载。可以通过原始的命令行进行扇区分配,相比于Windows的借助于软件进行格式化显得更加麻烦,但是能够更加深刻的认识到内存磁盘的分配,有利于建立后续上升到Linux开发板上进行硬件开发。

  • Ubuntu用户组及其权限分配

这是windows上从来没有过的体验,很像手机安装app后的权限管理(个人理解,可能会有错误)

  • 压缩解压

Ubuntu的压缩和解压很强大,gzip和bzip2还有tar真的很强大,能够使用的格式超级多,是普通解压软件无法媲美的。

文件系统结构跟widows几乎是不一样的得重新熟悉,到时候用着用着就能记住了,熟能生巧。

  • Linux连接文件

Linux有两种连接文件:符号连接(软连接)和硬链接,

符号链接类似Windows下的快捷方式。

硬链接通过文件系统的inode连接来产生新文件名,而不是产生新文件。(都删了这个文件才会被删除)

硬连接感觉像是给一个文件进行多个命名,就好比人一样每个人都有自己的名字还有化名和绰号啥都,其实本质都是一个人。硬连接得把所有连接删除完才算是真的删除干净。

inode:记录文件属性,一个文件一个inode。inode相当于文件ID,查找文件的时候要先找到inode,然后才能读出文件的内容。

  • vim编辑器

对于刚开始使用的人会感觉很反人类(现在的我就觉得用的挺不习惯的),如果是一点都不知道vim或者vi的使用的人,可能连如何进行文本的添加和修改都不能做到,因为vim有四种模式分别是:命令模式,可视化模式,编辑模式,末行模式。要想进行操作就得进入相应的模式,每个模式都是有快捷键的(由于这是我一刷Ubuntu入门指令所以也不能特别详细的说明很多快捷键)。基础的快捷键就是:

在命令模式下i或者a进入编辑模式,i是出现在光标的左边开始编辑,a是出现在光标的右边开始编辑。

在命令模式下dd,就是删除光标所在的一行,一行一行删除太慢了就“number”dd,number就是想要删除的行数这样就是删除光标及其后面的number-1行,如果不足number行就把后面全部删除完毕。

最重要的就是保存所写文件,按Esc推出编辑模式进入命令模式:w就是保存但是不退出,:wq就是保存并且退出。:q!强制退出不保存。

以上都是常用的快捷键,还有特别多快捷键都还没有介绍,其他的快捷键就自行上网搜索吧,太多了。

!!!注意:对于vim或者vi编辑器,作为小白的我建议能用则用吧,但是在不熟悉的时候该怂还得怂,比如学过单片机的同学都知道模块化编程,这样会有很多的文件.c和.h,这个时候如果要用vi来写的话,不报错就没事,如果报错就G,因为你每个终端只能打开一个vim或者vi编辑器。所以很是麻烦,如果有条件还是用gedit吧,应为可以同时存在多个文本,更加适合写中小型的脚本demo。(当然大佬随意,这是作为一个从MCU转换到Linux进行代码编写的一种习惯过度的建议吧!当然很有可能是我对vim或者vi的使用不正确导致的吧,毕竟是一刷,希望每一次的总结会更加倾向于vim或者vi吧。)

  • Linux下C编程

到了最重头戏的地方了,既然讲完了编辑器那么就得开始写代码了。在Linux下进行C的编程。个人总结完全就是用着C语言的代码但是得遵循python的代码书写格式,这对于没有接触过python的人来说就是噩梦。如果是两种都没有接触过的那就没有影响了,这样反而能规范自己的代码书写。

当然书写规范不是最头疼的!!!注意!!!空格非常重要 空格非常重要 空格非常重要!!!

应为在vim或vi编辑器下书写代码的时候经常会发先我明明代码和书上一样为什么就是报错或者运行不对呢。这时候就要想到空格上了。很多命令之间是需要空格的,如果你以为就是空格就完事的话就说明你还是太年轻了。因为同一个命令在不同的地方可能就有不同的要求,就比如说“=”,有的时候需要在两边加上空格,有的时候不能加上空格,就很玄学。由于是一刷我把我说知道的一些坑先填上:

1.定义变量时, =号的两边不可以留空格.

eg:
gender=femal————right
gender =femal———–wrong
gender= femal———–wrong


2.条件测试语句 [ 符号的两边都要留空格.
eg:
if [ $gender = femal ]; then——-right.
echo “you are femal”;
fi

if[ $gender...-----------------------wrong
if [$gender...----------------------wrong.

  1. 条件测试的内容,如果是字符串比较的话, 比较符号两边要留空格!
    eg:
    if [ $gender = femal ]; then——-right.
    if [ $gender= femal ]; then——–wrong.
    if [ $gender=femal ]; then———wrong.

  1. 如果if 和 then写在同一行, 那么,注意, then的前面要跟上 ; 号.如果 then 换行写, 那么也没问题.
    eg:
    if [ $gender = femal ]; then——-right.
    if [ $gender = femal ]
    then——————————-right.
    if [ $gender = femal ] then——-wrong. then前面少了 ; 号.
    提示出错信息:
    syntax error near unexpected token then
    同理,还有很多出错信息 比如
    syntax error near unexpected token fi 等都是这样引起的.

  1. if 后面一定要跟上 then. 同理
    elif 后面一定要跟上 then.
    不然提示出错信息:
    syntax error near unexpected token else
  1. if 语句后面需要跟着then,同时前面要有分号;
    2) 空格非常重要,shell 会认为空格前的为一个命令,如果a=3 认为是赋值操作,如果写成a = 3,那么就会认为a为一个命令 this=`ls -l |grep ‘^-’ | wc -l `
    3) 操作符之间要用空格分开 ,如 test ! -d $1,其中的!和-d就要用空格分开
    空格是命令解析中的重要分隔符

6. 命令和其后的参数或对象之间一定要有空格

if [ -x"~/Workspace/shell/a.sh" ];then

只有 -x 后有空格才表示紧跟其后的字符串是否指向一个可执行的文件名,否则就成了测试 -x"~/Workspace/shell/a.sh" 这个字符串是不是空。

  1. 取变量值的符号'$'和后边的变量或括号不能有空格。

千万不要小看一个空格,要是你心态不好的话可能真就是从入门到放弃了。

  • gcc和make及其Makefile的引入

既然写了代码那么就得进行编译,Linux不像在Windows环境下进行开发能有集成IDE,在Linux下只能自己来编译文本。make和Makefile就体现了他的作用了。

Gcc:使用 GCC 编译器在 Linux 进行 C 语言编译,通过在终端执行 gcc 命令来完成 C 文件的编译。如果我们的工程只有一两个 C 文件还好,需要输入的命令不多,当文件有几十、上百甚至上万个的时候用终端输入 GCC 命令的方法显然是不现实的。如果我们能够编写一个文件,这个文件描述了编译哪些源码文件、如何编译那就好了,每次需要编译工程的时只需要使用这个文件就行了。

make:为此提出了一个解决大工程编译的工具:make,描述哪些文件需要编译、哪些需要重新编译的文件就叫做 Makefile, Makefile 就跟脚本文件一样,Makefile 里面还可以执行系统命令。使用的时候只需要一个 make命令即可完成整个工程的自动编译,极大的提高了软件开发的效率。由于Makefile很深奥具体到可以写一本书了,这书的厚度让我不敢拿来压泡面了都。所以就进行一个简单的基础入门了解。作为一个专业的程序员,是一定要懂得Makefile 的,一是因为在 Linux 下你不得不懂Makefile,再就是通过 Makefile 你就能了解整个工程的处理过程。

例子:将main.c input.c calcu.c input.h calcu.h这五个文件进行编译

main: main.o input.o calcu.o  //main 依赖与.o文件

gcc  -o main main.o input.o calcu.o

main.o: main.c  //.o文件依赖与.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

代码其实就是一层一层的依赖关系。但是这样依旧还是很麻烦,得需要多次重复输入文件名称,而且在vim和vi编辑器下复制粘贴效率并不高。所以我们引入变量及其模式规则这个概念,可以大大提高效率了。

#Makefile变量及其模式规则的使用

objects = main.o input.o calcu.o  //定义objects这个变量=要编译的.o文件

main: $(objects)  //调用这个变量,等效所有将要编译的.o文件

gcc  -o main $(objects)

%.o : %.c  //所有.o文件依赖所有.c文件

gcc -c $<  //编译所有.c文件

clean:

rm *.o

rm main

后面还有太多的使用方法了,用的最多的就暂时是这些了(其实是由于一刷,很多都没有接触到)。

  • Shell脚本:

shell脚本是个纯文本文件,扩展名为.sh。命令从上而下,一行一行的开始执行。shell脚本第一行一定要为:#!/bin/bash表示使用bash。

要执行shell脚本,必须添加文件权限,添加所有权限使用命令chomd 777

交互式shell脚本:使用read作为shell的输入。Linux read命令用于从标准输入读取数值。read 内部命令被用来从标准输入读取单行数据。这个命令可以用来读取键盘输入,相当于C语言里面的scanf。当然read还有很多后缀的都有自己的作用。

-a  后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符

-d  后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志

-p  后面跟提示信息,即在输入前打印提示信息

-e  在输入的时候可以使用命令补全功能

-n  后跟一个数字,定义输入文本的长度

-r  屏蔽\,如果没有该选项,则\作为一个转义字符,有的话 \就是个正常的字符了

-s  安静模式,在输入字符时不再屏幕上显示

-t  后面跟秒数,定义输入字符的等待时间

-u  后面跟fd,从文件描述符中读入,该文件描述符可以是exec新开启的

还有很多类似于read的命令在这就不多阐述了,实在是太多了。例如:test命令,&&与||命令,[]判断符,shell脚本默认参数,shell脚本条件判断、函数和循环等等。

值得一提的是:

cmd1 && cmd2 当cmd1执行完并且正确,那么cmd2开始执行,如果cmd1执行完毕错误,那么cmd2不执行。

cmd1 || cmd2当cmd1执行完毕并正确,那么cmd2不执行,如果cmd1执行完毕错误,那么cmd2执行。

以上就是两个半天一刷的Ubuntu入门总结。由于项目需要只能这样赶进度了,若有需要以后还会继续回来学习的。期待N刷总结。。。。。

代码和部分讲解使用的是正点原子Ubuntu入门教程的教程。如有侵权联系删除。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

两个半天一刷Ubuntu入门指令 的相关文章

  • STM32的常用C语言

    文章目录 一些被坑了的注意点 int16 define结构体与共用体指针 C语言发展史C语言概述C90 标准C99标准C11标准 C编译o代替c 条件语句else ifdo while 变量定义一个字符串字符串结尾 定义一个字符串数组sta
  • STM32应用霍尔转速传感器基于输入捕获

    这里我用通用定时器3的通道1来测量转速 霍尔转速传感器基本介绍霍尔传感器分类和原理关于为什么选用开关型常开PNP型霍尔传感器 STM32程序实现程序介绍程序源码TIM3 CAP HTIM3 CAP H解读TIM3 CAP CTIM3 CAP
  • Android so库开发——使用Studio生成自己的so库(一)

    一 创建Native项目 1 新建 Native 项目 1 xff09 新建项目 选择最下面的 Native C 43 43 下一步即可 2 xff09 填写项目信息 3 xff09 选择C 43 43 版本可以直接选择默认 2 下载并配置
  • C语言实现线性回归求斜率

    2020 11 22 修改 span class token comment 线性回归求斜率 注意数据类型 参数 count 数据个数 数组行 列 的个数 数组的行列数目相等 参数 dataCol X 数据的列数据 参数 dataRow Y
  • 【C语言】详解位域定义与使用

    位域的定义 span class token keyword struct span span class token class name bit span span class token punctuation span span c
  • C语言实现MQTT协议(一)协议讲解

    MQTT介绍 MQTT是一个客户端服务端架构的发布 订阅模式的消息传输协议 它的设计思想是轻巧 开放 简单 规范 xff0c 易于实现 这些特点使得它对很多场景来说都是很好的选择 xff0c 特别是对于受限的环境如机器与机器的通信 xff0
  • 【STM32】HAL库-外部中断

    外部中断框图 产生中断 硬件触发外部中断 配置中断屏蔽寄存器中的屏蔽位 xff0c 允许该外部中断请求 通过AFIO EXTICRx配置GPIO线上的外部中断 事件 xff0c 必须先使能AFIO时钟 选择外部中断的触发边沿 xff0c 上
  • 【STM32】HAL库-系统滴答定时器SysTick

    SysTick定时器被捆绑在NVIC中 xff0c 是一个简单的定时器 xff0c 对于CM3 CM4内核芯片 xff0c 都有Systick定时器 Systick定时器常用来做延时 xff0c 或者实时系统的心跳时钟 这样可以节省MCU资
  • 【STM32】HAL库-串口USART

    USART简介 通用同步异步收发器 USART 提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换 USART利用分数波特率发生器提供宽范围的波特率选择 一个波特率寄存器 USART BRR xff0c
  • 【STM32】HAL库-通用定时器

    简介 通用定时器是一个通过可编程预分频器驱动的16位自动装载计数器构成 它适用于多种场合 xff0c 包括测量输入信号的脉冲长度 输入捕获 或者产生输出波形 输出比较和PWM 使用定时器预分频器和RCC时钟控制器预分频器 xff0c 脉冲长
  • 【STM32】HAL库-SPI

    3线全双工同步传输 带或不带第三根双向数据线的双线单工同步传输 8或16位传输帧格式选择 主或从操作 支持多主模式 8个主模式波特率预分频系数 最大为fPCLK 2 从模式频率 最大为fPCLK 2 主模式和从模式的快速通信 主模式和从模式
  • 【STM32】标准库-以太网外设-LAN8720A-LWIP-无操作系统

    TCP IP模型 TCP IP 只有四个分层 xff0c 分别为应用层 传输层 网络层以及网络访问层 xff08 物理层 xff09 实际上 xff0c 还有一个 TCP IP 混合模型 xff0c 分为五个层 它实际与 TCP IP四层模
  • 【STM32】标准库-LTDC-DMA2D

    LTDC STM32F429 系列芯片内部自带一个 LTDC 液晶控制器 xff0c 使用 SDRAM 的部分空间作为显存 xff0c 可直 接控制液晶面板 xff0c 无需额外增加液晶控制器芯片 STM32 的 LTDC 液晶控制器最高支
  • 【STM32】HAL库-以太网外设-LAN8720A-LWIP-无操作系统

    开发环境 KEIL MDK ARM 5 27MCU STM32F429IGT6PHY IC LAN8720ALWIP LWIP2 1 2STM32CUBEMX 6 6 1HAL V1 27 1 LAN8720A使用RMII接口与STM32的
  • git学习

    常用命令 查看当前文件夹下的文件与文件夹 xff1a ls ll 进入当前文件夹下的user文件夹 xff1a cd user 查看当前文件夹下的test txt文件 xff1a cat test txt 返回上一级目录 xff1a cd
  • 电赛专题---一.概述【电赛简介 /信号类需要准备什么?/怎么才能打好电赛?】

    1 电赛简介 全国大学生电子设计竞赛 xff08 National Undergraduate Electronics Design Contest xff09 是教育部和工业和信息化部共同发起的大学生学科竞赛之一 xff0c 是面向大学生
  • Postman安装

    1 官网下载 下载链接地址 xff1a https www postman com downloads 点击Download the App 根据自己的电脑以及需求选择对应的32位或者64位的版本 2 双击安装包 xff0c 不用任何操作
  • UART串口通信

    串口是 串行接口 的简称 xff0c 即采用串行通信方式的接口 串行通信将数据字节分成一位一位的形式在一条数据线上逐个传送 xff0c 其特点是通信线路简单 xff0c 但传输速度较慢 因此串口广泛应用于嵌入式 工业控制等领域中对数据传输速
  • Java第四课数据类型(二)

    一 变量类型 1 字节型 byte 2 整型 xff08 1 xff09 int 整型 4字节 xff08 2 xff09 show 短型 2字节 xff08 3 xff09 long 长型 8字节 3 浮点型 xff08 1 xff09
  • ESP32蓝牙配网

    注意 menuconfig 配置 xff08 必须打开蓝牙我这是C2所以使用NimBLE xff09 可以直接从demo的配置文件拷贝 Component config gt Bluetooth gt NimBLE BLE only Com

随机推荐