【Linux实训课程讲义 适用于教授Linux初学者的教学老师】

内容介绍

本博客用于Linux实训课程讲义,适用于对Linux初学者的教学老师。如果你自己已经使用了linux很久,但一时间不知道该对Linux初学者讲什么东西不知道从何讲起,你可以参考本博客。
(部分章节内容不够详细,可以进行一定补充)

一、Linux介绍以及安装

Linux 教程 | 菜鸟教程

1.1 介绍

Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。

Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。

Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

1.1.1 Linux vs Windows

目前国内 Linux 更多的是应用于服务器上,而桌面操作系统更多使用的是 Windows。主要区别如下

比较 Windows Linux
界面 界面统一,外壳程序固定所有 Windows 程序菜单几乎一致,快捷键也几乎相同 图形界面风格依发布版不同而不同,可能互不兼容。GNU/Linux 的终端机是从 UNIX 传承下来,基本命令和操作方法也几乎一致。
驱动程序 驱动程序丰富,版本更新频繁。默认安装程序里面一般包含有该版本发布时流行的硬件驱动程序,之后所出的新硬件驱动依赖于硬件厂商提供。对于一些老硬件,如果没有了原配的驱动有时很难支持。另外,有时硬件厂商未提供所需版本的 Windows 下的驱动,也会比较头痛。 由志愿者开发,由 Linux 核心开发小组发布,很多硬件厂商基于版权考虑并未提供驱动程序,尽管多数无需手动安装,但是涉及安装则相对复杂,使得新用户面对驱动程序问题(是否存在和安装方法)会一筹莫展。但是在开源开发模式下,许多老硬件尽管在Windows下很难支持的也容易找到驱动。HP、Intel、AMD 等硬件厂商逐步不同程度支持开源驱动,问题正在得到缓解。
使用 使用比较简单,容易入门。图形化界面对没有计算机背景知识的用户使用十分有利。 图形界面使用简单,容易入门。文字界面,需要学习才能掌握。
学习 系统构造复杂、变化频繁,且知识、技能淘汰快,深入学习困难。 系统构造简单、稳定,且知识、技能传承性好,深入学习相对容易。
软件 每一种特定功能可能都需要商业软件的支持,需要购买相应的授权。 大部分软件都可以自由获取,同样功能的软件选择较少。

1.1.2 发行版

Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包。

【Linux实训课程讲义 适用于教授Linux初学者的教学老师】_第1张图片

1.2 文件系统

1.2.1 文件系统对比(Linux vs Windows)

最显著对比:与windows不同,Linux没有C盘D盘,它的文件系统从一个根—"/"衍生出来

NTFS FAT32 每一个文件大小《= 4GB

(一)文件系统架构
  • Windows :采用 “树状” 文件系统架构,以盘符(如 C 盘、D 盘等)为根目录,每个磁盘分区都有独立的根目录,文件和文件夹组织在各个盘符下,呈现多树结构,不同盘符之间相互独立。
  • Linux :采用 “倒立树状” 文件系统架构,所有文件和文件系统都挂载到一个统一的根目录(/)下,形成一个统一的文件层次结构,无论系统有多少个磁盘分区或外部存储设备,它们都被整合进这个唯一的根目录树中。
(二)目录结构
  • Windows :目录结构相对较为复杂,包含许多系统文件夹(如系统 32、程序文件等),用户文件通常保存在 “用户” 文件夹下,不同用户的数据相对独立,但整体上文件分布较为分散。
  • Linux :目录结构相对简洁而有条理,每个目录都有其特定的用途,例如 “/” 是根目录,“/bin” 存放用户常用命令,“/etc” 存放系统配置文件,“/home” 存放普通用户主目录,“/var” 存放可变数据文件等,文件组织更加规范化。
