linux实验报告

实验一:Linux操作系统的安装与配置

实验目的:

1.掌握虚拟机技术;

2.掌握Linux的安装步骤;

3.掌握安装过程中的基本配置要求。

4.掌握正确启动Linux的方法;

5.掌握正确退出Linux的方法;

6.熟悉已安装Linux版本的桌面内容。

实验内容:

1.建立虚拟机,进行必要的虚拟机设置;

2.在虚拟机上安装Linux操作系统,进行基本的配置;

3.用户的设置,包括用户名和口令的设置;

4.启动Linux的方法及有关命令操作;

5.退出Linux的方法及有关命令操作;

6.熟悉Linux桌面版的桌面系统构成。

实验原理:

虚拟机工作原理、操作系统安装方法。

CentOS 9与CentOS 8区别

CentOS是Community ENTerprise Operating System的缩写,是一个基于Red Hat Enterprise Linux (RHEL)的开源操作系统。它的发布对于开源社区和企业用户来说具有重要意义:

  • 免费的企业级品质:CentOS提供了一个与RHEL几乎相同的功能集,但不包含任何商业支持,这为那些需要稳定、安全的操作系统但预算有限的组织提供了选择。

  • 软件开发和测试平台:由于其稳定性,CentOS常被用作开发和测试环境的基础,开发者可以在上面构建和测试应用程序,而不必担心许可证费用。

  • 学习平台:对于学习Linux管理和服务器运维的学生,CentOS是一个理想的学习平台,因为它提供了与许多企业环境中使用的系统相似的体验。

关于CentOS 9与CentOS 8的关系:

  • CentOS 8于2019年发布,计划服务到2024年,但在2021年底,CentOS项目宣布CentOS Stream将取代传统的CentOS Linux,这意味着CentOS 8的生命周期提前结束。

  • CentOS 9并非直接作为CentOS 8的后续版本出现,而是以CentOS Stream 9的形式存在。CentOS Stream是一个滚动更新的发行版,位于RHEL的主要版本之前或之后,作为一个开发分支,目的是为了更好地与RHEL的开发周期集成。

  • 这一变化意味着,如果用户希望一个稳定的、类似于传统CentOS的版本,他们现在应该考虑使用 Rocky Linux 或 AlmaLinux 等替代品,这些项目是在CentOS 8退役后由社区发起的,旨在提供与CentOS Linux类似的目标和服务。

意义

CentOS 9的发布对于开源社区和企业用户来说具有重要的意义,主要体现在以下几个方面:

  • 稳定的Linux发行版:CentOS是基于Red Hat Enterprise Linux (RHEL)的一个克隆版本,提供了与RHEL几乎相同的稳定性、安全性和性能,但不收取费用。这对于那些需要稳定操作系统的企业和个人开发者来说是一个极好的选择。

  • 最新的软件和技术:CentOS 9保证了用户可以接触到最新的软件包和技术栈,包括Linux内核更新和其他关键应用程序的升级,帮助用户保持系统的现代化和安全性。

  • 开发和测试环境:对于开发人员来说,CentOS 9提供了一个免费的平台来测试他们的应用,确保它们能在RHEL环境下正常运行,因为在生产环境中广泛使用的是RHEL或其衍生版。

  • 社区支持:CentOS项目拥有庞大的用户和开发者社区,这意味着用户可以获得丰富的文档、教程以及社区成员的帮助,解决了在使用过程中遇到的问题。

  • 迁移路径:由于CentOS 8的支持将在2021年底结束,CentOS 9为用户提供了平滑的迁移路径,确保他们能够继续得到长期的技术支持。

  • Stream特性:CentOS 9引入了Stream的概念,这是一个滚动更新的分支,允许用户更早地接触到新功能和改进,同时也保持了一定程度的稳定性。

安装CentOS9

下载Centos 9镜像文件

清华大学源网址https://mirrors.tuna.tsinghua.edu.cn/

快速筛选ISO文件

选择第一个下载

下载成功,放到合适目录

安装Centos

所需软件:VMware® Workstation 16 Pro

新建虚拟机

自定义-->下一步

默认不修改-->下一步

稍后安装操作系统-->下一步

版本里面没有Centos 9; 这里我们选择Centos 7同样可以使用

更改虚拟机名称和位置-->下一步

根据自己需要的性能改处理器数量和内核数量-->下一步

分配内存-->下一步

默认-->下一步

默认-->下一步

默认-->下一步

默认-->下一步

默认-->下一步

默认-->下一步

完成

点击编辑虚拟机设置

CD/DVD(IDE)-->使用ISO映像文件-->选择清华源现在的ISO文件-->打开

