shell脚本

linux中的sh、dash、bash的区别

本秂侑毒 提交于 2019-11-30 02:51:24
一、常见shell类型 1. Bourne shell (sh) UNIX 最初使用,且在每种 UNIX 上都可以使用。在 shell 编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种shell。 2. C shell (csh) csh, the C shell, is a command interpreter with a syntax similar to the C programming language.一个语法上接近于C语言的shell。 3. Korn shell (ksh) 完全向上兼容 Bourne shell 并包含了 C shell 的很多特性。 4. Bourne Again shell (bash) 因为Linux 操作系统缺省的 shell。即 bash 是 Bourne shell 的扩展,与 Bourne shell 完全向后兼容。在 Bourne shell 的基础上增加、增强了很多特性。可以提供如命令补全、命令编辑和命令历史表等功能。包含了很多 C shell 和 Korn shell 中的优点,有灵活和强大的编程接口,同时又有很友好的用户界面。 5. Debian Almquist Shell(dash) 原来bash是GNU/Linux 操作系统中的 /bin/sh 的符号连接,但由于bash过于复杂,有人把 bash 从

SHC加密shell脚本

╄→尐↘猪︶ㄣ 提交于 2019-11-30 02:41:40
安装: # wget http://www.datsi.fi.upm.es/%7Efrosal/sources/shc-3.8.6.tgz # tar zvxf shc-3.8.6.tgz # cd shc-3.8.6 # make test # make strings # make install 应用: 下面以mysql数据库备份(备份文件通过ftp上传到一台远程的服务器)脚本为例: ############################### mysql_backup.sh ############################## #!/bin/sh newtime=`date +%m-%d-%y_%I%M%p` mysqldump -u ****** -p ****** dbname | gzip > /Users/****/Documents/dbName_$newtime.sql.gz echo “backup of dbname” curl –upload-file dbname$newtime.sql.gz –url “ftp://*****:*****@host/” echo “ftp of dbname done” ############################### mysql_backup.sh ######################

shell——Day3

冷暖自知 提交于 2019-11-30 02:21:34
a.sort排序 默认排序按照升序,按照每行文件的首字母(数字)的ASCII表的顺序进行排序。 [root@lsl ~]# vi b.txt user1 user2 a b 1 10 6 11 5 22 c g [root@lsl ~]# sort -n b.txt //按照数值大小写对输入信息进行排序 a b c g user1 user2 1 5 6 10 11 22 例:分割passwd目录下第三列,进行p排序 sort -t ":" -k3 -n /etc/passwd 从图中可以看出文件按照 0 1 2 3 4 5进行排序 例:统计重复值和非重复值 vi c.txt //在文件中输入多个重复值和非重复值进行测试 a a b b b b b c g g g [root@lsl ~]# sort c.txt | uniq -c -d //统计重复值 [root@lsl ~]# sort c.txt | uniq -c -u 注:sort 参数 -n 按照数值大小排序 -f 忽略字母大小写 -t 指定分隔符(cut-d) -k 指定所取到的列 -u 去重(连续相同的值) b.编程原理: 1、编程介绍 目的:让硬件设备实现人类指定的某些特定的功能 硬件设备如何识别这些编程语言 早期语言:basic 汇编语言 局限性,每个厂家都有自己硬件设备所能够识别的汇编语言格式 高级语言:

MongoDB的Shell操作

纵然是瞬间 提交于 2019-11-30 02:15:29
前言 本文从介绍了MongoShell 的配置、脚本、数据类型和其他指令。 MongoShell - 简介 MongoShell是一个互动的JavaScript接口的MongoDB,可以使用MongoShell来查询和更新数据以及执行管理操作。 MongoShell是MongoDB发行版的一个组件, 安装并启动MongoDB后,将MongoShell连接到正在运行的MongoDB实例,MongoDB手册中的大多数示例使用 MongoShell,然而,许多驱动程序也提供了与MongoDB类似的接口。 启动MongoShell: 在启动MongoShell之前请确保MongoDB 实例在运行,在Terminal 中键入Mongo则可以直接启动。 示例代码: ➜ ~ mongo MongoDB shell version v3.4.3 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.4.3 Server has startup warnings: 2017-10-19T10:41:29.922+0800 I CONTROL [initandlisten] 2017-10-19T10:41:29.923+0800 I CONTROL [initandlisten] ** WARNING: Access

Shell基础(一)

亡梦爱人 提交于 2019-11-30 02:08:57
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。 Shell 既是一种命令语言,又是一种程序设计语言。 1,eg: #!/bin/sh #! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。 2,linux中的bash 它是一个 shell, 人机对话的窗口,它是一个程序,是一个 gnu 软件 ,一般 linux 中默认 shell 就是 bash 运行 shell 脚本的两种方式: 作为可执行程序 赋予执行权限 执行脚本 eg: chmod 777 hello.sh ./hello.sh 作为解释器参数 eg: /bin/bash hello.sh 3 , shell 中的单双引号 1>单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。 2>双引号里可以有变量 双引号里可以出现转义字符 4,~在linux中代表用户的主目录,也就是所说的家目录 对于一般用户,~表示/home/用户名 对于root用户,~表示/root 5 ,只读变量:使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。 6 ,删除变量:使用 unset 命令可以删除变量 。 eg: #! /bin/bash myUrl=

Linux 系统结构详解

