0%

Linux_(五)-实验

一、下载安装

1.1、虚拟机的安装

Windows 环境下安装vmware虚拟机。

Desktop Hypervisor Solutions | VMware

\1. 打开安装驱动文件

img

\2. 一直下一步,更改保存位置

img

\3. 一直下一步,安装

img

\4. 等待下载成功

img

\5. 输入许可证密钥

img

题目2** 安装**

1.2、centos

在虚拟机中,安装centos

1.进入华为云镜像下载网站https://mirrors.huaweicloud.com/home

img

2.找到Centos

img

3.在对应目录找到下载的文件

img

4.打开VMware,新建虚拟机向导

img

5.保存映像文件位置

img

6.保存地址,修改名字

img

img

7.定义硬件

img

\8. 安装成功

img

\9. 测试安装

img

img

img

img

10.登录账号和密码

img

1.3、网络测试

系统安装成功后,检查网络是否可用,如果不可用,开启网络。

1.登录centOS系统,登录账号,测试baidu.com

img

2.使用curl baidu.com,查看是否返回对应数据

img

1.4、远程连接工具

使用工具连接到centos系统。finalshell

1.下载finalshell的文件包

img

2.点击左上角文件夹图案的图标,右键“连接”,点击“新建”下的“SSH连接”

img

2.在centOS中输入ip addr,寻找相应的IP地址

img

3.在SSH连接后的选项里输入相应的信息

img

4.点击相应的连接,接受密钥

img

5.连接成功

img

二、Linux命令使用

2.1、熟悉目录及文件相关命令

1. 实验内容

了解目录相关命令:cd、pwd、ls、mkdir、rmdir、rm等的使用;

说明: mkdir 的-p选项使用场景;

说明: rm -rf 的使用场景

说明: ls -al ,ls /etc | more 的作用

2. 实验结果与分析(文字或实验结果截图)

//文字或结果截图

\1. img

\2. mkdir [-p] 参数
-p,可选,表示创建前置路径,表示自动创建不存在的父目录,适用于创建连续多层级的目录
rm [-r -f] 参数…参数
-r:删除文件夹
-f: 强制删除
img

\3. ls [-a -l] 参数
-a:显示所有文件
-l:显示文件的所有信息
img

\4. ls /etc | more:将/etc下的文件名称翻页查看
img

2.2、熟悉文件相关命令

1. 实验内容

文件显示:cat、more、less

文件复制、删除和移动:cp、rm、mv

创建或改变文件时间标签:touch

2. 实验结果与分析(文字或实验结果截图)

1.cat 显示文件信息
more 分页查看
less 随意浏览文件,可以向上向下翻页
img

2.touch创建文件

img

3.cp 复制文件 rm 删除文件 mv 移动文件
img

2.3、熟练运行通配符

1. 实验内容

基于ls命令练习通配符(?、*、[])的使用

  1. 在当前目录下生成 touch t{1..10}.c 文件

  2. ls *.c 作用

  3. ls ??.c作用

  4. ls t[1-5].c 的作用

2. 实验结果与分析(文字或实验结果截图)

  1. 在当前目录下生成 touch t{1..10}.c 文件

  2. ls *.c 作用:显示所有以.c结尾的文件

  3. ls ??.c作用:显示所有以.c结尾且前面有两个字符的文件

  4. ls t[1-5].c 的作用:显示1.c,2.c, 3.c, 4.c,5.c

img

2.4、案例一

1. 实验内容

(1) 在根目录(/)下新建一目录 test

(2) 改变当前目录至 /test ,在该目录下,以自己名字的英文缩写建一个空的文件,再建两个子目录(xh)与(ah);

(3) 进入到(xh)子目录中,新建一个空文件text1;

(4) 进入到(ah)子目录中,再新建一个子目录(abc),同时建立空文件text2;

(5) 把刚建的text1文件移动到刚建立的abc子目录下,并改名为text3,同时把text2文件复制到xh子目录中;

(6) 删除text3文件与xh子目录及目录中的文件;并删除abc子目录;