点击确定

开启虚拟机

点击文字进入系统

用键盘选择install Centos stream9-->回车

等待进入此页面-->继续

用户设置

设置root密码

创建用户

开始安装

重启系统

系统界面

实验结论

通过这次小实验,是我更加了解Linux一些常用指令的操作以及其作用,对于一个刚开始接触lniux操作系统的初学者来说非常有用,助于以后能够更进一步学习Linux操作系统。

实验二:Linux命令行基本操作

实验目的:

1.熟悉Linux命令行界面;

2.掌握Linux命令提示符的基本格式;

3.掌握Linux命令语法格式;

4.掌握Bash自动补全功能、历史命令记录功能;

5.掌握管道、重定向的使用方法;

6.掌握命令排列、命令续行、命令别名及强制中断命令执行的操作。

实验内容:

1.分别创建两个文件并任意输入不同的英文内容(文件名用自己的姓名拼音与编号命名,如zhangsan01、zhangsan02)。

2.将上题两个文件合并,将合并结果输出到第3个文件中(文件名如zhangsan03)。

3.统计第3个文件的行数和单词的个数;在文件3中查找指定字符串。

4.使用自动补全功能重复执行上述某条命令;使用历史命令记录功能重复执行上述某条命令。

5.使用命令行帮助功能查看date、more等命令的帮助信息。

6.显示当前计算机上的日期和时间。

实验步骤

1.分别创建两个文件并任意输入不同的英文内容(文件名用自己的姓名拼音与编号命名,如zhangsan01、zhangsan02)。
echo "Content of zhangsan01" > zhangsan01.txt
echo "Content of zhangsan02" > zhangsan02.txt

或者打开这两个文件(如使用nanovim编辑器),手动输入不同内容并保存。

2.将上题两个文件合并,将合并结果输出到第3个文件中(文件名如zhangsan03)。
cat zhangsan01.txt zhangsan02.txt > zhangsan03.txt

此命令将zhangsan01.txtzhangsan02.txt的内容追加合并至zhangsan03.txt

3.统计第3个文件的行数和单词的个数;在文件3中查找指定字符串。
  • 统计行数:

    wc -l zhangsan03.txt
    
  • 统计单词数(假设单词由空格分隔):

    wc -w zhangsan03.txt
    
  • 查找指定字符串(假设要查找的字符串为adeng):

    grep "adeng" zhangsan03.txt
    

4.使用自动补全功能重复执行上述某条命令;使用历史命令记录功能重复执行上述某条命令。

在命令行中,输入部分命令后按Tab键,系统会尝试自动补全命令或文件名。例如,要重复执行wc -l zhangsan03.txt,只需输入wc -l zhang,然后按Tab键,系统会自动补全为zhangsan03.txt,再按Enter键即可执行命令。

使用历史命令记录功能重复执行上述某条命令:

  • 按上箭头键(),会依次显示之前执行过的命令。找到需要重复执行的命令后,直接按Enter键即可。
5.使用命令行帮助功能查看date、more等命令的帮助信息。
man date
man more

man more

man date

这两个命令将分别打开datemore命令的手册页,其中包含了命令的详细说明、选项列表以及使用示例。

6.显示当前计算机上的日期和时间。
date

执行此命令后,终端将输出当前系统的日期和时间。

实验原理:

Linux操作系统工作原理及shell工作原理

实验结论

通过这次小实验,是我更加了解Linux一些常用指令的操作以及其作用,对于一个刚开始接触lniux操作系统的初学者来说非常有用,助于以后能够更进一步学习Linux操作系统。

实验三:Linux文件和目录管理

实验目的:

1.熟悉Linux命令的一般格式;

2.掌握Linux常用文件操作命令;

3.掌握Linux常用目录操作命令;

4.掌握Linux的其他方面的应用命令;

5.理解Linux的工作原理及应用;

6.熟悉Linux的字符界面的工作原理及操作方法。

实验内容:

1.文件操作命令: touch、cat、more、less、head、tail、cp、ln、mv、rm

2.目录操作命令:cd、pwd、mkdir、ls、rmdir、rm

3.文件规档命令:tar

4.在文件中查找指定字符串命令:grep

5.切换用户命令:su;查看当前用户命令:whoami;

6.清屏命令:clear;信息回显命令:echo帮助命令:man、info。

实验步骤

一、文件操作命令
  1. touch:创建新文件或更新文件的访问和修改时间。

    示例:

    touch adeng.txt
    

