首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

收藏~ 一篇教会你写90%的shell脚本

在公司项目的开发过程中,需要编写shell脚本去处理一个业务,在编写过程中发现自身对shell脚本的知识不够完善,顾整理一下,本文章主要内容来自菜鸟教程 , 也添加了一些知识点 看完这边文章应该就可以独立完成大部分脚本得编写...shell脚本就是由Shell命令组成的执行文件,将一些命令整合到一个文件中,进行处理业务逻辑,脚本不用编译即可运行。它通过解释器解释运行,所以速度相对来说比较慢。...1 : 将 stdout 和 stderr 合并后重定向到 file 读取外部输入 命令:read arg (脚本读取外部输入并赋值到变量上) 在shell脚本执行到上述命令时,停止脚本执行并等待外部输入...,将外部输入赋值到arg变量上,继续执行脚本 文件引用 引用其他的文件之后,可以使用其变量、函数等等,相当于将引用的文件包含进了当前文件 两种方式: . file_path\file_name source...,通过观察程序执行的步骤是否满足预期从而达到调试的效果 带有 + 表示的是 Shell 调试器的输出,不带 + 表示程序的输出。

2.3K10

一篇教会你写90%的shell脚本!

在公司项目的开发过程中,需要编写shell脚本去处理一个业务,在编写过程中发现自身对shell脚本的知识不够完善,顾整理一下,本文章主要内容来自菜鸟教程 , 也添加了一些知识点 看完这边文章应该就可以独立完成大部分脚本得编写...shell脚本就是由Shell命令组成的执行文件,将一些命令整合到一个文件中,进行处理业务逻辑,脚本不用编译即可运行。它通过解释器解释运行,所以速度相对来说比较慢。...shell脚本执行到上述命令时,停止脚本执行并等待外部输入,将外部输入赋值到arg变量上,继续执行脚本 #### 文件引用 引用其他的文件之后,可以使用其变量、函数等等,相当于将引用的文件包含进了当前文件...,可以使用“\”进行换行 使用“\”换行,在脚本执行过程中还是当做一行一个语句执行,不同于enter直接换行 注意:\ 前添加一个空格 。...,通过观察程序执行的步骤是否满足预期从而达到调试的效果 带有 + 表示的是 Shell 调试器的输出,不带 + 表示程序的输出。