(7) 清屏;

2. 实验结果与分析(文字或实验结果截图)

img

img

img

2.5、 案例二

1. 实验内容

(1) 查看/etc/passwd文件的前二行与最后二行,并记录;

(2) 查看/etc/目录下的文件,并记录前两个文件的文件名;

(3) 查看/etc/目录中所有的文件中包含有sys字母的文件并记录;

(4) 查看/etc/目录中文件包含有conf的前两个文件是什么;

(5) 清屏;

2. 实验结果与分析(文字或实验结果截图)

  1. img

img

img

img

img

2.6、统计、排序

统计 wc

排序 sort

/etc/passwd 或者 /var/log/

\1.
img

\2. 根据第13个字母进行排序
img

2.7、查询

Find xxx

-name 根据名称

-type 根据文件类型查找

-atime 按照文件访问时间查找

-size按照指定大小搜索文件

2. 实验结果与分析(文字或实验结果截图)

1.在目录下查找文件名是yum.conf的文件
img

2.查找大于1G的文件
img

3.查找/etc目录下有哪些子目录
img

4.查找/etc目录下5天内修改的文件
img

2.8、grep

Grep

^:开头的意思

$:结尾

[]:查找包含[]中的字符的文件

*:匹配前一个字符重复0次,或多次

?.

  1. 查找开头是“-”的文件
    img

2.查找结尾是“$”的文件
img

3.查找包含a, b, 1的文件
img

4.查找至少包含一个a的文件
img

5.查找有两个a或者三个a的文件
img

2.8、覆盖追加

\1. 实验内容

>:覆盖输出

>>:追加输出

<:输入重定向

img

通过重定向 /etc/passwd 作为输入设备,并输出重定向到 a.txt,最终实现了将 /etc/passwd 文件中内容复制到 a.txt 中。

img

2.9、管道符|

(1) *|*

(2) *tee:读取标准输入*

2. 实验结果与分析(文字或实验结果截图)

1.管道符,左边的输出作为右边的输入
img

2.将输入的信息输入到file中

img

2.10、last

last:显示最近的登录信息,文件是/var/log/wtmp

2. 实验结果与分析(文字或实验结果截图)**
img
**

三、vi编辑器使用

3.1、vi工作模式的转换

打开文件:vi [文件名]

命令模式(Command mode):输入字符都作为命令来解释执行。不显示输入内容。

输入模式(Insert mode):输入的任何字符都将作为文件内容被保存,并显示在屏幕上。

末行模式(Last line mode):在屏幕最末行接收行命令输入,并执行。

练习3种工模间的切换

2实验结果与分析(文字或实验结果截图)**

1.打开文件,进入命令模式

img

2.在命令模式下输入i、I、a、A、o、O进入插入模式,可以在此模式下对文件进行修改,按Esc退出插入模式

img

3.在命令模式下,输入 :开始的命令,进入末行模式执行指令,如“:wq”保存退出,

img

3.2、退出相关命令

测试 :q、 :wq、 :q! 三个退出命令的区别

\1. :q 该命令只能退出没有修改的文件
修改过:

img

未修改:

img

\2. :wq 保存并退出
img

\3. :q! 强制退出,但不会保存修改的内容
img

3.3、增删改查

查询

插入/删除命令(iao,dd dw x)

修改/替换命令

:s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1

:s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1

:%s/str1/str2/g 用字符串 str2 替换所有行中,所有出现的字符串 str1

进入插入模式:i(光标左边开始)

img

进入插入模式:a(光标右边开始)

img

进入插入模式:o(光标下一行开始)

img

命令模式输入dd,删除光标所在行

img

命令模式:输入dw,删除光标下的字母
img

:s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1

img

:s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1

:s/I am/-BBB-/g
img

:%s/str1/str2/g 用字符串 str2 替换所有行中,所有出现的字符串 str1

img

img

3.4、复制与撤销

拷贝/粘贴命令

撤销/重做命令

