1.虚拟机与Linux操作系统

        虚拟机-VmWare

        Linux操作系统 - Ubuntu

        图1 VmWare下Ubuntu操作系统挂起图

2. Linux系统介绍

2.1 Linux版本:

        Red Hat Enterprise Linux (RHEL):是企业级 Linux 发行版,主要用于服务器和企业环境。

        Ubuntu :面向个人用户,免费使用,适合桌面和开发环境。

uname -a        查看内核版本
cat /etc/issue  查看系统版本

student@student-machine:~$ uname -a
Linux student-machine 4.4.0-109-generic #132-Ubuntu SMP Tue Jan 9 19:52:39 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
#显示当前系统为 Linux,内核版本 4.4.0-109-generic,64 位 x86 架构,Ubuntu 发行版,构建于 2018 年 1 月 9 日。

student@student-machine:~$ cat /etc/issue
Ubuntu 16.04.5 LTS \n \l

2.2 操作系统的基本概念:

        操作系统是 计算机硬件 和 计算机软件 之间 的核心程序,它直接运行在“裸机”上,任何其他软件都必须在操作系统的支持下才能运行。换句话说,操作系统是用户与计算机硬件之间的桥梁,同时也是计算机硬件与其他软件之间的接口。操作系统的 主要功能 包括 管理计算机系统的硬件、软件及数据资源,控制程序运行,改善人机界面,并为其他应用程序提供支持,从而使计算机系统的 所有资源 能够 最大限度 地发挥作用。现代操作系统提供了多种形式的用户界面,为用户创造了良好的工作环境,同时也为其他软件的开发提供了必要的服务和相应的接口。

2.3 嵌入式操作系统的概念:

        嵌入式操作系统  是为嵌入式系统设计的专用操作系统。与传统的通用操作系统(如 Windows、Linux)相比,嵌入式操作系统在功能、设计目标和使用场景上有显著的不同。在设计目标上,前者专为特定硬件和应用场景设计,注重 实时性资源效率 和 可靠性;而后者 面向广泛的硬件和应用场景,注重 通用性多功能性 和 用户体验。在资源占用上,前者占用资源极少,通常运行在内存和存储空间有限的设备上;后者占用资源较多,通常需要较大的内存和存储空间。此外,嵌入式操作系统通常具有 实时操作系统(RTOS) 的特性,针对特定硬件平台优化,通常与硬件紧密集成。

3. Linux系统的基本操作

        我们在使用Ubuntu系统的时候,不会去使用图形化界面,而是直接使用终端进行命令操作,这个是因为我们的UI是需要系统资源的,很多嵌入式设备的内部资源不多,所以很多时候不会给我们部署UI界面。

3.1 打开终端的方式:

        我们写命令的地方就叫做终端:

        那么打开终端有下面几种方式:

        方法一:点击左侧任务栏中的终端

        方法二:使用快捷键进行打开:

        ctrl + alt + t 打开一个新终端 固定从家目录打开

        ctrl + shift + n 打开一个同路径的终端

        ctrl + shift + t 打开一个同路径的终端,并且会有一个到导航栏

3.2 调整终端的方式:

        字体大小控制 通过 配置文件首选项 来调整。

       ctrl shift ‘+’ 进行放大终端

       ctrl ‘-’ 进行缩小终端

       ctrl shift c 进行复制

       ctrl shift v 进行粘贴

