Linux 管道命令及相关命令练习与 Shell 编程、Tomcat 安装

2.实验目的

掌握 Linux 管道命令及相关命令(cut、sort、wc、uniq、tee、tr、split)的使用方法。

学会使用 Shell 编程实现基本的计算器功能。

掌握在 CentOS 7 系统中安装 Tomcat 的方法。

  1. 实验内容

1. Linux 管道命令及相关命令练习

1.1 管道命令

定义:管道命令将一个命令的输出作为下一个命令的输入,格式为 命令A | 命令B。

示例:

使用 ls -al /etc | less 浏览 /etc 目录的详细内容。

使用 cat file.txt | grep "keyword" 查找文件中包含特定关键词的行。

1.2 cut 命令

功能:从文件或输入中提取特定字符或字段。

示例:

提取文件中每行的第 5 个字符:head -2 file.txt | cut -c5

提取以 : 分隔的第 1 和第 2 个字段:head -2 file.txt | cut -d ':' -f1,2

1.3 sort 命令

功能:对文件内容进行排序。

示例:

按字符串排序:sort file.txt

去重排序:sort -u file.txt

按数值排序:sort -n file.txt

按倒序排序:sort -r file.txt

1.4 wc 命令

功能:统计文件的字节数、单词数、行数。

示例:

统计文件的行数、单词数和字节数:wc file.txt

仅统计行数:wc -l file.txt

统计多个文件:wc file1.txt file2.txt

1.5 uniq 命令

功能:去除重复行,通常与 sort 命令结合使用。

示例:

去重:sort file.txt | uniq

统计每行出现的次数:sort file.txt | uniq -c

1.6 tee 命令

功能:将命令输出同时写入文件和标准输出。

示例:

将输出保存到多个文件:sort file.txt | uniq | tee output1.txt output2.txt

1.7 tr 命令

功能:替换或删除文件中的字符。

示例:

替换字符:echo "hello" | tr 'h' 'H'

删除字符:echo "hello123" | tr -d '0-9'

1.8 split 命令

功能:将大文件分割成多个小文件。

示例:

按字节分割:split -b 10k largefile.txt

按行数分割:split -l 1000 largefile.txt

  1. 实验过程描述

创建一个测试文件 file.txt,并输入一些内容。

echo -e "apple\nbanana\napple\norange\nbanana" > file.txt

# 示例:使用 cut 命令提取第 1 和第 2 个字段

cat file.txt | cut -d ':' -f1,2

# 示例:使用 sort 命令排序

sort file.txt

# 示例:使用 uniq 命令去重

sort file.txt | uniq

# 示例:使用 tee 命令将输出保存到多个文件

sort file.txt | uniq | tee output1.txt output2.txt

2. Shell 编程实现计算器功能

2.1 编写 Shell 脚本

创建一个名为 calculator.sh 的脚本文件。

编写脚本实现以下功能:

提供用户选择运算符(+、-、*、/、sqrt、square、cube)的提示。

根据用户输入的运算符和操作数,计算并输出结果。

脚本示例:

#!/bin/bash

echo "欢迎使用 Shell 计算器"

echo "请选择运算符:+ - * / sqrt square cube"

read operator

echo "请输入第一个数字:"

read num1

if [[ "$operator" == "sqrt" || "$operator" == "square" || "$operator" == "cube" ]]; then

    num2=$num1

else

    echo "请输入第二个数字:"

    read num2

fi

case $operator in

    +)

        result=$(echo "$num1 + $num2" | bc)

        ;;

    -)

        result=$(echo "$num1 - $num2" | bc)

        ;;

    *)

        echo "未知运算符"

        exit 1

        ;;

esac

echo "结果是:$result"

操作步骤:

使用文本编辑器创建 calculator.sh 文件,并复制上述脚本内容。

nano calculator.sh

将上述脚本内容粘贴到文件中,保存并退出。

赋予脚本执行权限:

chmod +x calculator.sh

运行脚本:

./calculator.sh

根据提示输入运算符和数字,观察结果是否正确。

# 示例输入

请选择运算符:+ - * / sqrt square cube

+

请输入第一个数字:

10

请输入第二个数字:

5

# 示例输出

结果是:15

  1. 在 CentOS 7 系统中安装 Tomcat

3.1 安装 JDK

下载并安装 JDK 15.0.1。

配置 Java 环境变量。

操作步骤:

下载 JDK 安装包:

wget https://download.oracle.com/java/technologies/javase-jdk15-downloads.html#license-lightbox

由于 Oracle 官方网站的链接可能需要登录或接受协议,建议手动下载后上传到服务器。