(三)文件组织方式
  • Windows :文件组织主要依赖文件资源管理器,用户可以通过图形化界面方便地浏览、复制、移动文件等操作,文件的扩展名通常用于标识文件类型。
  • Linux :既可以通过图形界面工具(如 Nautilus 文件管理器)进行文件操作,也更强调使用命令行工具进行文件管理,文件类型不仅通过扩展名区分,还通过文件的内部结构和权限等信息进行识别,命令行操作在处理批量文件和复杂文件操作场景中更具优势。
(四)文件命名规则
  • Windows :文件名区分大小写,但不强制要求,允许使用长文件名(通常最多 255 个字符),支持多种文件系统(如 NTFS、FAT32 等),不同文件系统对文件名的限制有所不同,例如 FAT32 对文件名长度和特殊字符使用有一定限制。
  • Linux :文件名严格区分大小写,例如 “file.txt” 和 “File.txt” 是两个不同的文件,允许使用长文件名(长度通常可达 255 个字符),对文件名中的特殊字符使用相对宽松,但一些特殊字符(如 “/”)有特定含义,不能用于文件名中。
(五)文件权限管理
  • Windows :文件权限管理主要通过图形界面设置,基于用户和组的访问控制,用户可以对文件和文件夹设置读取、写入、执行等权限,但权限的精细度相对有限,通常以文件或文件夹为单位进行设置。
  • Linux :文件权限管理非常精细,采用基于文件所有者、所属组和其他人的三类权限模型,每类权限又包括读(r)、写(w)、执行(x)三种权限位,通过命令行工具(如 chmod、chown、chgrp)可以灵活地设置和修改文件权限,能够更准确地控制不同用户和组对文件的访问级别。

1.2.2 根目录下每个文件的作用

参考:【Linux】了解根目录下每个文件的作用_linux根目录下的全部文件夹-CSDN博客

Linux 文件系统遵循文件系统层次结构标准(FHS),它规定了各个目录的用途和内容,使得不同 Linux 发行版之间的文件系统结构具有一定的统一性和兼容性。以下是 FHS 中主要目录及其用途的详细介绍:

  • /(根目录) :整个文件系统的最顶层目录,是所有文件和文件系统的挂载点,包含了系统启动和运行所必需的核心文件和目录。
  • /bin :存放用户在系统运行期间可以使用的常用命令,如 ls、cp、mv、rm 等,这些命令对于系统的基本操作和维护至关重要。
  • /sbin :存放系统管理员使用的系统管理命令和程序,如 ifconfig(网络配置命令)、reboot(重启命令)、shutdown(关机命令)等,普通用户通常无法直接执行这些命令,只有具备相应权限的用户(如 root 用户)才能使用。
  • /etc :存放系统的配置文件,这些文件用于配置系统的服务、应用程序和硬件设备等,例如网络配置文件(/etc/network/interfaces)、用户帐户信息文件(/etc/passwd)等,对系统和应用程序的正常运行起着关键的配置作用。
  • /dev :存放设备文件,这些文件代表系统中的硬件设备,如硬盘、光驱、终端设备等,通过设备文件,用户和应用程序可以与硬件设备进行交互,例如读取磁盘数据、控制终端显示等。
  • /proc :一个虚拟的文件系统,存放当前内核和进程的运行信息,它并不占用实际的磁盘空间,而是由内核在内存中动态生成。用户和应用程序可以通过访问 /proc 文件系统中的文件来获取系统和进程的实时状态信息,例如查看 CPU 使用情况(/proc/cpuinfo)、内存使用情况(/proc/meminfo)等。
  • /var :存放系统运行过程中产生的可变数据文件,如日志文件(/var/log)、邮件信箱(/var/mail)、缓存文件(/var/cache)等,这些文件的内容会随着系统的运行而不断变化,与系统的静态配置文件和应用程序数据相区分。
  • /usr :存放系统中非可变的用户数据和应用程序文件,包括用户可执行的命令(/usr/bin)、系统管理命令(/usr/sbin)、库文件(/usr/lib)、文档和手册页(/usr/share/doc、/usr/share/man)等,通常这些文件在系统安装或软件包安装后不会被频繁修改。
  • /home :存放普通用户的主目录,每个用户都有一个单独的主目录,用于存储用户的个人文件、配置文件和应用程序数据等,例如用户 “john” 的主目录为 “/home/john”,用户可以在自己的主目录下自由地创建、修改和删除文件。
  • /tmp :存放临时文件,系统和应用程序在运行过程中会将一些临时数据存储在这个目录下,通常系统会定期清理这个目录中的文件,以释放磁盘空间。
  • /root:root用户的主目录。
  • /opt:存放第三方协力软件放置的目录。什么是第三方协力软件? 举例来说,KDE 这个桌面管理系统是一个独立的计划,不过他可以安装到Linux系统中,因此KDE的软件就建议放置到此目录下了。另外,如果你想要自行安装额外的软件(非原本的 distribution提供的),那也能够将你的软件安装到这里来。不过,以前的Linux系 统中,我们还是习惯放置在/usr/local目录下!