上述命令将在当前目录下创建一个名为adeng.txt的新文件(如果该文件已存在,则其访问和修改时间将被更新)。

  1. cat:用于查看文件内容,尤其适合小文件。

    示例:

    cat adeng.txt
    

    这将输出adeng.txt文件的完整内容。

  1. more:分页查看文件内容。

    more adeng.txt
    

    你可以通过按下空格键来逐页查看文件内容,按q键退出查看。

  1. less:与more类似,但功能更强大,支持前后翻页、搜索等操作。

    less adeng.txt
    

使用less查看文件时,可以使用上下箭头翻页,/keyword进行搜索,nN分别查找下一个和上一个匹配项,q退出查看。

  1. head:显示文件开头部分的内容,默认显示前10行。

    head adeng.txt
    

若要查看文件前n行内容,可使用如下命令:

head -n n adeng.txt

  1. tail:显示文件末尾部分的内容,默认显示后10行。

    tail adeng.txt
    

若要查看文件后n行内容,可使用如下命令:

tail -n n adeng.txt

  1. cp:复制文件或目录。

    cp adeng.txt backup.txt
    

上述命令将adeng.txt复制为backup.txt。若要复制整个目录及其内容,需添加-r选项:

cp -r adeng adeng2

  1. ln:创建链接文件,包括硬链接(ln)和符号链接(ln -s)。

    ln adeng.txt link_to_adeng.txt
    ln -s adeng.txt symlink_to_adeng.txt
    

第一条命令创建了adeng.txt的硬链接link_to_adeng.txt,两者指向同一块数据。第二条命令创建了adeng.txt的符号链接symlink_to_adeng.txt,它类似于快捷方式。

  1. mv:移动或重命名文件或目录。

    mv adeng.txt new_name.txt
    mv directory1 directory2/new_directory
    

第一条命令将adeng.txt重命名为new_name.txt。第二条命令将directory1移动到directory2下的new_directory目录中。

  1. rm:删除文件或目录。

    rm adeng.txt
    rm -r adeng
    

第一条命令删除`adeng.txt`文件。第二条命令递归删除`adeng`及其所有内容,需谨慎使用。
二、目录操作命令
  1. cd:改变当前工作目录。

    cd ..
    cd /
    

第一条命令将当前工作目录切换到指定路径。第二条命令返回上级目录。

  1. pwd:显示当前工作目录的绝对路径。

    pwd
    

执行此命令后,将输出当前所在目录的完整路径。

  1. mkdir:创建新目录。

    mkdir 1234456789
    

上述命令在当前目录下创建名为1234456789的新目录。

  1. ls:列出目录内容。

    ls
    ls -l
    ls -a
    

第一条命令列出当前目录下的文件和子目录。第二条命令以详细格式列出(包含权限、大小、所有者等信息)。第三条命令显示隐藏文件(以.开头的文件)。

  1. rmdir:删除空目录。

    rmdir 1234456789
    

1234456789为空,上述命令将其删除。若目录非空,需使用rm -r命令。

三、文件规档命令

tar:用于打包、压缩和解压文件。

  1. 打包并压缩文件:

    tar -czvf archive.tar.gz 1 2 3
    

上述命令将11以及3及其内容打包并用gzip压缩成123.tar.gz

  1. 解压文件:

    tar -xzvf 123.tar.gz
    

上述命令将123.tar.gz解压到当前目录。

四、在文件中查找指定字符串命令

grep:在文件或标准输入中搜索匹配指定模式(字符串或正则表达式)的行。

grep "deng" adeng.txt

上述命令在adeng.txt中查找包含deng的所有行,并输出结果。
backup

五、其他命令
  1. 切换用户su user_name,用于切换到指定用户。若不指定用户名,通常用于切换到超级用户(root)。

  1. 查看当前用户whoami,显示当前登录用户的用户名。

  1. 清屏clear,清除终端屏幕上的所有内容。

  1. 信息回显echo "message",输出指定的字符串或变量值。

  1. 帮助命令
    • man command:查看指定命令的手册页,提供详细帮助信息。

  • info command:提供与man类似的信息,但通常结构更清晰,内容更丰富,且支持超链接导航。

实验原理:

Linux操作系统工作原理及shell工作原理

实验结论

通过这次小实验,是我更加了解Linux一些常用指令的操作以及其作用,对于一个刚开始接触lniux操作系统的初学者来说非常有用,助于以后能够更进一步学习Linux操作系统。

实验四:Linux用户和组管理

实验目的:

1.掌握Linux系统中增加、修改、删除用户和用户组的方法;

2.掌握用户帐号管理及安全管理的方法;

3.熟悉Linux系统的用户访问权限及文件的权限修改。

实验内容:

1.查看用户帐号文件:/etc/passwd(用户帐号信息文件)、/etc/shadow(用户口令文件);

