shell编程—jdk\tomcat软件安装

Shell编程

一 shell简介

javascript  浏览器脚本语言
Java        
shell       Linux脚本语言  
lua         redis
PL/SQL      MYSQL

1.1 什么是shell

shell 俗称叫做壳,计算机的壳层,和内核是相对的,用于和用户交互,接收用户指令,调用相应的程序。
shell编程—jdk\tomcat软件安装_第1张图片

因此,把shell分为2大类

1.1、图形界面shell(Graphical User Interface shell 即 GUI shell)

也就是用户使用GUI和计算机核交互的shell,比如Windows下使用最广泛的Windows Explorer(Windows资源管理器),Linux下的X Window,以及各种更强大的CDE、GNOME、KDE、 XFCE。他们都是GUI Shell。

1.2、命令行式shell(Command Line Interface shell ,即CLI shell)

也就是通过命令行和计算机交互的shell。 Windows NT 系统下有 cmd.exe(命令提示字符)和近年来微软大力推广的 Windows PowerShell。 Linux下有bash / sh / ksh / csh/zsh等 一般情况下,习惯把命令行shell(CLI shell)直接称做shell。

根据交互方式的不一样,命令行式shell(CLI shell),又分为交互式shell和非交互式shell:

A 交互式shell

交互式模式就是shell等待你的输入,并且执行你提交的命令,然后马上给你反馈。这种也是我们大多数时候使用的。

B非交互式shell

非交互式shell,就是把shell放在写在一个文件里面,执行的时候,不与用户交互,从前往后依次执行,执行到文件结尾时,shell也就终止了。

我们今天搞的就是 非交互式shell。也就是说 我们需要写一个文件,将shell的指令写到文件中然后让这个文件执行。

1.2 shell的分类

A bash

Bourne Again Shell 用来替代Bourne shell,也是目前大多数Linux系统默认的shell。

B sh

Bourne Shell 是一个比较老的shell,目前已经被/bin/bash所取代,在很多linux系统上,sh已经是一个指向bash的链接了。

C csh/tcsh

shell 使用的是“类C”语法,csh是具有C语言风格的一种shell,tcsh是增强版本的csh,目前csh已经很少使用了。

D ksh

最早,bash交互体验很好,csh作为非交互式使用很爽,ksh就吸取了2者的优点。

E zsh

zsh本身是不兼容bash的,但是他可以使用仿真模式(emulation mode)来模拟bash等,基本可以实现兼容。 在终端中使用shell,基本上只是调用各种命令,比如:curl cat ls等等,基本不会使用到zsh的编程,所以终端中使用zsh是可以的。但是在写shell脚本的时候,需要考虑兼容性,最主流的还是bash shell

二 shell编程

2.1 shell的hello world

打开虚拟机 使用xshell连接
    
创建一个文件夹 mkdir   /home/myshell
移动到这个文件夹  cd   /home/myshell
创建一个shell脚本文件  (我们玩的是 非交互式shell 所以需要写脚本)
shell脚本文件 可以不添加后缀  .sh 
vim   hello.sh

接着在里面边写shell命令
#!/bin/bash
#这是注释  你好 世界
echo "你好 世界"
echo '你好 世界哈哈哈'
echo 你好世界哈哈哈哈哈哈

    
 保存退出 :wq
 执行shell  :   ./hello.sh
 此时发现有问题
 [root@localhost myshell]# ./hello.sh
 bash: ./hello.sh: Permission denied
 [root@localhost myshell]# ll
 total 4
 -rw-r--r--. 1 root root 134 Dec 23 14:22 hello.sh
  此时提示没有权限  是因为我们的shell脚本要执行 需要X的可执行权限
  所以我们需要给脚本添加 执行权限后再去执行: chmod   u+x  hello.sh
  执行shell  :   ./hello.sh

注意:

#! : 是一个特殊的标记,表明使用啥解释器来执行,比如这里使用了:/bin/bash 来执行这个脚本。

# : 只用一个#,就是注释 echo:输出 我们把上面的脚本保存成一个文件,