解压安装包:

tar -zxvf jdk-15.0.1_linux-x64_bin.tar.gz

将解压后的文件移动到 /usr/local/java 目录:

mkdir /usr/local/java

mv jdk-15.0.1 /usr/local/java/

修改配置文件 /etc/profile,添加以下内容:

export JAVA_HOME=/usr/local/java/jdk-15.0.1

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

使配置生效:

source /etc/profile

验证 JDK 是否安装成功:

java -version

如果输出 JDK 的版本信息,则表示安装成功。

3.2 安装 Tomcat

下载并安装 Tomcat 9.0.41。

配置 Tomcat。

操作步骤:

下载 Tomcat 安装包:

wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.102/bin/apache-tomcat-9.0.102.tar.gz

解压安装包:

tar -zxf apache-tomcat-9.0.102.tar.gz

将解压后的文件移动到 /usr/local/tomcat 目录:

mkdir /usr/local/tomcat

mv apache-tomcat-9.0.102 /usr/local/tomcat

启动 Tomcat:

cd /usr/local/tomcat/apache-tom

5.实验结论及心得

实验结论:

成功掌握了 Linux 管道命令及相关命令的使用,包括 cut、sort、wc、uniq、tee、tr 和 split,这些命令对于处理文本数据非常有用。

学会了使用 Shell 编程实现基本的计算器功能,这有助于理解 Shell 脚本的基本语法和逻辑结构。

掌握了在 CentOS 7 系统中安装 Tomcat 的方法,包括安装 JDK 和配置 Tomcat 环境。

心得体会:

通过这次实验我发现 Linux 命令行是一个强大的工具,可以高效地处理文件和数据。

Shell 编程提供了一种自动化任务和简化复杂操作的方法,这对于系统管理和日常任务非常有用。

安装和配置服务器软件(如 Tomcat)需要对系统环境有深入的理解,同时也需要耐心和细致的操作。

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

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

相关文章

蓝牙基础:FIFO(First-In-First-Out)缓存区

在蓝牙通信中,FIFO(First-In-First-Out,先进先出)缓存区是解决数据传输中“速度不匹配”和“时序异步”问题的核心机制,广泛应用于蓝牙芯片内部、协议栈各层级及主从设备交互中。其核心作用是临时存储数据,…

国内外主流源代码平台与高效开发指南

摘要 本文旨在为您提供一份实用的源代码获取与开发指南。我们将首先梳理国内外最主流的源代码托管平台,并重点介绍如何利用这些平台上的开源项目。接着,本文将为您规划一条针对初学者的“最快最性价比”的开发路径,从环境配置、项目管理到实…

任务进度状态同步 万能版 参考 工厂+策略+观察者设计模式 +锁设计 springboot+redission

文章目录概要效果解释状态流转说明设计AI任务实体类AI任务状态枚举AI模型枚举基础实体类简单字典接口工厂策略模式 接口设计AiJobProcessorAiJobProcessorFactory观察者模式AI任务相关的EventMyEventListenerMyEventPubLisherRedissonConfig定时任务实现ReplicateJobProcessorR…

printf函数格式化输出攻略

目录 一、基本用法 二、占位符 基本用法 常用占位符 字符串占位符示例 多占位符示例 注意事项 三、占位符列表 基本数据类型占位符 浮点数占位符 特殊类型占位符 长度修饰符 使用示例 注意事项 四、输出格式 1、限定宽度 基本用法 左对齐输出 浮点数宽度限制…

AI小智单片机esps32-s3烧录教程

1. 下载代码到本地 代码地址:https://github.com/78/xiaozhi-esp32 2. vscode安装环境 安装一下这个插件 3. esp32-s3通过数据线连接电脑 【图片】 4. vscode选择对应配置 如果是用自己的服务还得改下地址 5. 点击构建 6. 点击烧录

socket编程中系统调用send()详细讲解