2.查看组群文件:/etc/group(组群帐号文件)、/etc/gshadow(组群口令文件);

3.建立新用户命令:useradd或adduser;修改用户帐号:usermod及删除用户:userdel;

4.设置用户口令:passwd及修改用户口令:chage;

5.创建组群:groupadd或addgroup;修改组群:groupmod、删除组群groupdel、为组群添加用户gpasswd;

6.修改访问权限命令chmod;管理默认访问权限命令umask。

实验步骤:

1. 查看用户帐号文件
  • 打开终端,输入以下命令查看用户帐号信息:
    cat /etc/passwd
    
    more /etc/passwd
    

  • 输入以下命令查看用户口令文件:
    cat /etc/shadow
    
    more /etc/shadow
    
    注意:/etc/shadow 文件通常只有root用户可以查看。

2. 查看组群文件
  • 输入以下命令查看组群帐号文件:
    cat /etc/group
    
    more /etc/group
    

  • 输入以下命令查看组群口令文件:
    cat /etc/gshadow
    
    more /etc/gshadow
    
    注意:/etc/gshadow 文件通常只有root用户可以查看。

3. 建立新用户、修改用户帐号、删除用户
  • 使用 useraddadduser 命令建立新用户,例如:
    useradd newuser
    
    adduser newuser
    

  • 使用 usermod 命令修改用户帐号,例如:

    usermod -c "This is Howtoing" howtoing
    

    这里 -C 参数用于指定用户的备注。

  • 使用 userdel 命令删除用户,例如:
    userdel username
    
    若要同时删除用户的主目录和邮件池,可以使用 -r 参数:
    userdel -r username
    

4. 设置用户口令、修改用户口令
  • 使用 passwd 命令设置或修改用户口令,例如:
    passwd username
    

  • 使用 chage 命令修改用户口令的相关信息,例如:

    chage -l username
    

    查看用户口令信息。

    chage -d 0 username
    

    强制用户在下次登录时更改口令。

5. 创建组群、修改组群、删除组群、为组群添加用户
  • 使用 groupaddaddgroup 命令创建新组群,例如:
    groupadd groupname
    
    addgroup groupname
    

  • 使用 groupmod 命令修改组群,例如:
    groupmod -n newgroupname groupname
    
    这里 -n 参数用于更改组群名称。

  • 使用 groupdel 命令删除组群,例如:
    groupdel groupname
    

  • 使用 gpasswd 命令为组群添加用户,例如:
    gpasswd -a username groupname
    
    将用户添加到组群中。

6. 修改访问权限命令和管理默认访问权限命令
  • 使用 chmod 命令修改文件或目录的权限,例如:
    chmod 755 filename
    
    chmod u+x filename
    

  • 使用 umask 命令管理默认的文件和目录权限,例如:
    umask 022
    
    设置默认的umask值为022,即新建的文件和目录将不会有其他用户的写权限。

注意事项:

  • 在执行以上操作时,一些命令需要root权限,可以使用 sudo 命令获取。
  • 在实验过程中,要注意不要随意更改或删除系统中的重要用户和组群。
  • 确保理解每个命令的作用和参数,避免错误的操作导致系统问题。

实验原理:

Linux操作系统用户管理及权限管理

实验结论

通过这次小实验,是我更加了解Linux一些常用指令的操作以及其作用,对于一个刚开始接触lniux操作系统的初学者来说非常有用,助于以后能够更进一步学习Linux操作系统。

实验五:磁盘存储管理

实验目的:

1.熟悉磁盘及磁盘分区命名规则;

2.掌握Linux下使用磁盘管理工具管理磁盘的方法;

3.掌握创建文件系统和使用文件系统的方法;

4.掌握文件系统的挂载和卸载的方法。

实验内容:

  1. 使用虚拟机添加4个不同类型的磁盘设备,如表5-11 所示。查看并确定各个磁盘设备对应的设备文件名,然后通过设备文件名查看各个磁盘的空间大小,以验证你的判断是否正确。

3.为上述各个分区创建文件系统,请确保各个分区的文件系统格式各不相同。

4.创建一个挂载点目录,使用mount命令将第3题中的某个分区挂载到此目录。通过挂载点进入分区并新建文件和目录。卸载该分区,并将其重新挂载到一个新的位置。观察之前创建的文件和目录是否存在。

实验步骤

1. 查看并确定磁盘设备文件名

首先,你需要启动虚拟机并登录。然后,使用以下命令来列出所有可用的磁盘设备及其基本信息:

sudo fdisk -l

