首页 > 系统相关 >shell编程初识

shell编程初识

时间:2024-09-19 21:46:31浏览次数:1  
标签:shell 31 编程 初识 01 35 root bash

1. Shell概述,编程语言.

1.1 编程概述

应用广泛: Shell占据的Linux半壁江山.
企业要求:面试要求运维人员必会.

目标:
1.能够熟练书写超过多行的脚本:

    检查类:
        系统巡检,
        系统加固,

    优化:(检查,配置优化)
        系统优化(初始化)(第2阶段开头).
        ngx优化(第2阶段开头).
        tomcat优化(第2阶段开头).
        数据库优化

    安装类(安装,配置,启动)
        编译安装nginx
        yum安装/apt安装
        二进制
        ...
2. 总计完成书读写5000行脚本(读写).
3. 完成100个脚本书写

SRE运维核心基操:https://www.yuque.com/lidao996/sre/vc088y5l9zof946c?singleDoc#

Shell编程总结:https://www.processon.com/view/link/65653d90c9a10714d94d5a21

1.2 编程语言

1.2.1 编程语言分类

编程语言分类

说明

解析型:直接解析类

shell,python,php, 书写成文件后,可以通过对应的解释器直接运行。

编译型:需要编译后运行

C,C++,Java(maven),Golang. 下载好源代码,必须要进行编译生成可以运行的命令。

 
1.2.2 Shell编程语言必知必会

Shell命令解释器:bash编程.

常用命令解释器.

命令解释器

 

bash

目前应用最广泛一款命令解释器,红帽系列(默认),Debian,Ubuntu,BASH全称: Bourne-Again SHell

dash

一般debian/ubuntu系统默认的, 运行脚本推荐使用 bash 1.sh

csh,tcsh

一些unix系统使用

zsh

功能更多,支持更多的插件,可以更好看。

⚠shell脚本(.bash .sh),运行在ubuntu中的时候,不推荐使用sh 运行,推荐使用bash运行.

2. Shell环境准备

修改vimrc文件,达到控制vim创建,编辑文件的动作。

当前用户家目录下 ~/.vimrc (只对当前用户生效)

追加:/etc/vimrc (红帽系列) /etc/vim/vimrc(ubuntu debian)

# 1.文件追加如下内容   /etc/vimrc  (红帽系列)   /etc/vim/vimrc(ubuntu debian)

set ignorecase 
autocmd BufNewFile *.py,*.cc,*.sh,*.java,*.bash exec ":call SetTitle()"

func SetTitle()
if expand("%:e") =~ 'sh\|bash\|py'
call setline(1, "#!/bin/bash")
call setline(2,"##############################################################")
call setline(3, "# File Name:".expand("%"))
call setline(4, "# Version:V1.0")
call setline(5, "# Author:xk")
call setline(6, "# Organization: none")
call setline(7, "# Desc:")
call setline(8,"##############################################################")

endif
endfunc

# 2. 使用vim创建sh|bash|py文件
[root@ubuntu2204 /etc/vim]# vim /etc/vim/vimrc
[root@ubuntu2204 ~]# vim 1.sh
[root@ubuntu2204 ~]#  
[root@ubuntu2204 ~]# cat 1.sh
#!/bin/bash
##############################################################
# File Name:1.sh
# Version:V1.0
# Author:xk
# Organization: none
# Desc:
##############################################################
[root@ubuntu2204 ~]# 

[root@Kylin-V10-sp3 ~]# vim /etc/vimrc

set ignorecase #搜索的时候忽略大小写

配置shell脚本dockerfile docker-compose的vimrc模板

查看代码
 #写入到/etc/vimrc文件末尾

autocmd BufNewFile *.py,*.cc,*.sh,*.java,*.bash,Dockerfile,docker-compose.yml exec ":call SetTitle()"

func SetTitle()  
    if expand("%:e") =~ 'sh\|bash'  
        call setline(1,"#!/bin/bash")
        call setline(2, "##############################################################")  
        call setline(3, "# File Name: ".expand("%"))
        call setline(4, "# Version: V1.0")
        call setline(5, "# Author: lidao996")
        call setline(6, "# Organization: www.oldboyedu.com")
        call setline(7, "# Description:")
        call setline(8, "##############################################################")
        call setline(9, "")
    endif  
    if expand("%") == 'Dockerfile'  
        call setline(1, "#####################Dockerfile###############################")
        call setline(2, "##############################################################")  
        call setline(3, "# File Name: ".expand("%"))
        call setline(4, "# Version: V1.0")
        call setline(5, "# Author: lidao996")
        call setline(6, "# Organization: www.oldboyedu.com")
        call setline(7, "# Description:")
        call setline(8, "##############################################################")
        call setline(9, "")
        call setline(10, "FROM")
        call setline(11, "LABEL maintaniner='oldboy  [email protected]' author=lidao996")
        call setline(12, "CMD []")
    endif  
    if expand("%") == 'docker-compose.yml'  
        call setline(1, "#####################docker-compose###########################")
        call setline(2, "##############################################################")  
        call setline(3, "# File Name: ".expand("%"))
        call setline(4, "# Version: V1.0")
        call setline(5, "# Author: lidao996")
        call setline(6, "# Organization: www.oldboyedu.com")
        call setline(7, "# Description:")
        call setline(8, "##############################################################")
        call setline(9, "")
        call setline(10, "version: '3.3'")
        call setline(11, "services:")
        call setline(12, "volumes:")
    endif  