2. 实验结果与分析(文字或实验结果截图)

拷贝命令yy,复制一行的内容,按q,将拷贝的内容粘贴

img

撤销命令u或者U

u:撤销前一个命令

U:撤销对光标所在行的修改

img

3. 结论与讨论

3.5、sed

Sed 命令使用,参照课件

sed ‘s/coffee/chocolate/’ caffeine

img

输入下面要求做全局修改的sed命令:

sed ‘s/coffee/chocolate/g’ caffeine

img

sed命令可以用于只作用于满足要求的行。

sed ‘/2003/s/coffee/chocolate/g’ caffeine

img

文件中所有含有字符串def的行都会被删除。

§sed ‘/def/d’ caffeine

img

sed ‘/^2/s/coffee/chocolate/g’ caffeine

选中所有以2开头的行,如果该行包含字符串coffee,

则将其替换为chocolate。

img

输入: sed ‘/^c/d’ caffeine

选中所有以字符c开头的行,然后删除这些行

img

输入: sed ‘/^$/d’ caffeine

选中所有空行,然后删除这些行

img

3.6、awk

awk命令使用,参照课件

2. 实验结果与分析(文字或实验结果截图)

Awk ‘/dairy/{print $3}’ food

将food文件下,包含dairy的行的第三字段打印出来
img

Awk ‘/dairy/{print $3,$1}’ food

将food文件下,包含dairy的行的第三字段,第一字段打印出来

img

awk -F: ‘{print $1,$3,$4}’ /etc/passwd | more

将/etc/passwd文件中以冒号:为分隔符的第一、第三、第四字段打印出来

img

3.7、

1.把/etc/inittab文件复制到/test目录并改名为tab;
img

2.查看tab文件共有多少行,第18行为什么,并记录;
img

img

3.在第25行后添加上自己的名字的英文缩写;
img

4.把第26行分别复制到第34行下面与内容最后;
img

5.查找单词now在多少行有;
img

6.命令行模式下,在第10行前后分别添加一空行;

img

7.再删除该修改后内容的第25行、30行;
img

8.保存并退出;
img

9.在末行模式下命令q与q!分别在什么情况下使用
q:退出,在文件没有修改的情况的下使用
q!:强制退出,如果文件修改了,同样可以退出,但修改的内容不会保存

四、用户组管理

4.1、相关文件

  1. 查看用户账号文件―>/etc/passwd,说明其一行的格式及各域作用

  2. 查看影子文件―>/etc/shadow,说明其中一行的格式及各域作用

  3. 查看组文件―>/etc/group,说明其中一行的格式及各域作用

2. 实验结果与分析(文字或实验结果截图)

1.查看用户账号文件―>/etc/passwd

img如root:x:0:0:root:/root:/bin/bash

root:登录名,区分大小写

x : 账号密码,为了安全考虑,这个内容放到了/etc/shadow

0 :账号UID,32位无符号整数,唯一,root的UID为0

0 :账户GID,32位整数,组ID

root : GECOS字段,用户个人信息说明

/root : 用户登录的子目录,保存该账号的配置信息

/bin/bash : 登录shell,默认的shell是/bin/bash

2.查看影子文件―>/etc/shadow

img

bin:*:18353:0:99999:7:::

bin:登录名

*:加密指令

18353:口令上次更改距1970年1月1日有18353天

0:口令更改后不可以更改的天数为0

99999:口令更改后必须在99999天后更改,也是有效期

7:口令失效前7天警告用户

Inctive:倒数第3个域,代表口令失效后被查封的天数

Expire:账号被封时距1970年1月1日的天数,

Flag:保留未用的域

3、查看组文件―>/etc/group

img

bin:x:1:

Bin : 组名

X : 加密口令

1 :GID,组ID

最后一个区域:存放成员列表,彼此用逗号隔开,这个默认组没有成员,为空

3. 结论与讨论

4.2、用户相关命令练习

  1. 练习添加新用户命令:useradd;

  2. 练习设置用户口令命令:passwd;

  3. 练习切换用户身份命令:su;

  4. 练习删除用户命令:userdel;

  5. 练习修改用户信息命令:usermod;