根据表5-1中提供的磁盘接口类型和空间大小,你可以识别出每个磁盘对应的设备文件名。例如,IDE磁盘可能显示为/dev/hda,SCSI磁盘可能为/dev/sda,SATA磁盘可能是/dev/sdb等,而NVMe磁盘可能是/dev/nvme0n1。注意,实际命名可能会因系统配置和已连接设备的数量而有所不同。

2. 查看磁盘空间大小

一旦确定了设备文件名,可以使用lsblk命令查看磁盘及其分区的基本信息,包括空间大小:

lsblk -o NAME,TYPE,SIZE

3. 创建分区并格式化文件系统

接下来,使用fdiskgdisk(对于GPT分区表)来创建分区。这里以磁盘1(假设为/dev/sda)为例,创建分区:

sudo fdisk /dev/nvme0n1

fdisk提示符下,依次输入n(新建分区),p(主分区),选择分区号,两次回车接受默认的开始和结束扇区,最后输入w(写入分区表)保存更改。

完成分区后,为每个分区创建不同的文件系统,例如:

  • 对于分区1:sudo mkfs.ext4 /dev/sda1
  • 对于分区2:sudo mkfs.xfs /dev/sda2
  • … (依此类推,选择不同的文件系统类型,如btrfs, reiserfs等)

4. 挂载分区

创建一个挂载点,然后挂载分区:

sudo mkdir /mnt/my_home
sudo mount /dev/nvme0n1p3 /mnt/my_home

进入挂载点,创建文件和目录以验证挂载成功:

cd /mnt/my_home
touch testfile.txt
mkdir testdir

卸载分区:

cd ~
sudo umount /mnt/my_home

然后,重新挂载到新的位置,比如/mnt/new_location,并检查之前创建的文件和目录是否依然存在:

sudo mkdir /mnt/new_location
sudo mount /dev/sda1 /mnt/new_location
cd /mnt/new_location
ls -la

实验原理:

Linux操作系统磁盘管理。

实验结论

通过这次小实验,是我更加了解Linux一些常用指令的操作以及其作用,对于一个刚开始接触lniux操作系统的初学者来说非常有用,助于以后能够更进一步学习Linux操作系统。

实验六:进程管理

实验目的:

1.熟悉进程的基本概念;

2.掌握进程状态监测方法;

3.掌握进程状态控制方法;

4.掌握进程启动与作业控制方法;

实验内容:

1.进程静态监测命令ps、动态监测命令top;

2.查看进程树命令pstree;

3.列出进程打开文件信息的命令lsof;

4.调整进程优先级的命令nice;改变进程优先级的命令renice;

5.向进程发送信号的命令kill;杀死进程的命令killall;

6.显示任务状态命令jobs;将任务移至前台命令fg;将任务移至后台命令bg。

实验步骤:

1. 进程静态监测与动态监测
  • 使用 ps 命令进行进程静态监测,例如:
    ps aux
    
    ps -ef
    

  • 使用 top 命令进行进程动态监测,例如:
    top
    
    top 命令界面中,可以按 q 键退出。

2. 查看进程树
  • 使用 pstree 命令查看进程树,例如:
    pstree
    
    pstree -p
    
    -p 参数用于显示进程的PID。

3. 列出进程打开文件信息
  • 使用 lsof 命令列出进程打开的文件信息,例如:
    lsof -p PID
    
    这里 PID 是进程的ID。

4. 调整进程优先级
  • 使用 nice 命令启动一个新进程并设置其优先级,例如:
    nice -n 10 command
    
    这里 -n 10 表示将优先级设置为10。

  • 使用 renice 命令改变运行中进程的优先级,例如:
    renice 10 PID
    
    这里 PID 是进程的ID。

5. 向进程发送信号
  • 使用 kill 命令向进程发送信号,例如:
    kill -SIGTERM PID
    
    kill -9 PID
    

这里 PID 是进程的ID,SIGTERM 是请求终止信号的符号名,-9 是强制终止信号的编号。

  • 使用 killall 命令杀死所有同名进程,例如:
    killall md
    
    这里 processname 是进程的名称。

6. 显示任务状态与作业控制

ctrl + z
可以将一个正在前台执行的命令放到后台,并且处于暂停状态。
jobs
查看当前有多少在后台运行的命令
jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。

  • 使用 jobs 命令显示任务状态,例如:
    jobs
    

  • 使用 fg 命令将任务移至前台,例如:
    fg %jobnumber
    
    这里 %jobnumber 是任务的编号。

  • 使用 bg 命令将任务移至后台,例如:
    bg %jobnumber
    
    这里 %jobnumber 是任务的编号。