endfunc

 

3. Shell脚本执行方式

3.1 #! 符号含义

sha-bang

并非注释的意思,写在脚本开头.

用于指定脚本默认的命令解释器.

命令解释器 写法
bash #!/bin/bash
python #!/usr/bin/python2 或 #!/usr/bin/env python2

 

3.2 概述

执行方法

应用场景与说明

通过sh或bash

标签:shell,31,编程,初识,01,35,root,bash
From: https://www.cnblogs.com/daofaziran/p/18421087

相关文章

  • 五、I/O与网络编程-5.1、I/O基础
    5.1、I/O基础5.1.1、Java有几种文件拷贝方式,哪一种效率最高?答:以下是三种不同方式的Java代码示例:使用字节流进行传输:可以使用FileInputStream和FileOutputStream类来完成文件的读取和写入,逐字节地拷贝文件内容。这种方式比较简单,但效率较低,特别是对于大文件而言。示例:i......
  • 哪个编程工具让你的工作效率翻倍?
    在日益繁忙的工作环境中,选择合适的编程工具已成为提升开发者工作效率的关键。不同的工具能够帮助我们简化代码编写、自动化任务、提升调试速度,甚至让团队协作更加顺畅。那么,哪款编程工具让你的工作效率翻倍?是智能的代码编辑器,强大的版本控制工具,还是那些让你事半功倍的自动化......
  • Java语言程序设计基础篇_编程练习题**18.31 (替换单词)
    目录题目:**18.31(替换单词)习题思路代码示例 运行结果替换前替换后题目:**18.31(替换单词) 编写一个程序,递归地用一个新单词替换某个目录下的所有文件中出现的某个单词。从命令行如下传递参数:javaExercise18_31dirNameoldWordnewWord习题思路(读取路径方......
  • 只会Python编程,做量化交易策略用QMT怎么样?听说QMT是支持Python的!
    QMT是专门为机构、活跃投资者、高净值客户等专业投资者研发的智能量化交易终端,拥有高速行情、极速交易、策略交易、多维度风控等专业功能,满足专业投资者的特殊交易需求。覆盖业务范围广:沪深A股、港股通、两融、期权、期货。适合用QMT的投资者:机构投资者:对系统交易工具和交......
  • 使用 PowerShell 管理 DNS 服务器,你可以执行多种操作,如添加、删除和修改 DNS 记录,以及
    使用PowerShell管理DNS服务器,你可以执行多种操作,如添加、删除和修改DNS记录,以及管理DNS区域。以下是一些常用的cmdlet示例:查看所有DNS区域powershellCopyCodeGet-DnsServerZone添加新的DNS区域powershellCopyCodeAdd-DnsServerPrimaryZone-Name"yourdomai......
  • dialog 编程
      #!/bin/bash#usingdialogtocreateamenutemp=`mktemp-ttest.XXXXXX`temp2=`mktemp-ttest2.XXXXXX`functiondiskspace{ df-k>$temp dialog--textbox$temp2060}functionwhoseon{ who>$temp dialog--textbox$temp2050}fun......
  • 业务初识-思考问题-分析数据-输出结论
    思考问题:确认问题(目的(明确程度,原因是解决还是什么),背景,思路)检测数据完善性拆解问题-经典分析框架-搭建自己的分析框架sg:拆解问题总结:一个原则四个方法MECE法则:拆解部分要相互独立、完全穷尽时间流程法、模型框架法、量化公式法、穷尽要素法时间流程法:最常用,根据时间......
  • STM32F407单片机编程入门(七)USART串口485通讯实战含源码
    文章目录一.概要二.USART串口基本介绍三.STM32单片机USART内部结构图四.USART内部信号流向五.USART示波器信号解析六.485通讯基本概念七.CubeMX配置一个USART数据收发例程进行485通讯实验八.工程源代码下载九.小结一.概要USART(UniversalSynchronous/AsynchronousR......
  • 【JavaScript编程】预解析机制
    前言一、预解析是什么?二、预解析的过程三、预解析对代码执行的影响四、代码示例五、总结原创思跃喵我码玄黄前言在JavaScript的世界里,代码的执行并不是简单地从上到下按顺序进行的。在实际执行之前,JavaScript引擎会进行一个特殊的阶段,称为“预解析”。这一......
  • Java面向对象编程(OOP)的四个主要特征
    目录1.封装(Encapsulation):2.继承(Inheritance):3.多态(Polymorphism):4.抽象(Abstraction):Java面向对象编程(OOP)有四个主要特征:封装、继承、多态和抽象。这些特性是OOP的核心概念,帮助构建灵活、可维护的代码结构。1.封装(Encapsulation):封装是将对象......