在 socket 编程中,send() 是用于在已连接的套接字上发送数据的系统调用,主要用于 TCP 协议(也可用于 UDP,但需配合连接操作)。它负责将用户态的数据传递到内核缓冲区,再由内核协议栈(如 TCP/IP&…

Eclipse JSP/Servlet:深入解析与最佳实践

Eclipse JSP/Servlet:深入解析与最佳实践 引言 Eclipse JSP/Servlet 是 Java 企业版(Java EE)的核心技术之一,它为 Web 开发者提供了一个强大的平台来构建动态和交互式的 Web 应用程序。本文将深入探讨 Eclipse JSP/Servlet 的概念、工作原理以及最佳实践,帮助开发者更好…

CNB私有化部署Dify(零成本)教程

本篇文章介绍一下如何进行dify的私有化部署的过程:dify定位是开源的LLM应用平台,搭建自己的这个AI应用,而我们非常熟悉的这个coze实际上是通过搭积木一样搭建AI应用,我选择从dify开始进行了解学习 1.前置准备 我们需要有这个腾讯云…

imx6ull-驱动开发篇16——信号量与互斥体

目录 前言 信号量 概念与特性 信号量 API 函数 互斥体 概念与特性 互斥体 API 函数 前言 Linux 内核提供的几种并发和竞争的处理方法,我们学习了: 驱动开发篇14——原子操作 驱动开发篇15——linux自旋锁 本讲我们就继续学习:信号…

Bug 记录:SecureRandom.getInstanceStrong()导致验证码获取阻塞

问题描述: 在发送验证码到邮件中,接口调用时卡在生成验证码阶段,导致验证码功能完全不可用; 经排查开发环境一切正常,测试环境会重现此问题;问题分析: 现象: 代码卡在 SecureRandom.…

商派小程序商城(小程序/官网/APP···)的范式跃迁与增长再想象

2025年,品牌官方商城应该如何定义?—— 还是一套“电商货架”?在商派看来,现如今“品牌官方商城”则需要重新定义,结合不同品牌企业的业务发展需求,也就有着更多丰富的定义和组合想象——如,商城…

基于串口实现可扩展的硬件函数 RPC 框架(附完整 Verilog 源码)

本文介绍如何使用简单的串口协议搭建一个支持寄存器读写与硬件函数调用的通用交互框架,适用于 FPGA 调试、嵌入式接口、中小型控制系统等场合。 特性: 轻量协议、30 个32位寄存器、函数调用、状态反馈,源码清晰易扩展。💡 背景与目…

jenkins-飞书通知机制

一. 目标: 触发构建和结束后,自动触发到飞书工作群,发布同学只需要关注消息即可,而无需人工盯梢。 二. 实现方式: 1. 机器人配置: 创建一个群, 配置机器人: 保管好下面的webhoo…

GoLand 项目从 0 到 1:第五天 —— 角色权限中间件实现与事务控制

第五天核心任务:权限校验链路闭环 第五天的开发聚焦于权限控制的核心实现,完成了角色权限中间件的开发,实现了接口级别的权限校验,并基于事务控制确保用户权限操作的数据一致性。通过这部分工作,系统的权限管理从设计阶段正式进入可运行阶段,为后续业务模块的安全接入提…

【工具变量】地级市固定资产投资数据(2000-2023年)

数据简介:地级市固定资产投资是衡量地方经济发展活力与动能的重要指标,其规模、结构及增速不仅反映区域产业布局和政策导向,也直接影响基础设施完善、产业升级和民生改善。清晰展现长期经济发展脉络,助力捕捉经济增长与波动规律。…

Kotlin初体验

前言: 在当今的软件开发领域,随着技术的不断发展,开发者总是在寻找更高效、更简洁的编程语言来提升开发效率并减少代码中的潜在问题。而 Kotlin,作为一门现代的编程语言,逐渐赢得了越来越多开发者的青睐,尤…

五十五、【Linux系统nginx服务】nginx安装、用户认证、https实现

一、Nginx 核心功能全景图 #mermaid-svg-j5M1WUQFrtyrWjAD {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-j5M1WUQFrtyrWjAD .error-icon{fill:#552222;}#mermaid-svg-j5M1WUQFrtyrWjAD .error-text{fill:#552222;s…

AtCoder Beginner Contest 418

文章目录A Im a teapotB Youre a teapotC FlushD XNOR OperationE TrapeziumF Were teapotsG Binary OperationAtCoder Beginner Contest 418A I’m a teapot Takahashi is a teapot. Since he is a teapot, he will gladly accept tea, but will refuse any other liquid. Det…

多级缓存详解

多级缓存 传统缓存: 传统缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库。 这种模式下请求一定要经过Tomcat处理,Tomcat的性能就成为了整个系统的瓶颈;并且Redis的缓存也有过期时间,一…

接口自动化-JSON Schema

目录 1.介绍 2.安装 3.使用 3.1type关键字 3.2最大值最小值 3.2.1minimum 、 maximum 3.2.2 exclusiveMinimum 、exclusiveMaximum 3.3字符串特殊校验 3.4数据约束 3.5对象约束 3.6必须属性 3.7依赖关系 4.总结 1.介绍 JSON Schema 是一个用来定义和校验 JSON 的…