注意事项:

  • 在执行以上操作时,一些命令需要root权限,可以使用 sudo 命令获取。
  • 在使用 killkillall 命令时,要谨慎选择信号,以避免不必要的数据丢失或系统不稳定。
  • 确保理解每个命令的作用和参数,避免错误的操作导致系统问题。

实验原理:

Linux操作系统进程管理。

实验结论

通过这次小实验,是我更加了解Linux一些常用指令的操作以及其作用,对于一个刚开始接触lniux操作系统的初学者来说非常有用,助于以后能够更进一步学习Linux操作系统。

实验七:Linux网络服务管理

实验目的:

1.熟悉Linux环境下软件包和网络服务管理的基本方法;

2.掌握网络配置命令;学会使用网络测试工具;

3.掌握FTP服务器的安装与配置;

4.掌握Samba服务器的安装与配置;

6.掌握Linux防火墙配置。

实验内容:

1.掌握FTP服务器的安装与配置;

2.掌握Samba服务器的安装与配置;

3.掌握Linux防火墙配置。

【注:内容1~3选择其中一个写实验报告】

实验步骤

安装ftp

启动ftp

测试ftp

关闭防火墙

本机局域网测试

实验原理:

Linux操作系统的网络配置及管理

实验结论

通过这次小实验,是我更加了解Linux一些常用指令的操作以及其作用,对于一个刚开始接触lniux操作系统的初学者来说非常有用,助于以后能够更进一步学习Linux操作系统。

实验八:Shell编程与Linux C编程

实验目的:

1.熟悉shell脚本的编写与使用流程;

2.掌握shell脚本的建立和运行的方法;

3.掌握shell的基本语法;掌握shell的控制结构;

4.掌握Linux下C编程的常用工具和流程;

5.掌握利用GCC编译器进行C程序编译的过程;

6.掌握利用GDB对简单的C语言项目进行调试的方法;

7.理解make工具的功能,学会编制makefile的方法

实验内容:

1.设计Shel程序, 从键盘输入两个字符串,比较两个字符串是否相等;

2.设计Shell程序,分别用for、while、 until语句编写九九乘法表;

3.设计Shell程序,该程序能接收用户从键盘输入的20个整数,然后求出其总和、最大值及最小值;

4.编写一个C程序,利用gcc进行编译编译,观察并分析显示结果;利用gdb调试编译后的C程序。

5.编写一个由多文件构成的c语言程序,编制makefile,运行make工具进行维护。

实验步骤:

这些任务涵盖了Shell脚本编程和C语言编程的多个方面,下面我将分别为您提供示例代码或指导来完成这些任务。

1. Shell程序:比较两个字符串是否相等

#!/bin/bashecho "请输入第一个字符串:"
read str1echo "请输入第二个字符串:"
read str2if [ "$str1" == "$str2" ]; thenecho "两个字符串相等"
elseecho "两个字符串不相等"
fi

2. Shell程序:九九乘法表

使用for循环
#!/bin/bash
for i in {1..9}; dofor j in $(seq 1 $i); doecho -n "$j*$i=$((i*j)) "doneecho "" # 换行
done

使用while循环
#!/bin/bash
i=1
while [ $i -le 9 ]; doj=1while [ $j -le $i ]; doecho -n "$j*$i=$((i*j)) "((j++))doneecho "" # 换行((i++))
done

使用until循环
#!/bin/bash
i=1
until [ $i -gt 9 ]; doj=1until [ $j -gt $i ]; doecho -n "$j*$i=$((i*j)) "((j++))doneecho "" # 换行((i++))
done

3. Shell程序:计算20个整数的总和、最大值、最小值

#!/bin/bashsum=0
max=-999999
min=999999echo "请输入20个整数:"for ((i=1; i<=20; i++)); doread numsum=$((sum + num))if [ $num -gt $max ]; then max=$num; fiif [ $num -lt $min ]; then min=$num; fi
doneecho "总和: $sum, 最大值: $max, 最小值: $min"

4. C程序编译与调试

首先,编写一个简单的C程序,例如123.c

使用gcc编译:

gcc -o 123 123.c

运行编译后的程序并观察输出:

./123


使用gdb进行调试:

gdb ./123

在gdb中可以设置断点、单步执行、查看变量值等,例如:

(gdb) break 5
(gdb) run
(gdb) next
(gdb) print a

5. 多文件C程序与Makefile

假设您有两个源文件main.chelper.c,以及一个头文件helper.h

main.c

#include <stdio.h>
#include "helper.h"int main() {printHello();return 0;
}

helper.c

#include <stdio.h>
#include "helper.h"void printHello() {printf("Hello, World!\n");
}

helper.h