1.2.3 文件系统操作

1. **挂载文件系统** :在 Linux 中,要访问一个存储设备(如硬盘分区、光盘、USB 存储设备等)上的文件,必须先将其挂载到文件系统树中的某个目录下。使用 mount 命令可以实现文件系统的挂载操作,例如:
   * `mount /dev/sdb1 /mnt` :将位于 /dev/sdb1 的分区挂载到 /mnt 目录下,之后就可以通过 /mnt 目录访问该分区中的文件了。

2. **卸载文件系统** :当不再需要访问某个挂载的文件系统时,可以使用 umount 命令将其卸载,例如:
   * `umount /mnt` :卸载之前挂载在 /mnt 目录下的文件系统,在卸载之前需要确保没有进程正在使用该文件系统,否则可能会导致数据丢失或系统错误。

3. **查看文件系统信息** :可以使用 df 命令查看系统中已挂载的文件系统的使用情况,包括磁盘空间使用量、已用空间、可用空间、挂载点等信息,例如:
   * `df -h` :以人类可读的格式(如 GB、MB)显示文件系统的使用情况。

4. **格式化文件系统** :在新分区或存储设备上创建文件系统时,需要进行格式化操作,使用 mkfs 命令可以格式化文件系统,例如:
   * `mkfs.ext4 /dev/sdb1` :将 /dev/sdb1 分区格式化为 ext4 文件系统,在格式化之前需要确保该分区中没有重要数据,因为格式化操作会清除分区上的原有数据。

5. **文件系统检查与修复** :定期对文件系统进行检查和修复是维护系统稳定性和数据完整性的关键步骤,使用 fsck 命令可以检查和修复文件系统中的错误,例如:
   * `fsck /dev/sdb1` :对 /dev/sdb1 分区进行文件系统检查和修复操作,在执行该命令之前,最好先卸载该文件系统,以避免数据损坏和系统不稳定的情况发生。

通过对比 Windows 与 Linux 文件系统,并详细介绍 Linux 文件系统的特点和操作方法,希望初学者能够更好地理解和掌握 Linux 文件系统的知识,为进一步深入学习和使用 Linux 系统奠定坚实的基础。在实际使用过程中,随着实践经验的不断积累,你将能够更加熟练地运用 Linux 文件系统进行文件管理和系统维护工作。

1.3 安装

参考链接 如何在VMware17下安装并运行CentOS Stream 9_centos steam-CSDN博客

安装文件:

通过网盘分享的文件:VMware-workstation-full-17.6.3-24583834.exe
链接: https://pan.baidu.com/s/1WsBzbpTuaqM86l8y3I2xXw?pwd=ihch 提取码: ihch
–来自百度网盘超级会员v4的分享

通过网盘分享的文件:CentOS-Stream-9-latest-x86_64-dvd1.iso
链接: https://pan.baidu.com/s/1ac4Is6hKH_BHhdeVa-tR8g?pwd=af1s 提取码: af1s
–来自百度网盘超级会员v4的分享