4. shell命令

        随着各种Linux系统的图形化程度不断提高,用户在桌面环境下,通过点击、拖拽等操作可以完成大部分的操作。然而,许多的Ubuntu Linux功能使用shell命令来实现,通常比使用图形化交互完成得更快、更直接。下面,我们来详细介绍一下shell。

        Shell,直译为“贝壳”,在操作系统中,它负责完成用户与内核之间的交互,充当着“内核”的外层保护工具。

        在理解shell之前,我们需要先明确以下三个核心概念:

        ①命令:命令是用户向系统内核发送控制请求的文本流。也就是说,当你在命令行中键入一行文字并按下回车键时,你实际上是在给系统发送一个命令,告诉它你希望它执行什么操作。

        ②Shell:Shell是一个命令行解释器,将用户的命令解析为操作系统所能理解的指令。也就是说,当你键入一个命令时,Shell会接收这个命令,解析它,然后将其转化为内核可以理解的指令。

        ③Shell脚本:命令的集合。ls 命令在Linux中是称之为shell,由多个shell命令组成,我们称之为shell脚本。

4.1 shell命令提示符 

        Shell命令提示符标识了命令行的开始。用户在提示符后面输入一条命令,然后按【回车】,完成向系统提交指令。Shell提示符的一般格式如下:

student@student-machine:~$

student : 用户名,显示当前登录用户的账户名。
student-machine : 主机名。例如远程登录后,则显示登录的主机名。
~$ : 目录名,显示当前路径。在根目录下的时候显示为”/“,当在用户主目录下的时候显示为“~”。 

  ~$不仅仅是目录名,还代表了提示符的结尾和用户类型。$表示你是普通用户,而#表示你是超级用户(root用户)。例如,如果你以root用户身份登录,你可能会看到类似以下的提示符: 

root@hostname:~#

        这意味着你现在是root用户,有权限执行可能会影响系统的命令。

        关于目录的部分,~的确代表用户的主目录,也就是/home/。这是Linux中的一种简化表达方式,方便用户快速访问自己的主目录。例如,你可以使用cd ~命令快速返回到你的主目录,无论你当前在文件系统的哪个位置。

        你在命令行中看到的路径通常是相对于你当前目录的路径。如果路径以/开头,那就是绝对路径,表示从根目录开始的完整路径。如果没有以/开头,那就是相对路径,表示从当前目录开始的路径。

4.2 命令格式

        Linux shell命令一般由三部分组成:命令名称、选项和参数,其中只有命名名称是必须的,选项和参数是可选的。命令的格式一般如下:

ls  -a   ../123/

  命令   选项    参数

命令是一定要写的 选项 和 参数 是不一定要写的

选项 : 是命令的扩展操作

参数 : 是命令的操作对象

例如,ls -l /桌面 这条命令,ls 是命令名称,表示列出目录内容,-l 是选项,表示以长格式列出文件信息,/桌面 是参数,表示要列出的目录。

5. Linux基础命令

5.1 目录的相关操作

5.1.1 man:帮助文档

        命令格式 man [参数]

        参数为命令名称

        man 1 命令

        man 2 系统调用

        man 3 库函数

        退出使用 q

5.1.2 ls:列出文件 

        作用:列出当前目录内有那些文件

        格式:ls [选项] [参数]

        其中选项包括多种,可用于改变命令的行为或提供额外的信息。文件为要列出的文件或目录,可指定一个或多个。

student@student-machine:~$ ls /home/student
examples.desktop  公共的  模板  视频  图片  文档  下载  音乐  桌面

​ -a 列出目录中所有文件,包括隐藏文件(以.开头的文件)

​ -l 使用长列表格式显示文件,包括文件类型、权限、链接数、所有者、群组、大小、最近修改时间

​ -h 与 -l 选项一起使用时,以易读的方式显示文件大小

​ -r 反向排序

​ -t 按修改时间排序

​ -R 递归列出子目录中的文件

        练习:

        1. 使用ls 来查看根目录的文件 以及隐藏文件

student@student-machine:~$ ls -a /
.     cdrom  initrd.img      lost+found  proc  snap  usr
..    dev    initrd.img.old  media       root  srv   var
bin   etc    lib             mnt         run   sys   vmlinuz
boot  home   lib64           opt         sbin  tmp   vmlinuz.old

        2. 使用ls 来查看根目录的详细信息 以及隐藏文件