#ifndef HELPER_H
#define HELPER_Hvoid printHello();#endif // HELPER_H

接下来,创建一个Makefile

CC=gcc
CFLAGS=-c -Wall
LDFLAGS=
SOURCES=main.c helper.c
OBJECTS=$(SOURCES:.c=.o)
EXECUTABLE=programall: $(SOURCES) $(EXECUTABLE)$(EXECUTABLE): $(OBJECTS)$(CC) $(LDFLAGS) $(OBJECTS) -o $@%.o: %.c$(CC) $(CFLAGS) $< -o $@clean:rm -f *.o $(EXECUTABLE)

在命令行中运行make来编译程序,运行./program来执行程序,使用make clean来清理生成的二进制文件和对象文件。

实验原理:

Shell工作原理及shell编程;Gcc、gdb、makefile的应用;C、C++、Java、Python程序设计。

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

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

相关文章

在人工智能背景下,程序员要有什么职业素养,怎么改进

文章目录 1. 持续学习和适应能力原因改善方法 2. 跨学科知识原因改善方法 3. 高效的计算资源利用原因改善方法 4. 模型解释性和可控性原因改善方法 5. 数据隐私和安全意识原因改善方法 在AI大模型的背景下&#xff0c;程序员要有什么职业素养&#xff0c;怎么改进&#xff0c;才…

激活函数对比

激活函数 sigmoid / tanh / relu / leaky relu / elu / gelu / swish 1、sigmoid 优缺点 1) 均值!0&#xff0c;导致fwxb求导时&#xff0c;方向要么全正要么全负 可以通过batch批量训练来缓解 2) 输入值大于一定范围梯度就会消失 3) 运算复杂 2、tanh 优缺点 1) 均值0 2)…

使用jspdf将html页面生成pdf文件

1、下载jspdf插件包 npm i jspdf2、在utils文件夹下创建一个单独的文件&#xff08;名字无具体要求&#xff09; // 页面导出为pdf格式&#xff0c;title表示为下载的标题&#xff0c;html表示要下载的页面 import html2Canvas from html2canvas // 不用单独去下载这个包&…

【Mybatis】动态SQL标签2

choose (when, otherwise)标签是使用举例 类似switch...case&#xff0c;从上到下匹配&#xff0c;找到匹配的条件&#xff0c;就结束匹配其他的&#xff01; set标签是使用举例 set这个标签是用在更新操作上的 set标签代替sql中的set关键字&#xff0c;可以把set语句后多余的…

大模型产品层出不穷,如何慧眼识珠?

先预祝亲爱的读者们“端午安康“ 大模型百花齐放&#xff0c;选择难上加难 面对眼前层出不穷的大模型产品&#xff0c;许多人会不禁感到困惑&#xff1a;哪个才是真正适合自己的爆款大模型?在中国本土 alone&#xff0c;就有百来个大模型产品&#xff0c;简直是五花八门&…

python怎么下载numpy

安装Python step1&#xff1a;官网下载安装包&#xff1b; https://www.python.org/ 我下载的是python-3.4.4.msi step2&#xff1a;python环境变量配置&#xff1b; 计算机-属性-高级系统设置-环境变量-系统变量 找到PATH&#xff0c;点击编辑&#xff0c;加英文分号;在…

【Text2SQL 论文】T5-SR:使用 T5 生成中间表示来得到 SQL

论文&#xff1a;T5-SR: A Unified Seq-to-Seq Decoding Strategy for Semantic Parsing ⭐⭐⭐ 北大 & 中科大&#xff0c;arXiv:2306.08368 文章目录 一、论文速读二、中间表示&#xff1a;SSQL三、Score Re-estimator四、总结 一、论文速读 本文设计了一个 NL 和 SQL 的…

【设计模式深度剖析】【3】【行为型】【职责链模式】| 以购物中心客户服务流程为例加深理解

&#x1f448;️上一篇:命令模式 设计模式-专栏&#x1f448;️ 文章目录 职责链模式定义英文原话直译如何理解呢&#xff1f; 职责链模式的角色1. Handler&#xff08;抽象处理者&#xff09;2. ConcreteHandler&#xff08;具体处理者&#xff09;3. Client&#xff08;客户…

【Vue】普通组件的注册使用-局部注册

文章目录 一、组件注册的两种方式二、使用步骤三、练习 一、组件注册的两种方式 局部注册&#xff1a;只能在注册的组件内使用 ① 创建 .vue 文件 (三个组成部分) 以.vue结尾的组件&#xff0c;一般也叫做 单文件组件&#xff0c;即一个组件就是组件里的全部内容 ② 在使用的组…

Qt窗口与对话框