2. 实验结果与分析(文字或实验结果截图)

1、练习添加新用户命令:useradd;
img

img

2、设置用户口令命令:passwd;
img

3、练习切换用户身份命令:su;

img

4、练习删除用户命令:userdel;

img

没有LLL这个账号了

5、练习修改用户信息命令:usermod;

img

4.3、组相关命令

  1. 练习添加组命令:groupadd;

  2. 练习删除组命令:groupdel;

  3. 练习修改组信息命令:groupmod;

  4. 添加/删除组成员:gpasswd;

2. 实验结果与分析(文字或实验结果截图)

1、添加组命令:groupadd

img

2、删除组命令:groupdel;

img

没有testbed这个组了

3、修改组信息命令:groupmod;

img

4、添加/删除组成员:gpasswd;

img

添加成员u1,u2

img

Testbed2组删除了用户u1,现在只有u2用户

4.4、文件相关命令练习

1. 实验内容

  1. 修改权限命令:chmod

  2. 改变文件拥有者:chown;

  3. 更改文件所属的组:chgrp;

2. 实验结果与分析(文字或实验结果截图)

1、修改权限命令:chmod

img

2、改变文件拥有者:chown;

img

将abc.txt的文件拥有者和组改为LXQ

3、 更改文件所属的组:chgrp;

img

4.5、用户组管理

1. 实验内容

  1. 建立一个标准的组group1,GID=900;

  2. 建立一个标准组group2,选项为默认,观察该组的信息有什么变化;

  3. 新建用户ah、xh,再新建一个组group3,把root、u1、user2用户添加到group1组中,把ah、xh添加到group2组,

  4. 把group3组改名为g3,GID=1000;

  5. 查看user2所属于的组,并记录;

  6. 删除user1组与g3组,观察有什么情况发生;

2. 实验结果与分析(文字或实验结果截图)

1、建立一个标准的组group1,GID=900;

img

2、建立一个标准组group2,选项为默认,

img

3、新建用户ah、xh,再新建一个组group3,把root、u1、user2用户添加到group1组中,把ah、xh添加到group2组,

img

img

img

4、把group3组改名为g3,GID=1000

img

5、查看user2所属于的组,并记录

img

6、删除user1组与g3组

img

五、应用安装

5.1、安装apache

1.检测是否安装httpd

img

2.安装: yum install httpd

img

3.进入目录: cd /var/www/html 建立 自己index.html

img

4.启动服务 systemctl start httpd img

如果真机不成功, 可以开放防火墙80 端口,或关闭防火墙,测试

systemctl stop firewalld

-—————————————

systemctl start firewalld

firewall-cmd –zone=public –add-port=80/tcp –permanent

firewall-cmd –reload

如果端口被占用. 查看80

netstat -anp |grep :80 ,也可以用ps aux 查看

netstat 不存在 ,则安装 yum install net-tools 即可。

img

虚拟机测试: curl 127.0.0.1

img

虚拟机测试http://ip

这里的ip是自己的虚拟器ip

img

5.2、jdk8

yum search java | grep 1.8

yum install java-1.8.0-openjdk-devel.x86_64

yum install java-1.8.0-openjdk.x86_64

img

img

img

5.3、tomcat

从镜像源下载

wget https://mirrors.aliyun.com/apache/tomcat/tomcat-9/v9.0.72/bin/apache-tomcat-9.0.72.tar.gz

img

img

解压缩tar -zxvf ****

img

进bin 执行./startup.sh

img

浏览器测试http://192.168.152.129:8080

img

5.4、安装nginx

独立源地址: nginx.org

安装依赖: yum -y install gcc pcre-devel zlib-devel openssl openssl-devel

img

下载: wget http://nginx.org/download/nginx-1.20.2.tar.gz

img

解压: tar -zxvf nginx-1.20.2.tar.gz

img

进入目录: cd nginx-1.20.2