student@student-machine:~$ ls -la /
总用量 108
drwxr-xr-x  24 root root  4096 1月  15  2018 .
drwxr-xr-x  24 root root  4096 1月  15  2018 ..
drwxr-xr-x   2 root root  4096 2月  14  2019 bin
drwxr-xr-x   3 root root  4096 2月  14  2019 boot
drwxrwxr-x   2 root root  4096 1月  13  2018 cdrom
drwxr-xr-x  19 root root  4000 2月  28 16:58 dev
drwxr-xr-x 136 root root 12288 2月  28 16:58 etc
drwxr-xr-x   3 root root  4096 3月  24  2020 home
lrwxrwxrwx   1 root root    33 1月  15  2018 initrd.img -> boot/initrd.img-4.4.0-109-generic
lrwxrwxrwx   1 root root    32 1月  13  2018 initrd.img.old -> boot/initrd.img-4.4.0-21-generic
......

        3. 使用ls 来递归显示家目录的所用文件 以及隐藏文件

student@student-machine:~$ ls -laR ~
/home/student:
总用量 140
drwxr-xr-x 19 student student 4096 2月  28 17:06 .
drwxr-xr-x  3 root    root    4096 3月  24  2020 ..
-rw-------  1 student student  299 3月  24  2020 .bash_history
-rw-r--r--  1 student student  220 3月  24  2020 .bash_logout
-rw-r--r--  1 student student 3771 3月  24  2020 .bashrc
drwx------ 10 student student 4096 2月  28 17:08 .cache
drwx------  3 student student 4096 3月  24  2020 .compiz
drwx------ 19 student student 4096 3月  24  2020 .config
......

5.1.3 cd:切换目录

  cd 命令用于改变当前工作目录。

       cd [参数] 

       参数为目标工作目录,可以是绝对路径或相对路径。

        当使用 cd 不带参数的时候,跳转到家目录

        绝对路径:从 根目录 开始 /

        相对路径:从 当前文件路径 开始

$ cd /home/student
$ pwd
/home/student

  cd              回到家目录
  cd ~            回到家目录
  ~ == home/student
  cd ./           本目录
  cd ../          上一级目录
  cd ../123/      上一级目录下的 123 文件夹

   cd 命令会根据指定的路径切换工作目录。如果没有指定路径,则默认回到当前用户的主目录(即家目录,例如 /home/student)。

        要切换到指定目录,用户必须对目标目录有执行(x)和读(r)权限,否则 cd 命令会返回错误信息。

   cd 命令可以接受绝对路径和相对路径作为参数。绝对路径从根目录 (/) 开始,而相对路径则是相对于当前工作目录。

        如果路径名中含有空格,可以将整个路径名用双引号或单引号括起来,或使用反斜线 (\) 来转义空格。例如:cd "My Documents" 或 cd My\ Documents

5.1.4 pwd、whoami

   pwd命令用于打印当前工作目录的完整路径。 whoami打印当前用户

student@student-machine:~$ pwd
/home/student

student@student-machine:~$ whoami 
student

5.1.5 mkdir: 创建目录

        mkdir 命令用于创建新的目录。

        mkdir [选项] 参数 

        `-p`:创建目录的同时,如果必要,也会创建父目录

        mkdir Test                      创建一个文件夹
        mkdir -p Test/day01/001/001     创建多个 如果父目录不存在则创建

student@student-machine:~$ mkdir Test
student@student-machine:~$ ls
examples.desktop  Test  公共的  模板  视频  图片  文档  下载  音乐  桌面

   mkdir 命令允许用户创建新的目录。用户必须对新目录的父目录有写权限,否则 mkdir 命令会返回错误信息。

        如果指定的目录已存在,mkdir 命令默认不会进行任何操作。如果你希望在这种情况下也创建新目录,可以使用 -p 选项。

5.1.6 rmdir: 删除空目录

        rmdir 命令用于删除空的目录。
        rmdir [option] directory        

  directory 参数指定要删除的目录。