在选择是否带GUI时最好带上,对初学者难度较低
【Linux实训课程讲义 适用于教授Linux初学者的教学老师】_第2张图片

二、快捷键与命令

2.1 快捷键

Linux 命令行常用快捷键及汇总 - 知乎

常用的:

ctrl + c 终止程序

ctrl + shfit + c : 复制

ctrl + shift + v : 粘贴

ctrl + a : 将光标移动到行首 等于 home键

ctrl + e : 将光标移动到行末尾 等于 end键

ctrl + left : 光标往左到前一个word

ctrl + right: 光标往右到后一个word

(与上面类似的有 alt + f alt + b)

2.2 基础命令

绝对路径:

从根目录出发的完整路径,比如: /home/ricardo/1.txt

相对路径:

/home/ricardo/1.txt 相对于 /home/ricardo 的相对路径就是 ./1.txt 或者 1.txt

相对路径还包括当前路径和上一级路径

当前路径:

假设/home/ricardo为当前所在的路径,那么其就可以简化为 ./ 或者什么都不写

上一级路径:

/home/ricardo的上一层路径是 /home, 如果要切换到上一层路径里面去只写绝对路径的话的就会非常难受,(比如/home/ricardo/datasets/TUM/rgbd_datasets_fr3_xyz/rgb/想切换到上一级路径里面去的话就需要使用

cd /home/ricardo/datasets/TUM/rgbd_datasets_fr3_xyz)

所以使用 … 来表示上一级路径,简化输入繁琐度。

/home/ricardo要切换到/home 只需要 cd …

/home/ricardo/datasets/TUM/rgbd_datasets_fr3_xyz/rgb/切换到 /home/ricardo/datasets/TUM/rgbd_datasets_fr3_xyz/ 只需要 cd …

假如目前的用户主目录的文件结构如下:

[ricardo@localhost ~]$ tree
.
├── 公共
├── 模板
├── 视频
├── 图片
├── 文档
├── 下载
├── 音乐
├── 桌面
├── data
│   ├── cpp
│   │   └── 1.cpp
│   ├── java
│   └── python
└── test.cpp

创建data\cpp、java、python文件夹以及1.cpp文件:

#练习
mkdir ***
touch ***

切换到 data/python路径下:

#练习
cd ***

使用一个命令展示1.cpp的文件内容

#练习  cat命令可以查看文件的内容,一些二进制文件的就不行啦
cat ***

更换1.cpp的名字为2.cpp

mv *** *** #mv 源文件路径  目标文件路径

将2.cpp移动它的上一层目录

mv ***  ***

2.2.1 ls命令

-l

-a

  ls                   //查看当前目录下的所有目录和文件
  ls -a                //查看当前目录下的所有目录和文件(包括隐藏的文件)
  ls -l                //列表查看当前目录下的所有目录和文件(列表查看,显示更多信息),与命令"ll"效果一样
  ls /bin              //查看指定目录下的所有目录和文件 

2.2.2 sudo

得到root用户的权限,在执行命令前面加上sudo

切换root也可以使用:

su - root
#或者
su

2.2.3 cd

介绍linux系统的文件系统

各个文件系统的意义

文件夹、文件路径

cd /                 //切换到根目录
  cd /bin              //切换到根目录下的bin目录
  cd ../               //切换到上一级目录 或者使用命令:cd ..
  cd ~                 //切换到home目录
  cd -                 //切换到上次访问的目录
  cd xx(文件夹名)       //切换到本目录下的名为xx的文件目录,如果目录不存在报错
  cd /xxx/xx/x 

2.2.4 mkdir

mkdir [文件夹名]              
mkdir -p 文件夹名/子文件夹名

2.2.5 touch

touch 文件名

创建一个文件