1.9K01
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Shell 命令及运行原理

    什么是 Shell? Shell 是 Linux 和 Unix 系统中的 命令行解释器,调用用户输入的命令来与操作系统核心进行交互。...(内置、外部或自定义脚本) ↓ 添加命令到子进程中,fork 和 exec ↓ 运行命令,返回结果,显示于终端 对于 外部命令,运行过程更加详细: Shell 程序通过 fork...调用创建一个新的子进程; 子进程通过 exec 调用加载命令对应的执行文件; Shell 等待子进程运行完成,返回选择状态和输出结果。...查找命令 Shell 通过 PATH环境变量查找 ls 命令在文件系统中的位置。 fork Shell 通过 fork() 创建子进程。...总结 Shell 在操作系统中起着课程解释和命令执行的重要作用,其原理根据以下步骤运行: 输入解析 查找命令 fork 和 exec 执行命令 结果显示 深入了解这个流程,可以在命令行上可以更好地调试和解决问题

    19910

    Scala和Kotlin脚本编程

    可以看到脚本程序不需要主函数,Kotlin脚本以args参数接收用户输入(args是一个Array类型的数组) 在命令行执行:kotlinc -script Main.kts 高寒 得到脚本运行结果为...调用外部命令 如果我们想在Kotlin脚本中调用外部的命令或者程序需要怎么做呢?...ProcessBuilder使用多个参数进行命令名称和参数进行类的初始化 命令中的路径名称不能使用~特殊字符,否则会出错。...Scala和Kotlin脚本编程的异同 Scala脚本的扩展名和执行方式和普通Scala类一样;Kotlin脚本的扩展名为kts,执行的时候需要加-script参数 Scala提供了对于外部命令调用的快捷方法...,可以运行Ammonite Scala脚本 注:Ammonite项目扩展了Scala的脚本功能,添加了很多额外的特性,甚至提供了一个基于Scala的Shell(类似于Bash Shell)。

    1.7K10

    shell-编写shell脚本所需的基础语法

    本文链接:https://blog.csdn.net/CSDN___LYY/article/details/100584638 在公司项目的开发过程中,需要编写shell脚本去处理一个业务,在编写过程中发现自身对...shell脚本就是由Shell命令组成的执行文件,将一些命令整合到一个文件中,进行处理业务逻辑,脚本不用编译即可运行。它通过解释器解释运行,所以速度相对来说比较慢。...>&1 : 将 stdout 和 stderr 合并后重定向到 file 读取外部输入 命令:read arg (脚本读取外部输入并赋值到变量上) 在shell脚本执行到上述命令时,停止脚本执行并等待外部输入...,将外部输入赋值到arg变量上,继续执行脚本 文件引用 引用其他的文件之后,可以使用其变量、函数等等,相当于将引用的文件包含进了当前文件 两种方式: . file_path\file_name source...长句换行 在shell中为避免一个语句过长,可以使用“\”进行换行 使用“\”换行,在脚本执行过程中还是当做一行一个语句执行,不同于enter直接换行 注意:\ 前添加一个空格 。

    89920

    shell编程:编程就是这么简单

    Q:什么是shell编程? A:shell编程就是通过语法将bash命令或外部命令整合起来,搭配正则表达式、管道命令与数据流定向等功能,来实现我们要完成的任务。...最简单的shell script就是将多条命令写在一起,让用户可以一次性执行多条命令,同时每个命令及其输入参数得以在纯文本的shell脚本中保存。...: for id in `ls` do cd $id gzip -d raw_reads.fq.gz cd .. done 03 shell脚本命令行参数 命令行参数是程序与用户交互的重要过程...在shell脚本中,命令行参数可以直接加在脚本后面,在脚本里使用默认变量“$n”来调用(n为非负整数),下面通过一个小例子来了解shell脚本命令行参数使用方法: echo $0 echo $1 echo...getopts从命令中获取这些参数,并且删去了“-”,并将其赋值在第二个参数中,如果带有自己参数,这个参数赋值在“OPTARG”中。

    83840

    让docker中的mysql启动时自动执行sql文件

    本文提要 本文目的不仅仅是创建一个MySQL的镜像,而是在其基础上再实现启动过程中自动导入数据及数据库用户的权限设置,并且在新创建出来的容器里自动启动MySQL服务接受外部连接,主要是通过Dockerfile...和shell脚本实现这一过程。...表示当前目录,即Dockerfile文件所在的目录,创建过程如下: ? 执行docker images查看该镜像是否存在于镜像列表中: ? 创建成功。...查看容器的日志记录,启动过程与启动脚本setup.sh中所规范的步骤一致,数据导入和权限设置成功: ?...验证结果 1、通过进入容器在命令行验证 启动时容器的id为9db491b1d760,因此执行exec命令进入容器: docker exec -it 9db491b1d760 /bin/bash 这个命令不要直接使用

    4.3K70

    生信自动化流程搭建 01 | Nextflow的介绍与安装

    一、介绍 生信流程搭建一般有 Shell,Python,Galaxy等流派,为了去尽可能的了解生信流程的搭建过程及压榨计算机性能。...第一个将字符串拆分为6个字符,然后将每个字符串写入带有前缀的文件中, chunk_第二个接收这些文件并将其内容转换为大写字母。 最后,字符串在result输出,最终输view打印 。...x from letters output: stdout result """ rev $x """ } 然后以相同的名称保存文件,并通过-resume在命令行中添加选项来执行该文件...默认情况下,管道结果缓存在目录中$PWD/work。根据的脚本,此文件夹可能会占用大量磁盘空间。如果确定不会继续执行管道,请定期清理此文件夹。...-str 'Bonjour le monde' 在命令行上指定的字符串将覆盖参数的默认值。

    3.7K10

    【权限提升】Linux系统&环境变量&定时任务&权限配置不当&MDUT自动化

    shell(给到了suid权限),赋予执行权限 执行后运行ps命令 gcc demo.c -o shell chmod u+s shell chmod命令+s参数解释如下: s 在文件执行时把进程的属主或组...tar zxf 1.tar.gz /var/www/* 提权通过获取计划任务执行文件信息进行提权 相对路径和绝对路径执行 计划任务命令存在参数调用 利用计划任务的备份功能tar命令的参数利用...tmp目录下文件的原因是,边压缩文件的同时该目录下文件也在变化,不应该备份到当前目录下 echo "" > "--checkpoint-action=exec=sh test.sh" #将空文件写入...--checkpoint-action=exec=sh test.sh中 echo "" > --checkpoint=1 echo 'cp /bin/bash /tmp/bash; chmod +s...chmod 777 xxx.sh 此时普通用户也具有w权限,即具有写入权限,拿到普通用户权限之后可以直接修改xxx.sh,比如在脚本中添加反弹shell命令,从而利用定时任务执行反弹shell(执行为root

    13510

    Spring Boot 相关漏洞学习资料

    -1,可以在目标发外部 http 请求的过程中,在 url path 中利用占位符带出数据 步骤一:找到想要获取的属性名 GET 请求目标网站的 /env 或 /actuator/env 接口,搜索 *...XStream payload 的网站 提供一个依赖 Flask 并符合要求的 python 脚本示例,作用是利用目标 Linux 机器上自带的 python 来反弹shell。...使用 python 在自己控制的服务器上运行以上的脚本,并根据实际情况修改脚本中反弹 shell 的 ip 地址和 端口号。...http://your-vps-ip:80/#JNDIObject 1389 步骤五:监听反弹 shell 的端口 一般使用 nc 监听端口,等待反弹 shell nc -lv 443 步骤六:从外部...方法 目标机器请求外部日志配置文件 URL 地址,获得恶意 xml 文件内容 目标机器使用 saxParser.parse 解析 xml 文件 (这里导致了 xxe 漏洞) xml 文件中利用 logback

    4.2K60

    渗透测试中超全的提权思路来了!

    提权Webshell:尽量能够获取webshell,如果获取不到webshell可以在有文件上传的地方上传反弹shell脚本;或者利用漏洞(系统漏洞,服务器漏洞,第三方软件漏洞,数据库漏洞)来获取shell...、Bash、More、Less、cp (3)#nmap提权 较旧版本的Nmap(2.02至5.21)带有交互模式,从而允许用户执行shell命令。...mysql中无法方便实现得功能 udf文件后缀名: .dll(windows)linux后缀名:.so 提权原理 已知root账号和密码,利用root权限,创建带有调用cmd函数的“udf.dll”。...) 提权原理 使用mysql写文件,写一段vbs代码到开启自启动中。...使用T-SQL语言编写好的各种小脚本共同组合成的集合体,我们就称为“存储过程” 利用xp_cmdshell提权 (1)xp_cmdshell解释 Xp_cmdshell是sqlserver中的组件,可以以操作系统命令解释器的方式执行给定的命令字符串

    1.6K31

    Windows提权系列中篇

    在MYSQL 4.1以前的版本中,可以将所有的DLL文件里面的任何函数都注册到MYSQL里面以供MYSQL调用。无论这个DLL在什么位置,函数的声明是什么样的。...) 提供了以下三种方法编译到 WMI 存储库的托管对象格式 (MOF) 文件: 运行 MOF 文件指定为命令行参数将 Mofcomp.exe 文件。...sa权限利用 微软的SQL Server在提权过程中往往也会给我们很大帮助,尤其是当找到SA用户的密码时,系统权限就基本到手了。...2.执行命令 declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run...在bat脚本中,我们可以使用回车把垃圾数据提交了,系统会把它们当成无用命令处理,不会影响脚本的正常运行,所以我们在这里选用bat脚本。

    2.4K00

    代码审计:命令注入学习

    B、看配置文件,带有config关键字的文件,找到mysql.class.php文件的connect()函数,查看在数据库连接时是否出现漏洞。...、使用自定义函数或函数库实现外部应用程序或命令的功能。 3、 在执行system、eval等命令执行功能的函数前,确定参数内容。...4、escapeshellcmd()函数会转义命令中的所有shell元字符来完成工作。这些元字符包括:#&;`,|*?~^()[]{}$\\。...将php.ini文件中的safe_mode设置为On,然后将允许执行的文件放入一个目录中,并使用safe_mode_exec_dir指定这个可执行的文件路径。...这样,在需要执行相应的外部程序时,程序必须在safe_mode_exec_dir指定的目录中才会允许执行,否则执行将失败。

    1.5K100

    【云原生 | Docker】Linux 定时自动化备份Mysql数据到本地 & Windows 最佳实践,确定不来看看?

    脚本和Cron 使用Shell脚本和Cron定时任务来备份MySQL数据,并使用文件传输协议(如SCP或SFTP)将备份文件传输到Windows本地。...使用Shell脚本和Cron 编写备份脚本:创建一个Shell脚本文件,例如backup.sh,用于执行MySQL数据备份操作。...在脚本中,需要包含连接MySQL数据库的相关信息、备份文件的保存路径以及备份命令。 编辑备份脚本:在备份脚本中,使用适当的命令(如mysqldump)来执行MySQL数据备份。...确保备份命令包括必要的选项,如备份的数据库名称、用户名、密码等。 设置备份文件路径:在备份脚本中,指定备份文件的保存路径。可以选择本地路径或远程路径,例如/var/backups/mysql/。...ps 进入MySQL容器:使用以下命令进入MySQL容器的命令行界面:docker exec -it bash 在MySQL容器中执行备份命令:在MySQL容器的命令行界面中,可以使用

    81351

    Java魔法堂:调用外部程序

    ", null, new File("D:\\tools")); String command 即为需要调用的外部程序,以及命令行参数等。...执行命令,只需要将ls改写为xterm -e ls即可; String[] cmdArray 功能和String command一样,但命令行的每个部分将作被独立分隔出来作为数组中的元素。...String cmd = "/path/to/getipconfig.bat"; // 自己写的bat脚本文件,里面包含ipconfig /all命令。...即通过Runtime#exec调用外部程序时,外部程序的标准输出流和标准错误流已经被Java程序接管。那么在命令中企图通过>和>>实现输出重定向显然已无效果。 ?...另外,缓冲池的容量是一定的,因此若外部程序在运行过程中不断向缓冲池输出内容,当缓冲池填满,那么外部程序将暂停运行直到缓冲池有空位可接收外部程序的输出内容为止。

    1.6K10

    shell编程

    脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量 ....$#(功能描述:这个变量代表命令行中所有参数的个数) 3 快速入门 编写一个shell脚本,pasition.sh,在脚本中获取到命令行的各个参数信息 7 预定义变量 介绍 就是 shell 设计者事先已经定义好的变量...如果这个变量的值为 0,证明上一个命令正确执行;如果这个变量的值为非 0(具体是哪个数,由命令自己来决定),则证明上一个命令执行失败) 快速入门 在一个shell脚本pre.sh中简单实用一下预定义变量...return xxx; } 调用: 函数名 值1 值2 快速入门 编写func.sh: 用函数的形式,计算两个参数的和 13 shell综合案例 在/usr/sbin下编写mysql_db_backup.sh...$DATETIME #删除临时目录 rm -rf $BACKUP/$DATETIME #删除10天前的文件 find $BACKUP -mtime +10 -name "*.tar.gz" -exec

    53220

    Docker速学(二) Dockerfile和数据卷

    关于 Dockerfile,下面我们再传递几个重要的观点: Dockerfile 是 Docker 运维开发工作的关键 Dockerfile 文件主要用于编写应用的安装过程 应用的初始化过程可以在 Dockerfile...中引入,然后在独立的脚本中编写 Dockerfile 必须构建成镜像后再供用户使用,直接基于 Dockerfile 运行容器可能会由于网络问题导致无法达成预期目的 指令不仅仅用于设计 Docker 镜像...有如下几个关键技术点需要掌握: CMD 与 ENTRYPOINT 的区别:CMD 直接运行单条命令,ENTRYPOINT 用于运行一个脚本 指令的 Shell 和 Exec 语法模式 # Shell 模式...下表列出了如果把Shell表示法和Exec表示法混合, 最终得到的命令行, 可以看到如果有Shell表示法存在, 很难得到正确的效果: Dockerfile Command ​ ENTRYPOINT...但用户在实际使用 Docker 的过程中,一定有持久保存数据(包含配置文件)的需求,那么 Docker 是如何解决这个问题的呢?

    87800

    搞定Linux Shell文本处理工具,看完这篇集锦就够了

    Linux Shell是一种基本功,由于怪异的语法加之较差的可读性,通常被Python等脚本代替。既然是基本功,那就需要掌握,毕竟学习Shell脚本的过程中,还是能了解到很多Linux系统的内容。...Linux脚本大师不是人人都可以达到的,但是用一些简单的Shell实现一些常见的基本功能还是很有必要的。...; 我对shell脚本使用的原则是命令单行书写,尽量不要超过2行; 如果有更为复杂的任务需求,还是考虑python吧; 1、find 文件查找 查找txt和pdf文件 find . \( -name...然后 -exec 调用时执行脚本即可; -exec ....-0 rm 3、xargs 命令行参数转换 xargs 能够将输入数据转化为特定命令的命令行参数;这样,可以配合很多命令来组合使用。

    6.4K41

    Process类详解

    ProcessBuilder.start() 和 Runtime.exec() 方法都被用来创建一个操作系统进程(执行命令行操作),并返回 Process 子类的一个实例,该实例可用来控制进程状态并获得相关信息...每个进程生成器ProcessBuilder对象管理这些进程属性: 命令 是一个字符串列表,它表示要调用的可执行外部程序文件及其参数(如果有)。 环境 是从变量 到值 的依赖于系统的映射。...Runtime.exec() 可接受一个单独的字符串,这个字符串是通过空格来分隔可执行命令程序和参数的;也可以接受字符串数组参数/list。...不正确地处理这些外部程序可能会导致一些意外的异常、DoS,及其他安全问题。 一个进程如果试图从一个空的输入流中读取输入,则会一直阻塞,直到为其提供输入。...shell脚本执行完成 process.waitFor();

    1.6K20

    MongoDB自动备份全过程实录

    然而,手动备份还是挺麻烦的,怎么实现备份的自动化呢? 自动备份 正常来说,自动备份是比较简单的——只需将手动备份的命令做成Shell脚本,并设置定时任务即可。...安装expect yum install -y expect 编写expect脚本 expect语法非常简单,和Shell几乎一样。笔者的脚本编写如下: #!...最终备份出来的文件会存放在 /xxxxx/dbbak-备份日期 目录中。 自动备份 笔者利用Linux定时任务实现自动执行。 crontab -e 在新窗口中添加如下内容: 0 0 1 * * ?.../usr/bin/expect 上面expect shell的完整路径 原本以为这样就可以定时执行了,然而却无法正常执行。 百度后,将脚本修改为如下,终于可以正常执行了。 #!...,另外,expect是一款通用的提供自动交互的工具,用来实现ssh的自动登录、sftp的自动登录、mysql的自动登录等。

    74630
    领券