目录 Qt窗口 1.菜单栏 2.工具栏 3.状态栏 4.滑动窗口 QT对话框 1.基础对话框QDiaog 创建新的ui文件 模态对话框与非模态对话框 2.消息对话框 QMessageBox 3.QColorDialog 4.QFileDialog文件对话框 5.QFontDialog 6.QInputDialog Qt窗口 前言&#xff1a;之前以上…

Linux驱动开发笔记(三)平台设备驱动

文章目录 前言一、Linux的设备模型1. 总线1.1 bus_type结构体1.2 注册/注销总线 2. 设备2.1 device结构体2.2 内核注册/注销设备 3. 驱动3.1 device_driver结构体3.2 注册/注销驱动 4. attribute属性文件4.1 attribute_group结构体4.2 设备属性文件4.3 驱动属性文件4.3. 总线属…

数组array 和 array的区别

问题 对于数组 array和&array有什么区别呢? 先说答案 array: 指向数组第一个数地址的指针 &array: 指向整个数组地址的指针 所以直接打印的话, 地址是一样的. 但是如果1的话, 那么array是增加sizeof(int)大小, &array是增加sizeof(int) * array.size() 测试 #i…

必应bing国内广告账户如何注册推广呢?

作为全球第二大搜索引擎&#xff0c;必应Bing以其庞大的用户基础和精准的定向能力&#xff0c;为企业提供了拓展市场的绝佳平台。对于许多企业来说&#xff0c;必应Bing广告账户的注册与推广流程可能显得复杂而繁琐。此时&#xff0c;您不妨考虑携手云衔科技&#xff0c;共同开…

程序员职业素养:AI新时代下的机遇与挑战

目录 一、引言二、程序员职业素养的五大要点1. 技术能力2. 沟通能力3. 团队合作4. 责任心5. 敬业精神 三、实际案例解析四、程序员职业素养在实际工作中的应用五、AI新时代的程序员的职业发展建议六、总结七、结语 一、引言 在当今这个科技飞速发展的时代&#xff0c;程序员这…

景区ar互动大屏游戏化体验提升营销力度

从20世纪60年代的初步构想&#xff0c;到如今全球范围内无数企业的竞相投入&#xff0c;AR增强现实技术已成为引领科技潮流的重要力量。而在这一浪潮中&#xff0c;中国的AR公司正以其独特的魅力和创新力&#xff0c;崭露头角。 中国的AR市场正在迎来前所未有的发展机遇。如今&…

将现有web项目打包成electron桌面端教程(一)vue3+vite+js版

说明&#xff1a;后续项目需要web端和桌面端&#xff0c;为了提高开发效率&#xff0c;准备直接将web端的代码打包成桌面端&#xff0c;在此提前记录一下demo打包的过程&#xff0c;需要注意的是vue2或者vue3vitets或者vue-cli的打包方式各不同&#xff0c;如果你的项目不是vue…

CasaOS玩客云如何部署小雅AList并结合内网穿透远程访问海量资源

文章目录 前言1. 本地部署AList2. AList挂载网盘3. 部署小雅alist3.1 Token获取3.2 部署小雅3.3 挂载小雅alist到AList中 4. Cpolar内网穿透安装5. 创建公网地址6. 配置固定公网地址 前言 本文主要介绍如何在安装了CasaOS的玩客云主机中部署小雅AList&#xff0c;并在AList中挂…

Ubuntu系统的k8s常见的错误和解决的问题

K8s配置的时候出现的常见问题 Q1: master节点kubectl get nodes 出现的错误 或者 解决方法&#xff1a; cat <<EOF >> /root/.bashrc export KUBECONFIG/etc/kubernetes/admin.conf EOFsource /root/.bashrc重新执行 kubectl get nodes 记得需要查看一下自己的…

【粽子大师】甜咸粽之争来看大师pick谁

概述 粽子大师是一款专门设计用来回答关于粽子制作和历史的问题的应用。无论用户是想了解甜粽还是咸粽的制作方法&#xff0c;或是希望探索粽子的地域文化差异&#xff0c;粽子大师都能提供详细的解答和指导。 功能详述 角色任务 粽子历史和文化专家: 详细了解甜咸粽子之争的…

C语言:详解gcc驱动程序完成编译、汇编、链接的过程

相关阅读 C语言https://blog.csdn.net/weixin_45791458/category_12423166.html?spm1001.2014.3001.5482 gcc是一个命令&#xff0c;严格意义上说&#xff0c;它只是一个驱动程序&#xff0c;而不是一个编译器。gcc负责调用GNU工具链中的预处理器、编译器、汇编器、链接器等工…