student@student-machine:~$ rmdir Test
student@student-machine:~$ ls
examples.desktop  公共的  模板  视频  图片  文档  下载  音乐  桌面

   rmdir 命令用于删除目录,但要注意,只有当目录为空时,才能成功删除。如果目录中包含任何文件或子目录,rmdir 命令会返回错误信息。

        为了使用 rmdir 命令删除目录,用户必须对目标目录的父目录有写权限。

5.2 文件的相关操作

5.2.1 cp 复制文件或目录

        复制文件或目录
        cp [选项] 源文件 目标路径 

        -i:覆盖前先询问用户
        -r 或 -R:复制目录及目录内的所有项目
        -v:显示操作的过程

student@student-machine:~$ cp file1 file2

         这个命令将会把file1复制为file2。如果file2已经存在,这个命令将会覆盖file2

student@student-machine:~$ cp -r dir1 dir2

         这个命令将会把dir1以及dir1中的所有内容复制到dir2中。如果dir2不存在,这个命令将会创建dir2,然后复制dir1中的所有内容到dir2中。

5.2.2 mv 移动 / 重命名文件或目录

        移动文件或目录,或者重命名文件或目录

        mv [选项] 源文件 目标目录

        -f : 强制移动(删除),忽略不存在的文件,并且不会提示确认
        -i : 进行交互式删除,系统会在删除每一个文件之前都要求用户确认

student@student-machine:~$ mv file1 dir1

        这个命令将会把file1移动到dir1目录下。如果dir1目录下已经存在名为file1的文件,这个命令将会覆盖那个文件。 

student@student-machine:~$ mv file1 file2

        这个命令将会重命名 file1 文件 为 file2。

5.2.3 rm:删除文件和目录

        删除文件或目录
        rm [选项] 文件名

        -i:交互模式,在删除前询问用户是否操作
        -f:强制删除,忽略不存在的文件,无需提示
        -r 或 -R:递归删除,用于删除目录及其内容

student@student-machine:~/桌面$ ls
test1  test2  test6
student@student-machine:~/桌面$ rm -rf test2
student@student-machine:~/桌面$ ls
test1  test6

        rm 命令会直接删除文件或目录,不会将其移动到回收站。因此,你需要小心使用这个命令,避免删除重要的文件或目录。
        rm -r 命令可以删除目录及其内容。如果你试图使用 rm 命令删除一个目录,会收到一个错误,提示你无法删除目录。
        rm -f 命令会忽略不存在的文件,并且不会提示。
        rm -i 命令在删除每个文件前都会询问你,这可以防止你误删文件。 

        注意:严谨使用 sudo rm -rf /* ==删库跑路==

5.2.4 ln 创建链接

        创建文件或目录的链接
        ln[选项] 源文件名或目录名 链接名

        -s:创建软连接(符号连接)
        -f:强制执行,如果链接文件存在,则删除也存在的文件,然后再创建
        -v :显示指令的详细执行过程

student@student-machine:~/桌面$ ln -s test1 link1
student@student-machine:~/桌面$ ls
link1  test1  test6

        在这个示例中,创建一个名为link1的软链接,该链接指向test1。

student@student-machine:~/桌面$ ln -sf test6 link1
student@student-machine:~/桌面$ ls
link1  test1  test6

        在这个示例中,创建一个名为link1的软链接,该链接指向test6。由于使用了-f选项,所以如果link1已经存在,则会被删除,然后再创建新的链接。 

        ln命令用于创建文件或目录的链接。默认情况下,ln命令创建的是硬链接。如果要创建软链接(也叫符号链接),必须指定-s选项。

        ==硬链接== 是源文件的一个别名,它和源文件指向同一个文件系统中的数据。硬链接不能跨文件系统,也==不能链接到目录==。

        ==软链接== 是一个特殊的文件,它包含了源文件或目录的路径。软链接可以跨文件系统,也可以==链接到目录==。

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