s1.sh 后面的这个sh是shell脚本的扩展名

2.2 shell中的变量

在shell中编写内容
    
#!/bin/bash

#定义变量
name="张三"
age=18

#使用变量
echo   "你好${name} ${age}  欢迎来带德莱联盟 "
echo   "你好 $name   欢迎来到德莱联盟 "
echo   '你好 $name   欢迎来到德莱联盟 '
echo    你好 $name   欢迎来到德莱联盟 
# 加不加大括号 取决于你的环境 例如 echo  hello${name}huanyinglaidaodelailianmeng
    
#给变量重新赋值
name="李四"
echo   "你好${name} 欢迎来带德莱联盟 "

#清除变量
unset  name
    
echo   "你好${name} 欢迎来带德莱联盟 "

等号两边不能有空格!!!特别要注意,非常容易写错

命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。

不能使用标点符号。不能使用bash里的关键字。

2.3 shell中的输入和输出

输入:read -p 提示水印 -t 时间限定 -n 字符个数 -s文本加密

输出:echo -e 让echo处理特殊符号


#!/bin/bash

read  -p "请输入账号"  username
read  -s  -t 10 -n 16 -p "请10s之内输入密码:"   password

echo -e "您的账号    \033[5m ${username} \033[0m  "
echo -e "您的账号    \033[5m ${password} \033[0m  "