img

安装配置: ./configure

(提示 /usr/local/nginx 目录)

img

编译安装: make

make install

img

进入目录: cd /usr/local/nginx/sbin

启动: ./nginx

img

停止: ./nginx -s stop

img

重新加载: ./nginx -s reload

img

虚拟机测试: curl 127.0.0.1

img

真机测试: 浏览器

img

如果真机不成功, 可以开放防火墙端口,或关闭防火墙,测试

可以进入 cd /usr/local/nginx/html 目录下编写自己的html 静态文件

5.5、安装 MySQL

1、下载文件

wget https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql-8.0.27-1.el7.x86_64.rpm-bundle.tar

或下载到本机,在上传到服务器

img

1.1 删除系统自带的 mariadb

rpm -e mariadb-libs-5.5.68-1.el7.centos.x86_64 –nodeps

img

2、解压缩

tar -xvf mysql-8.0.27-1.el7.x86_64.rpm-bundle.tar

img

3、安装 common、libs、client、server

安装命令行

rpm -ivh mysql-community-common-8.0.27-1.el7.x86_64.rpm –nodeps –force

img

rpm -ivh mysql-community-libs-8.0.27-1.el7.x86_64.rpm –nodeps –force

img

rpm -ivh mysql-community-client-8.0.27-1.el7.x86_64.rpm –nodeps –force

img

rpm -ivh mysql-community-server-8.0.27-1.el7.x86_64.rpm –nodeps –force

img

4、初始化 MySQL

mysqld –initialize

img

7、授权防火墙

chown mysql:mysql /var/lib/mysql -R; 改变用户和用户组

systemctl start mysqld.service;

systemctl enable mysqld; 应该是默的,如果不是加上这句

img

8、查看数据库的初始化密码

cat /var/log/mysqld.log | grep password

img

9、登录数据库

mysql -uroot -p

img

10、修改密码

ALTER USER ‘root‘@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘root’;

img

11、使用新密码登录

img

12、开启远程访问

create user ‘root‘@’%’ identified with mysql_native_password by ‘root’;

grant all privileges on . to ‘root‘@’%’ with grant option;

flush privileges;

img

13、开放 3306 端口

firewall-cmd –zone=public –add-port=3306/tcp –permanent

systemctl restart firewalld.service

firewall-cmd –reload

img

14、MySQL 安装默认使用美国的时区,北京时间比美国晚 8 小时

set global time_zone=’+8:00’;

img

15、创建数据表

create database test character set utf8 collate utf8_general_ci;

use test;

create table user( id int primary key auto_increment, name varchar(22), birthday datetime ); insert into user(name, birthday) VALUES (‘小明’,’1999-01-01’); insert into user(name, birthday) VALUES (‘小红’,’2000-01-01’);

img

六、进程管理与定时任务

6.1、静态显示系统进程信息

\1. 实验内容

ps命令的使用,并说明常用参数的作用,及输出信息中列的含意

\2. 实验结果与分析(文字或实验结果截图)

# ps     //显示当前用户进程

img

# ps –aux //显示所有进程信息

img

USER 进程的启动用户

PID 进程号(进程的唯一标识)

%CPU 占CPU的百分比

%MEM 占用内存百分比

VSZ 占用的虚拟内存大小

RSS 占用的物理内存大小

TTY 进程的工作终端(?表示没有终端)

STAT 进程的状态:
R: 正在执行中 S: 休眠静止状态 T: 暂停执行 Z:僵死状态

Time 占用的cpu的时间

Command 运行的程序

\3. 结论与讨论

6.2、动态显示系统进程信息

\1. 实验内容

使用top命令,实时显示系统各个进程的资源占用情况。说明输出信息中列的含意。

在top基本视图中,按h键进入另一个视图。

在top基本视图中,按f键进入另一个视图,在这里可以编辑基本视图中的显示字段。

在top基本视图中,按c键进入另一个视图,可以显示进程的路径。

在top基本视图中,按k键,可以在不退出top命令的情况下杀死某个正在运行的进程。

