当前位置: 首页 > news >正文

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.dtcms.com/a/324063.html

相关文章:

  • Spring AOP 底层实现(面试重点难点)
  • 区块链让物联网真正链接万物
  • Mybatis和MybatisPlus的对比区分理解法
  • Linux入门指南:26个基础命令全解析
  • STM32F103芯片的启动过程
  • SAP学习笔记 - 开发57 - RAP开发 Managed App RAP action 之 Accept Travel 和 Reject Travel
  • 从色彩心理学看嵌入式设备UI设计:原则、挑战与实践
  • 数据结构:栈和队列(Stack Queue)基本概念与应用
  • SpringAi 通过大模型来实现调用自己的Api
  • 复现论文《基于深度强化学习的微能源网能量管理与优化策略研究》
  • 创建降阶模型用于搅拌槽中的涡流预测
  • nestjs官网推荐typeorm而不是prisma的原因
  • 第十六讲:AVL树和红黑树
  • MySQL的隔离级别及MVCC原理解析
  • AutoGPT与AgentGPT引领自动化革命
  • openresty-lua-redis案例
  • 无须炮解,打开即是Pro版
  • 商业银行元宇宙布局现状及未来图景三维思考
  • 基于BP神经网络PID控制的电机转速控制器设计复现
  • 使用tcp ntrip 协议 接收数据报错 java.net.SocketException: Connection reset
  • Shell脚本-变量的定义方式有哪些
  • TF-IDF提取关键词(附实战案例)
  • ​LabVIEW键盘鼠标监控
  • Python 2025:最新技术趋势与展望
  • [激光原理与应用-223]:机械 - 机加厂加工机械需要2D还是3D图?
  • 红楼梦文本数据分析
  • Fish shell的abbr命令行参数介绍和Bat文件查看工具
  • 诺基亚就4G/5G相关专利起诉吉利对中国汽车及蜂窝模组企业的影响
  • (一)Tailwindcss
  • 【开源】分层状态机(HFSM)解析:复杂逻辑的清晰表达与FPGA实现(附完整的Verilog交通灯案例及仿真)