\33[0m 关闭所有属性
\33[1m 设置高亮度
\33[4m 下划线
\33[5m 闪烁
\33[7m 反显
\33[8m 消隐
\33[30m – \33[37m 设置前景色
\33[40m – \33[47m 设置背景色
\33[nA 光标上移n行
\33[nB 光标下移n行
\33[nC 光标右移n行
\33[nD 光标左移n行
\33[y;xH设置光标位置
\33[2J 清屏
\33[K 清除从光标到行尾的内容
\33[s 保存光标位置
\33[u 恢复光标位置
\33[?25l 隐藏光标
\33[?25h 显示光标

2.4 参数传递 位置参数

我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。
n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数
还有几个特殊字符用来处理参数
$# 	传递到脚本的参数个数             $* 	以一个单字符串显示所有向脚本传递的参数。
 如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$$ 	脚本运行的当前进程ID号   $! 	后台运行的最后一个进程的ID号
$@ 与$*相同,但是使用时加引号,并在引号中返回每个参数。
如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$? 	显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
    
 #!/bin/bash

 echo  "获取位置参数的第一个参数 ${1} "  
 echo  "获取位置参数的第四个参数 ${4} "   
 echo  "获取所有位置参数的个数: $# "       
 echo  "获取所有位置参: $* "    
 echo  "获取所有位置参: $@ "   
 echo  "脚本运行的当前进程ID号: $$ " 
 echo  "后台运行的最后一个进程的ID号: $! "
 echo  "显示最后命令的退出状态: $? "   
        
此时我们运行这个脚本
[root@localhost myshell]# ./hello.sh a b c e d f g h i j k l m n 
获取位置参数的第一个参数 a 
获取位置参数的第一个参数 e 
获取所有位置参数的个数: 14 
获取所有位置参: a b c e d f g h i j k l m n 
获取所有位置参: a b c e d f g h i j k l m n 
脚本运行的当前进程ID号: 1353 
后台运行的最后一个进程的ID号:  
显示最后命令的退出状态: 0 

2.5 重定向

大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回到您的终端。
    
一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。同样,一个命令通常将其输出写入到标准输出,默认情况下,这也是你的终端。

命令作用
command > file将输出重定向到 file。
command < file将输入重定向到 file。 
command >> file将输出以追加的方式重定向到 file。
n > file将文件描述符为 n 的文件重定向到 file。
n >> file将文件描述符为 n 的文件以追加的方式重定向到 file。 
n >& m将输出文件 m 和 n 合并。 
n <& m将输入文件 m 和 n 合并。 
<< tag将开始标记 tag 和结束标记 tag 之间的内容作为输入。 
    
需要注意的是文件描述符 0 通常是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。
    
    
#!/bin/bash

#本来这句代码会将内容输出到 终端 此时我们可以重定向到 文件
echo "你好 我是森林女神"  > aaa.txt
echo "你好 我是回声"  >> aaa.txt

#将 内容 添加到 变量中
read  a <<EOF
    "你好 林女神"
EOF
    
echo  $a >> aaa.txt
cat < hello.sh >> aaa.txt    
ech "你好 肯定会出错"  2>>aaa.txt

综合练习:实现一个压缩的脚本 并删除源文件 没有压缩成功记录错误信息 不删除源文件

#!/bin/bash

tar -zcvf $1.tar.gz  ${2}  2>>aaa.txt && rm -rf ${2}

2.6 shell中的if判断

if [判断条件1]
then command1  
elif [判断条件2] 
then 
else command
fi
    
其中的"=="两边都有空格,不能省略,否则结果不正确
[ -f "s1.sh" ]判断文件是否存在 [ -d "s1.sh" ]判断目录是否存在

#!/bin/bash

read  -p "请输入0 1 2 编号"  no

if [  $no == 0  ]
then 
   echo   "秀啊"
elif [  $no == 1  ]
then 
   echo  "嗨呀"
elif [  $no == 2 ]
then 
   echo "真假?"
else
   echo "行啊?"
fi

2.7 shell中的for循环

shell编程—jdk\tomcat软件安装_第2张图片

三 软件安装

3.1 JDK安装


查看JDK是否安装:yum list installed | grep  jdk
如果安装了则卸载: yum -y remove 对应JDK版本
查看JDK版本列表:yum search java | grep -i --color jdk
选择版本安装:yum -y install java-1.8.0-openjdk  java-1.8.0-openjdk-devel
查看java版本:java -version
查看环境变量:echo $JAVA_HOME
配置环境变量:vim /etc/profile  (G  o)
# set java environment  
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.345.b01-1.el7_9.x86_64
PATH=$PATH:$JAVA_HOME/bin  
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar  
export JAVA_HOME  CLASSPATH  PATH 
更新环境变量:source /etc/profile

3.2 安装tomcat

安装tomcat
在home下创建一个文件夹tomcat8: mkdir  /home/tomcat8
移动到这个目录:  cd   /home/tomcat8   
下载tomat压缩包: wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.73/bin/apache-tomcat-8.5.73.tar.gz
解压:tar -zxvf apache-tomcat-8.5.58.tar.gz 
到tomcat的bin目录启动tomcat: ./startup.sh 
在浏览器访问tomcat : http://192.168.11.130:8080




我们发现 每次启动maomi 都需要到其bin目录下才行  所以我们配置一个tomcat的启动脚本
配置tomcat 通过service启动的shell脚本
    
添加tomcat脚本: vim /etc/init.d/tomcat
    
#!/bin/bash
CATALINA_HOME=/home/apache-tomcat-8.5.82
case $1 in
        start)
                sh $CATALINA_HOME/bin/startup.sh     
                ;;
        stop)
                sh $CATALINA_HOME/bin/shutdown.sh
                ;;
        restart)
                sh $CATALINA_HOME/bin/shutdown.sh
                sh $CATALINA_HOME/bin/startup.sh
                ;;
        *)
                echo 'please use : tomcat {start | stop | restart}'
        ;;
esac
exit 0
    
    
移动到 init.d下 : cd /etc/init.d
添加权限:chmod 755 tomcat

3.3 boot项目 部署

1 maven 中 添加编译插件 放到admin项目中

<build>
    <finalName>${project.artifactId}</finalName>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
          <mainClass>com.aaa.haha.App</mainClass>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>repackage</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

2  修改配置文件 application.properties的配置链接
    
打开数据库的联机访问 
>show databases; 
>use mysql;
>update user set password=password('123456')  where user='root';
>update user set host='%' where host='127.0.0.1';
>flush privileges;
>exit;

3 打包: maven  有一个命令 :package

4 最后运行  java  -jar   xxxx.jar
    
作业: 阿里工具  toolkit 

你可能感兴趣的:(#,Linux,linux,tomcat)