在top基本视图中,按b键,高亮显示当前正在运行的进程。

\2. 实验结果与分析(文字或实验结果截图)

img

在top基本视图中,按h键进入另一个视图。

img

在top基本视图中,按f键进入另一个视图,在这里可以编辑基本视图中的显示字段。

img

在top基本视图中,按c键进入另一个视图,可以显示进程的路径。

img

在top基本视图中,按k键,可以在不退出top命令的情况下杀死某个正在运行的进程。

img

在top基本视图中,按b键,高亮显示当前正在运行的进程。

img

6.3、其他命令

\1. 实验内容

Kill、killall、jobs、fg、bg、nice、renice等

\2. 实验结果与分析(文字或实验结果截图)

Kill:终止正在运行的进程或作业

img

Killall:功能:终止指定程序名的所有进程

下载killall

img

img

jobs:功能:显示当前所有作业
img

Fg:把后台的作业调入前台运行
img

Bg:将前台作业或进程切换到后台运行
img

Nice:指定将启动进程的优先级。

img

Renice:修改运行中的进程的优先级

img

6.4、定时任务1

\1. 实验内容

利用at设置一个任务自动化,在当天11:00钟,在根目录下自动创建一个abc目录,并进入到abc目录中,建立一个空的文件test,同时对该文件进行打包成test.tar;

\2. 实验结果与分析(文字或实验结果截图)

步骤及实验结果截图

1.下载at命令

img

img

2、利用at设置一个任务自动化,在当天11:00钟,

img

3、在根目录下自动创建一个abc目录,
img
4、并进入到abc目录中
img
5、建立一个空的文件test,同时对该文件进行打包成test.tar;
img

6、检查定时任务
img

6.5、定时任务2

\1. 实验内容

Cron应用:每周2,4,6早上3点启动系统

\2. 实验结果与分析(文字或实验结果截图)

img

img

img

七、Linux下GCC的使用

基本用法

gcc

-o:指定生成文件的名称

-E:激活预处理。生成预处理文件( .i 文件)

-S:激活预处理、编译。生成汇编代码( .s 文件)

-c:激活预处理、编译、汇编。生成目标文件( .o 文件)

-I:指定头文件目录

img

7.1、预处理**(预编译)**

1. 实验内容

使编译器将 C 源代码中的包含的头文件如stdio.h编译进来,替换宏(如符号常量)。

gcc -E hello.c -o hello.i

cat hello.i 查看生成文件

2. 实验结果与分析(文字或实验结果截图)

//文字或结果截图

img

img

img

7.2、编译

1. 实验内容

GCC 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,GCC 把代码翻译成汇编语言。

gcc –S hello.i –o hello.s 进行到编译阶段停止,并生成 汇编文件

cat hello.s 查看生成的文件

2. 实验结果与分析(文字或实验结果截图)

img

img

7.3、汇编

1. 实验内容

把编译阶段生成的 ”.s” 文件转成二进制目标代码。

gcc –c hello.s –o hello.o

Cat 查看文件

2. 实验结果与分析(文字或实验结果截图)

img

img

7.4、链接

1. 实验内容

  1. 链接到库中(链接其他目标文件),生成可执行文件。

gcc hello.o –o hello.out

  1. 执行文件

./hello.out

2. 实验结果与分析(文字或实验结果截图)

img

7.5、一次性完成

1. 实验内容

输入命令,可以一次性完成上述步骤

gcc hello.c -o hello3.out

运行编译后的可执行程序./hello

2. 实验结果与分析(文字或实验结果截图)

img

7.6、多个文件的编译

1. 实验内容

现在有 3 个文件,分别是 main.c,print.c,print.h

img

1)*多个文件一起编译**:*

gcc print.c main.c -o main_print

*执行生成文件*

*2)分别编译各个源文件,再对编译后输出的目标文件(.o)链接*

gcc -c print.c -o print.o

gcc -c main.c -o main.o

gcc print.o main.o -o main_print