拟墨画扇 提交于 2019-11-30 01:56:00
Linux系统一般有4个主要部分: 内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。 1、linux内核 内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。 Linux 内核由如下几部分组成:内存管理、进程管理、设备驱动程序、文件系统和网络管理等。如图: 系统调用接口:SCI 层提供了某些机制执行从用户空间到内核的函数调用。这个接口依赖于体系结构,甚至在相同的处理器家族内也是如此。SCI 实际上是一个非常有用的函数调用多路复用和多路分解服务。在 ./linux/kernel 中您可以找到 SCI 的实现,并在 ./linux/arch 中找到依赖于体系结构的部分。 2、内存管理 对任何一台计算机而言,其内存以及其它资源都是有限的。为了让有限的物理内存满足应用程序对内存的大需求量,Linux 采用了称为“虚拟内存”的内存管理方式。Linux 将内存划分为容易处理的“内存页”(对于大部分体系结构来说都是 4KB)。Linux 包括了管理可用内存的方式,以及物理和虚拟映射所使用的硬件机制。 不过内存管理要管理的可不止 4KB 缓冲区。Linux 提供了对 4KB 缓冲区的抽象,例如 slab 分配器。这种内存管理模式使用

清理hdfs小文件shell脚本

北慕城南 提交于 2019-11-29 23:48:39
清理hdfs小文件shell脚本 #!/bin/bash echo "--------------------------------------------------------------------------------------------------------------------" echo "BASH_VERSION: $BASH_VERSION" echo "参数说明: " echo "从外部只传递零个参数时,遍历字典,删除 hdfs 对应日期下的文件目录" echo "从外部只传递一个参数时,根据指定的 hive 外表,删除 hdfs 对应日期下的文件目录" echo "从外部只传递两个参数时,第一个参数必须是 hdfs-to-hive 的外表名,第二个必须是YYYY-MM-DD格式的日期! 默认是当天日期减去20天" echo "--------------------------------------------------------------------------------------------------------------------" os_name=`uname` if [ "Darwin" == $os_name ]; then # For BSD date:If you are using OS X or FreeBSD

Apache Solr远程代码执行漏洞(CVE-2017-12629)

南楼画角 提交于 2019-11-29 23:47:46
http://www.freebuf.com/sectool/159970.html 一 漏洞简介 Apache Solr 是Apache开发的一个开源的基于Lucene的全文搜索服务器。其集合的配置方法(config路径)可以增加和修改监听器,通过RunExecutableListener执行任意系统命令。 二 漏洞利用 2.1. 环境介绍 Ubuntu14 64位环境(solr服务器:192.168.136.159;攻击端: 192.168.136.158/163) Apache solr7.0.1(使用其他环境的需要手动创建集合的配置文件) zookeeper-3.4.6 2.2. 实验环境搭建 2.2.1. 安装java8 sudo apt- get installpython-software-properties sudo apt- get installsoftware-properties-common sudo add-apt-repositoryppa:webupd8team/java sudo apt- get update sudo apt- get install oracle-java8-installer 2.2.2. 启动zookeeper 下载zookeeper-3.4.6.tar.gz tar zxvf zookeeper-3 .4 .6

Shell脚本应用 – for、while循环语句

梦想与她 提交于 2019-11-29 23:27:18
通过 Shell 脚本 应用(二)学习到了if条件条件语句的使用方法等。 Shell 作为一种 脚本 编程语言,同样了包含了循环,分支等其他程序控制结构,从而能够轻松完成更加复杂、强大的功能。我们今天就来认识for、while、case语句的具体应用。 一、for循环语句 在实际工作中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的对象不一样,其他 命令 相同。例如:根据通讯录中的姓名列表创建系统账号等情况。 当面对各种列表重复工作任务时,使用if语句已经不能满足需要了,就需要使用到for语句。 1.for语句结构 使用for循环语句时,需要指定一个变量及可能的取值列表,针对不同的取值重复执行相同的 命令 序列,知道变量值用完退出循环。 1)for循环语句的语法结构: for 变量名 in 取值列表 do 命令序列 done 语句结构中,for语句的操作对象为用户吧指定名称的变量,并通过in关键字为该变量预先设置了一个取值列表,多个取值之间用空格进行分隔。位于do……done之间的命令序列称为循环体,其中的执行语句需要应用变量以完成相应的任务。 2)for循环语句流程图 3)for循环语句的使用场景 1. 循环次数未知; 2.完整遍历整个取值列表。 2.for语句应用示例 要求: 1.根据姓名列表批量创建用户; 2.用户的初始密码是“123456” 实施步骤:

shell编程之函数定义及使用

我的未来我决定 提交于 2019-11-29 22:33:44
一.函数定义 #!/bin/sh #func1.sh hello() ##函数定义 {   echo "Hello there today's date is 'date +%Y-%m-%d' "   #return 2 ###返回值其实是状态码,只能在[0-255]范围内 } echo "now going to the function hello" hello #echo $? 获取函数的return值 echo "back from the function" 函数调用:function hello() 或 function hello 或 hello 注意:1.必须在调用函数地方之前,先声明函数,shell脚本是逐行运行,不会像其它语言一样先预 编译    2.函数返回值,只能通过$?系统变量获得,可以显示加:return返回,如果不加,将以最后 一条命令运行结果,作为返回值。return后跟数值n(0-255) 脚本高度:sh-vx helloWorld.sh或者在脚本中增加set -x 二.函数参数 #!/bin/bash #fun1.sh funWithParam(){   echo "第一个参数为 $1!"   echo "第二个参数为 $2!"   echo "第十个参数为 $10!"   echo "第十个参数为 ${10}!"   echo "第十一个参数为