2.2.6 rm

  rm 文件名              //删除当前目录下的文件
  rm -f 文件名           //删除当前目录的的文件(不询问)
  rm -r 文件夹名         //递归删除当前目录下此名的目录
  rm -rf 文件夹名        //递归删除当前目录下此名的目录(不询问)
  rm -rf *              //将当前目录下的所有目录和文件全部删除
  rm -rf /*             //将根目录下的所有文件全部删除【慎用!相当于格式化系统】

2.2.7 mv

  mv 当前目录名 新目录名        //修改目录名,同样适用与文件操作
  mv /usr/tmp/tool /opt       //将/usr/tmp目录下的tool目录剪切到 /opt目录下面
  mv -r /usr/tmp/tool /opt    //递归剪切目录中所有文件和文件夹

2.2.8 cp

  cp /usr/tmp/tool /opt       //将/usr/tmp目录下的tool目录复制到 /opt目录下面
  cp -r /usr/tmp/tool /opt    //递归剪复制目录中所有文件和文件夹

2.2.9 pwd

打印当前所在路径

2.2.10 cat

cat 文件名

输出文件内容,常用于文本文件

2.2.11 top

展示当前运行的进程资源使用情况。类似于windows的任务管理器

2.2.12 history

打印命令历史的记录

2.2.13 tar、zip、unzip

  tar -zcvf 打包压缩后的文件名 要打包的文件
  参数说明:z:调用gzip压缩命令进行压缩; c:打包文件; v:显示运行过程; f:指定文件名;
  示例:
  tar -zcvf a.tar file1 file2,...      //多个文件压缩打包

  tar -zxvf a.tar                      //解包至当前目录
  tar -zxvf a.tar -C /usr------        //指定解压的位置
  unzip test.zip             //解压*.zip文件 
  unzip -l test.zip          //查看*.zip文件的内容 

2.2.14 useradd

添加用户

需要使用root权限:

useradd -m -s /bin/bash testuser
  • useradd:这是 Linux 系统中用于创建新用户的命令,位于 /usr/sbin/useradd,只有具有 root 权限的用户才能执行该命令来创建新用户。
  • -m:这个选项表示自动创建该用户的主目录,主目录的路径通常为 /home/用户名,在这里就是 /home/testuser。如果省略这个选项,系统不会自动创建主目录,用户需要手动创建或者在后续登录时可能会出现找不到主目录的情况。
  • -s /bin/bash-s 选项用于指定用户的登录 shell,这里指定为 /bin/bash,即使用 bash shell 作为该用户的默认登录 shell。当用户登录系统时,bash shell 会作为其命令行环境启动,用户可以在其中执行各种命令和操作。如果不指定该选项,系统通常会使用默认的 shell(通常是 /bin/sh 或者 /bin/bash 等,具体取决于系统的配置)。

2.2.15 passwd

给用户设置密码(需要root权限)

passwd [用户名]

#可以设置简单的密码
[root@localhost ricardo]# echo 123 | passwd --stdin testuser

设置好用户之后,可以进行/etc/passwd的查看

cat /etc/passwd

最后一行是

testuser:x:1001:1001::/home/testuser:/bin/bash
  1. testuser
    • 这是用户的登录名,用于用户登录系统时使用。在你创建用户时指定的用户名就是这个字段的值。
  2. x
    • 这个字段以前是用来存储用户密码的,但现在大多数 Linux 系统不再将密码直接存放在 /etc/passwd 中,而是将密码加密后存储在 /etc/shadow 文件中,因此这里用 x 作为占位符。这样做是为了提高安全性,因为 /etc/passwd 文件是所有用户都可以读取的,而 /etc/shadow 文件只有具有特定权限的用户(如 root)才能读取。
  3. 1001
    • 这是用户的用户标识号(User ID,UID)。UID 是系统内部用于标识用户的唯一数字。在 Linux 系统中,每个用户都有一个唯一的 UID。UID 为 0 的用户是超级用户(root),拥有系统中最高的权限。普通用户的 UID 通常从 1000 开始(在很多 Linux 发行版中,如 CentOS、Ubuntu 等,默认的第一个普通用户的 UID 是 1000,后续创建的用户 UID 递增)。在这里,testuser 的 UID 是 1001,表明它是一个普通用户。
  4. 1001
    • 这是用户的组标识号(Group ID,GID)。GID 用于标识用户所属的初始组(主组)。系统中每个组都有一个唯一的 GID,这里表明 testuser 的主组的 GID 是 1001。通常情况下,当使用 useradd -m -s 命令创建用户时,系统会自动创建一个与用户名同名的组,并将该用户的主组设置为这个新创建的组,这个组的 GID 通常和用户的 UID 相同。
  5. 空字段(两个冒号之间)
    • 这个字段是用于存放用户的全名(Gecos字段),用来描述用户的一些信息,比如真实的姓名、联系电话等。在这个例子中,这个字段是空的,所以没有提供这些信息。如果有的话,可能会是类似 Test User,,,, 这样的内容,其中各个子字段可以用逗号分隔,分别代表用户的姓名、办公室房间号、办公电话、家庭电话等。
  6. /home/testuser
    • 这是用户的主目录路径。主目录是用户登录后所在的默认目录,也是用户存放个人文件和配置文件的地方。对于普通用户来说,主目录通常位于 /home 目录下,并且以用户名作为目录名。在这里,testuser 的主目录是 /home/testuser
  7. /bin/bash
    • 这是用户的登录 shell。当用户登录系统时,系统会启动这个 shell 作为用户的命令行环境。/bin/bash 是 Bash(Bourne Again Shell)的路径,Bash 是 Linux 系统中常用的 shell 之一。如果这个字段为空或者指向一个不存在的 shell,用户可能无法正常登录或者登录后无法执行命令。

2.2.16 groudadd

添加一个用户组

[root@localhost ~]# groupadd group1

将之前创建的 “testuser” 用户加入到 “group1” 组中(

[root@localhost ~]# usermod -aG group1 testuser

2.2.17 userdel

删除用户

[root@localhost ~]# userdel -r testuser

-r是用来删除其中的用户主目录的内容

2.2.18 groupdel

[root@localhost ~]# groupdel group1

三、vim

3.1 vi/vim 的使用

基本上 vi/vim 共分为三种模式,命令模式(Command Mode)、输入模式(Insert Mode)和命令行模式(Command-Line Mode)

vim 1.cpp #可以编辑对应的文件

命令模式

用户刚刚启动 vi/vim,便进入了命令模式。

此状态下敲击键盘动作会被 Vim 识别为命令,而非输入字符,比如我们此时按下 i,并不会输入一个字符,i 被当作了一个命令。

以下是普通模式常用的几个命令:

  • i – 切换到输入模式,在光标当前位置开始输入文本。

  • x – 删除当前光标所在处的字符。

  • : – 切换到底线命令模式,以在最底一行输入命令。

  • a – 进入插入模式,在光标下一个位置开始输入文本。

  • o:在当前行的下方插入一个新行,并进入插入模式。

  • O – 在当前行的上方插入一个新行,并进入插入模式。

  • dd – 剪切当前行。

  • yy – 复制当前行

  • gg – 移动到文本最前面

  • p(小写) – 粘贴剪贴板内容到光标下方。

  • P(大写)-- 粘贴剪贴板内容到光标上方。

  • u – 撤销上一次操作。

  • Ctrl + r – 重做上一次撤销的操作。

  • :w – 保存文件。

  • :q – 退出 Vim 编辑器。

  • :q! – 强制退出Vim 编辑器,不保存修改。

若想要编辑文本,只需要启动 Vim,进入了命令模式,按下 i 切换到输入模式即可。

命令模式只有一些最基本的命令,因此仍要依靠底线命令行模式输入更多命令。

输入模式

在命令模式下按下 i 就进入了输入模式,使用 Esc 键可以返回到普通模式。

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

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

底线命令模式

在命令模式下按下 :(英文冒号)就进入了底线命令模式。

底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

在底线命令模式中,基本的命令有(已经省略了冒号):

  • :w:保存文件。
  • :q:退出 Vim 编辑器。
  • :wq:保存文件并退出 Vim 编辑器。
  • :q!:强制退出Vim编辑器,不保存修改。

ESC 键可随时退出底线命令模式。

简单的说,我们可以将这三个模式想成底下的图标来表示:
【Linux实训课程讲义 适用于教授Linux初学者的教学老师】_第3张图片

3.2 shell脚本

vim sum_to_n.sh
#!/bin/bash

# 检查是否提供了参数
if [ $# -ne 1 ]; then
    echo "Usage: $0 "
    exit 1
fi

# 获取输入的数字n
n=$1

# 检查输入是否为正整数
if ! [[ "$n" =~ ^[0-9]+$ ]]; then
    echo "Error: Please provide a positive integer."
    exit 1
fi

# 初始化总和为0
sum=0

# 使用循环计算从1到n的和
for (( i=1; i<=n; i++ ))
do
    sum=$((sum + i))
done

# 输出结果
echo "The sum of numbers from 1 to $n is: $sum"
chmod +x sum_to_n.sh
./sum_to_n.sh 10

把命令写到create.sh脚本里面,自动创建文件夹data

3.3、包安装与管理

3.3.1 换源

CentOS-Stream-9 CentOS9 配置国内yum源-阿里云源 - 知乎

采用gedit的方式。

如果没有gedit,提醒先安装

sudo yum install gedit 

如果采用vim的方式,那么需要先介绍对应的编辑方法

3.3.2 安装包

yum install git-core

鼓励学生自行尝试安装 tree、git等包

四、网络配置管理

基本网络信息的查看:

​ ifconfig、route命令的使用

ssh 用户名@ip

redhat-config-network 是红帽系列 Linux 系统里的图形化网络配置工具,能直观设置网络参数,以下是详细使用方法:

但是本实训使用的linux较新,所以该命令找不到,使用nm-connection-editor

4.1、前提条件

需以 root 用户(或具备 sudo 权限用户,执行时输入对应密码)登录系统,因网络配置涉及系统关键设置,普通用户无操作权限。

4.2、图形化配置流程

4.2.1、启动工具

打开终端(图形界面下的终端模拟器 ),输入 nm-connection-editor 命令回车,就能启动图形化配置界面 。
如果提示命令不存在,CentOS 系统可通过 yum install NetworkManager-gnome 安装(需确保系统已配置好软件源 );Ubuntu 系统用 sudo apt install network-manager-gnome 安装 。

4.2.2、主界面功能与操作

启动后,会显示当前系统已有的网络连接列表(比如有线连接、无线连接等 ),常见操作如下:

1. 新建网络连接

点击界面右上角 “+”(添加)按钮 → 选择连接类型(如 “Ethernet” 以太网、“Wi-Fi” 无线网络、“Bridge” 网桥等 )→ 进入对应配置页面填参数 。
以配置有线网络(Ethernet )静态 IP 为例:

  • 选 “Ethernet” 后,在新窗口填 “连接名称”(自定义,方便识别 )、“设备 MAC 地址”(可选,一般自动识别网卡 )。

  • 切换到

    “IPv4 设置” 标签页

    • “方法” 选 “手动”(若要静态 IP );
    • 点 “添加”,填入 “地址”(如 192.168.1.100 )、“子网掩码”(如 255.255.255.0 )、“网关”(如 192.168.1.1 );
    • “DNS 服务器” 填常用 DNS(如 8.8.8.8114.114.114.114 );
  • 点 “保存”,新的有线网络连接就创建好了 。

2. 编辑已有连接

在连接列表里,找到要改的连接(比如默认的 “Wired connection 1” ),双击或选中后点齿轮图标 进入编辑界面,可修改 IP、DNS、网关等参数,改完点 “保存” 。

3. 删除连接

选中要删的连接,点界面下方 “-”(删除)按钮 ,确认后即可移除该网络连接配置 。

4. 切换网络连接

配置多个连接后,在图形化桌面的网络管理图标(一般在任务栏右上角 )里,能看到所有可用连接,点选即可切换;也可在 nm-connection-editor 里,右键点选连接,选 “激活” 启用 。

4.2.3、特殊连接类型配置(以网桥为例 )

若要配置网桥(Bridge ,把多个网络接口桥接,让它们在同一网络段通信 ),操作如下:

  1. 点 “+” → 选 “Bridge” 类型 → 填网桥名称(如 br0 )。
  2. 切换到 “桥接的连接” 标签页 → 点 “添加” → 选 “Ethernet” ,选要桥接的物理网卡(如 eth0 )。
  3. 到 “IPv4 设置” 配网桥的 IP(静态或 DHCP ,若桥接后想让网桥统一管理 IP ,按需求填 )。
  4. 保存后,原来的物理网卡连接可删除或禁用,网桥会接管网络转发 。

4.2.4、配置生效与验证

  1. 生效方式:保存配置后,NetworkManager 会自动尝试应用新配置;若没自动生效,可在终端执行 nmcli connection reload 重新加载配置,再用 nmcli connection up 连接名称 手动激活(比如 nmcli connection up "My Ethernet" )。
  2. 验证:
    • ip addr 看网卡 IP 、网桥等是否按配置生效;
    • ping 网关ping 外网域名(如 ping www.baidu.com ) 测试网络连通性;
    • nslookup 域名 检查 DNS 解析是否正常 。

对于以太网口 ens160,使用如下命令来激活

nmcli connection up ens160

4.2.5、补充说明

  • 若系统没装图形界面,nm-connection-editor 无法运行,可换用文本界面工具 nmtui(功能类似,纯字符交互 ),或直接用 nmcli 命令行配置(更适合服务器、无图形环境场景 )。
  • 配置时,注意 “自动连接” 选项(在连接编辑界面的 “常规” 标签 ),勾选后系统开机或网络可用时会自动连该网络 。

简单说,nm-connection-editor 就是通过图形界面 “点一点、填一填” 来配网络,适合不太习惯纯命令行的场景,配完记得验证生效情况,有问题结合 nmcli 排查就行~

五、Linux C/C++ 开发

5.1 vscode连接 Linux

开发项目往往需要大量地编辑代码,vim、记事本终究只是一个轻量的编辑器。相比与vscode这种扩展性极好,插件丰富的编辑器,vscode更适合写代码。当然其他的一些IDE如CLion、IDEA等也可以

对于一些Linux机器,如果内存、CPU、磁盘等资源较丰富,且其安装了可视化界面,那么完全可以在该机器上面安装vscode。但是如果该机器是云服务器或者没有UI界面,只需要使用远程连接(内部依然是ssh user@ip的原理)就可以像在本机一样开发。

当然其他具有远程连接功能的IDE也可以。这里就只介绍VScode

  1. 下载插件SSH
    【Linux实训课程讲义 适用于教授Linux初学者的教学老师】_第4张图片

2.开始连接
在这里插入图片描述

3.选择客户机连接
【Linux实训课程讲义 适用于教授Linux初学者的教学老师】_第5张图片

4.根据提示,输入 用户名@主机名
【Linux实训课程讲义 适用于教授Linux初学者的教学老师】_第6张图片

主机名也可以替换为ip地址。

例如: [email protected]

  1. 输入用户密码

    【Linux实训课程讲义 适用于教授Linux初学者的教学老师】_第7张图片

5.2 C/C++代码的编译、运行

单文件

gcc -o 可执行文件名 源码文件名
#如 gcc -o fabo fabo.cpp

多文件

gcc -o 可执行文件名 源码文件名 [源码文件名] ....
#如 gcc -o fabo main.cpp fabo_fun.cpp

5.3 git的使用

最基本的命令需要介绍这三个

git add .

git commit -m “具体注释信息”

git push origin master

你可能感兴趣的:(Linux,linux,运维,服务器)