*执行生成文件*

2. 实验结果与分析(文字或实验结果截图)

img

imgimg

1)多个文件一起编译:

gcc print.c main.c -o main_print

执行生成文件

img

img

2)分别编译各个源文件,再对编译后输出的目标文件(.o)链接

gcc -c print.c -o print.o

gcc -c main.c -o main.o

gcc print.o main.o -o main_print

执行生成文件

img

问题解决

1. 实验内容

题目6中,如果头文件和源文件不在一同目录中,如何解决?

img

头文件所在目录:

img

主要是要加 -I 指定头文件目录:

gcc print.c main.c -o main_print -I myInclude

运行文件

\2. 实验结果与分析(文字或实验结果截图)

源文件所在目录:
img

头文件所在目录:

img

主要是要加 -I 指定头文件目录:

gcc print.c main.c -o main_print -I myInclude

运行文件

img

7.7、makefile(Makefile)

题目****7 makefile(Makefile)

1. 实验内容

在使用gcc命令时,一个工程又有多个文件(比如100个文件),如果按照上述编译方法,往往需要输入很多指令,而且修改文件也不方便,因此引入makefile文件解决该问题。

img

  1. 当前路径下内容如下:

img

  1. 建立上图中makefile文件:

img

#main是需要生成的目标文件名,它依赖main.o print.o

main:main.o print.o

#gcc命令,生成main,语句前面要用TAB

​ gcc main.o input.o cal.o -o main

#main.o是目标文件,依赖main.c文件,通过gcc -c main.c生成main.o文件

main.o:main.c

​ gcc -c main.c

print.o:print.c

​ gcc -c print.c

#增加clean命令

clean:

#删除所有以.o结尾的文件,使用了通配符*

​ rm *.o

#删除可执行文件main

​ rm main

  1. 使用

img

img

\2. 实验结果与分析(文字或实验结果截图)

当前路径下内容:

img

makefile内容:

img

使用:

img

清除:

img

八、shell程序设计

8.1、定义变量

1. 实验内容

变量的定义,变量的引用,并输出值

2. 实验结果与分析(文字或实验结果截图)

//文字或结果截图

\1. 创建以.sh结尾的文件
img

\2. 修改文件权限
img

\3. 输出文件
img

\4. 在命令行定义一个整型
img

\5. 输出整型
img

8.2、特定变量

1. 实验内容

  1. 编写脚本,测试特定变量。

  2. 设置可执行权限。

  3. 执行脚本,查看结果。

img

2. 实验结果与分析(文字或实验结果截图)

1、新建脚本
img

2、设置权限
img

3、执行文件
img

8.3、if 语句

1. 实验内容

判断参数是否少于3个

img

2. 实验结果与分析(文字或实验结果截图)

1、编写脚本
img

2、改权限
img

3、执行
img

8.4、两数求和

1. 实验内容

计算由键盘输⼊的2个数的和值。

img

2. 实验结果与分析(文字或实验结果截图)

img

8.5、删除文件

1. 实验内容

利⽤for循环将当前⽬录下的**.c**⽂件删除

img

img

2. 实验结果与分析(文字或实验结果截图)

img

8.6、求所有参数的和

1. 实验内容

编写一个Shell脚本,它带有若干数字作为参数,脚本的功能是求参数和。

img

2. 实验结果与分析(文字或实验结果截图)

1、新建脚本
img

2、改权限,执行
img

8.7、求1-100的和

1. 实验内容

编写一个Shell脚本,它带有若干数字作为参数,脚本的功能是求参数和。

img

2. 实验结果与分析(文字或实验结果截图)

1、新建脚本文件
img

2、改权限
img

3、执行
img

8.8、统计文件数量

1. 实验内容

编写一个Shell脚本,统计当前目录下所有后缀为”.c”的文件数量。

参考 题目 4 5 6

2. 实验结果与分析(文字或实验结果截图)

1、编写脚本
img

2、修改权限
img

3、执行文件
img

-------------本文结束感谢您的阅读-------------