shell函数

面试时必须懂的shell知识

六月ゝ 毕业季﹏ 提交于 2019-12-06 07:08:43
一、Shell脚本是什么、它是必需的吗? 一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成这些日常工作任务。 二、什么是默认登录shell,如何改变指定用户的登录shell? 在Linux操作系统,“/bin/bash”是默认登录shell,是在创建用户时分配的。使用chsh命令可以改变默认的shell。示例如下所示: chsh <username> -s <shell> 三、可以在shell脚本中使用哪些类型的变量? 可以定义如下两种类型的变量 系统定义变量 用户定义变量 四、如何将标准输出和错误输出同时重定向到同一位置? 可以有两种实现方法: 2>&1 &> 五、shell脚本中”if”语法如何嵌套? 示例如下: if [ 条件 ] then; command ... else if [ 条件 ] then; command... else command... fi fi 六、shell脚本中"$?"标记的用途是什么? “$?”可以来检查前一命令的结束状态,通常”0”表示成功,”1-255”表示运行失败 七、在shell脚本中如何比较两个数字 ? 可以使用 -gt 、 -lt`` 、 -ne 、 -eq`来进行比较。 八

回顾了下shell 编程

安稳与你 提交于 2019-12-06 05:25:32
回顾了一些细节 shell 的通配符扩展 * ? [] [^xxxx] {aaa,bbb} 子进程 more `grep -l POSIX *` more $(grep -l POSIX *) shell 变量的一些特性 赋值直接用变量名,获取内容需要加$ salutation=Hello echo $salutation 读取输入 read salutation 关于shell 中的引号 #!/bin/bash myvar="Hi there" echo $myvar echo "$myvar" echo '$myvar' echo \$myvar shell 中的预定义变量 环境变量的概念: 程序执行时,一些变量会根据环境设置中的值来进行初始化 $HOME $PATH $PS1 $PS2 $IFS 输入域分隔符,shell读取输入时分割单词的字符 $0 shell 脚本的名字 $# 传给脚本的参数个数 $$ shell脚本的进程号 $1 $2 第几个参数 $* 所有参数 shell 的条件判断 test 和 [] if test -f fred.c then … fi if [ -f fred.c ] then … fi test 可以使用的三类条件 1 字符串比较 string1 = string2 string1 != string2 -n string 字符串不为空则为真

shell 学习笔记

倖福魔咒の 提交于 2019-12-06 02:59:10
Shell 是什么 Shell 是指一种命令行解释器,是为用户和操作系统之间通信提供的一种接口 分类 图形界面shell(graphical user interface) 命令行shell (Command Line Interface ) 即CLI Shell不只是解释器,还是一种脚本语言(解释型语言) 工作模式: 互动模式 脚步模式 互动模式:由系统管理人员直接通过键盘输入命令,并等待其执行在一个命令 脚步模式:设计出一个脚步文件,将所有需要执行命令写在该文件中,由bash shell读取并执行 Shell 内建命令 bash, :, ., [, alias, bg, bind, break, builtin, cd, command, compgen, complete, continue, declare, dirs, disown, echo, enable, eval, exec, exit,export, fc, fg, getopts , hash, help, history, jobs, kill, let, local, logout, pops, printf, pushed, pwd, read,redonly, return, set, shift,shopt, source, suspend, test, times, trap, rype,

makefile函数

随声附和 提交于 2019-12-05 19:48:13
1、findstring 调用形式:$(findstring FIND, IN) 函数功能:搜索字串“IN”,查找“FIND”字串。 返回值 :如果在“IN”之中存在“FIND”,则返回“FIND”,否则返回空。 函数说明:字串“IN”之中可以包含空格、[Tab]。搜索需要是严格的文本匹配。 例子: $(findstring a, a b c) 返回a $(findstring a, b c) 返回空 2、substr 调用形式:$(substr from,to,TEXT) 函数功能:把字串“TEXT”中的“FROM”字符替换为“TO”。 返回值 :替换后的新字符串。 例子: $(substr EE, ee, street) 返回strEEt 3、filter 调用形式:$(filter PATTERN, TEXT) 函数功能:过滤掉字串“TEXT”中所有不符合模式“PATTERN”的单词,保留所有符合此模式的单词。可以使用多个模式。模式中一般需要包含模式字符“%”。存在多个模式时,模式表达式之间使用空格分割。 返回值 :空格分割的“TEXT”字串中所有符合模式“PATTERN”的字串。 函数说明:“filter”函数可以用来去除一个变量中的某些字符串。 例子: $(filter %.c %.cpp,a.c b.cpp c.h) 返回a.c b.cpp 4、filter-out

For,while,case,shell循环结构

荒凉一梦 提交于 2019-12-05 19:14:15
For,while,case,shell循环结构 案例 1 :使用 for 循环结构 案例 2 :使用 while 循环结构 案例 3 :基于 case 分支编写脚本 案例 4 :使用 Shell 函数 案例 5 :中断及退出 1 案例 1 :使用 for 循环结构 1.1 问题 本案例要求编写一个 Shell 脚本 chkhosts.sh ,利用 for 循环来检测多个主机的存活状态,相关要求及说明如下: 对 192.168.4.0/24 网段执行 ping 检测 ping 检测可参考前一天的 pinghost.sh 脚本 脚本能遍历 ping 各主机,并反馈存活状态 执行检测脚本以后,反馈结果如图 -1 所示。 图 -1 1.2 方案 在 Shell 脚本应用中,常见的 for 循环采用遍历式、列表式的执行流程,通过指定变量从值列表中循环赋值,每次复制后执行固定的一组操作。 for 循环的语法结构如下所示: for 变量名 in 值列表 do 命令序列 done For 变量名 in `ls/etc/*.conf` do 命令序列 done for 变量名 in {1..5} do 命令序列 done for 变量名 in `seq 5` do 命令序列 done 1.3 步骤 实现此案例需要按照如下步骤进行。 步骤一:练习 for 循环基本用法 脚本 1 ,通过循环批量显示

Shell学习(二)Shell变量

北慕城南 提交于 2019-12-05 14:46:37
一、 Shell变量 变量的定义 例子: my_job="Learn Shell"    PS: 变量名和等号之间 不能有空格 !!! 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。 中间不能有空格,可以使用下划线(_)。 不能使用标点符号。 不能使用bash里的关键字(可用help命令查看保留关键字)。 变量的使用   使用一个定义过的变量,只要在 变量名前面加美元符号 即可。 #定义变量 my_name="zh" #使用变量(建议加上花括号区分变量边界) echo $my_name #使用变量【推荐形式】 echo ${my_name} 设置变量只读   使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。 #定义变量 myUrl="www.cnblogs.com/riches" #将变量设置为“只读”状态 readonly myUrl 删除变量   使用 unset 命令可以删除变量。语法: #删除变量 unset myUrl 变量类型 局部变量 :局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。 环境变量 :所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。 shell变量

Shell脚本编程30分钟入门

牧云@^-^@ 提交于 2019-12-05 12:39:03
什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_tut for ((i=0; i<10; i++)); do touch test_$i.txt done 示例解释 第1行:指定脚本解释器,这里是用/bin/sh做解释器的 第2行:切换到当前用户的home目录 第3行:创建一个目录shell_tut 第4行:切换到shell_tut目录 第5行:循环条件,一共循环10次 第6行:创建一个test_1…10.txt文件 第7行:循环体结束 cd, mkdir, touch都是系统自带的程序,一般在/bin或者/usr/bin目录下。for, do, done是sh脚本语言的关键字。 shell和shell脚本的概念 shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Ken Thompson的sh是第一种Unix Shell,Windows Explorer是一个典型的图形界面Shell。 shell脚本(shell script),是一种为shell编写的脚本程序。业界所说的shell通常都是指shell脚本,但读者朋友要知道,shell和shell script是两个不同的概念。由于习惯的原因,简洁起见,本文出现的“shell编程”都是指shell脚本编程

Shell脚本

允我心安 提交于 2019-12-05 11:36:20
原文内容来自于LZ(楼主)的印象笔记,如出现排版异常或图片丢失等问题,可查看当前链接: https://app.yinxiang.com/shard/s17/nl/19391737/e1007d5a-4ec0-4ee7-98a0-e82989f0bffb mkdir touch newFile 或 vim newFile chmod 755 newFile rm -rf newFile sudo sh -c find / -name kb-core which bash bash特殊字符上 ; 可以在同一行上写两个或者两个以上的命令 ;; 双分号可以用于终止case选项 ' '单引号',直接认为变量只是一个字符,将会阻止STRING中所有特殊字符的解释 " "双引号",变量引用时,还是显示变量的值,将会阻止(解释)STRING中大部分特殊的字符 / 斜线/,表示路径符,/bin/bash,多个/或者//,////bin/////bash 表示的含义于单斜线含义相同, \ 反 斜线,表示转义符号,\n ,\',\", ` 反序号,反序号的命令会被优先执行;cp `mkdir back` test.sh back,表示先创建back文件夹再将test.sh拷贝到back目录下; : 冒号,一个什么都不做的命令,等价于shell中的true, while : do echo

shell 基本语法

喜夏-厌秋 提交于 2019-12-05 09:27:58
shell 基本语法 jenkins 上构建项目时,经常需要借助 shell 脚本,最近也经常跟服务器打交道,顺便记录些常用命令,方便查阅 语法-变量 # 定义变量 name='dasu' # 使用变量 echo $name # dasu echo "I am ${name}." # I am dasu. xxx='dasu' 用 key=value 形式定义变量, = 等号两边不能有空格 $xxx 或 ${xxx} 变量名前加个 $ 使用变量,大括号省略也可以 语法-字符串 # 字符串使用 name='dasu' name2="dasu" name3=dasu echo "$name $name2 $name3" # dasu dasu dasu # 字符串长度 echo ${#name} #4 # 注意,shell 里都是命令 'dasu' # dasu: command not found # 获取子字符串 echo ${name:0:2} # da # 寻找字符 echo `expr index $name s` # 3 下标从1开始 'dasu' "dasu" dasu 单引号 、 双引号 、甚至 不加引号 都会被作为字符串使用 单引号里的字符串不做任何处理工作,是什么就原样输出 双引号里如果有表达式、有转义符,有变量,会先进行处理,最后再输出,所以字符串的拼接

awd线下shell管理工具 权限维持+批量执行命令

◇◆丶佛笑我妖孽 提交于 2019-12-05 07:36:53
0x00:关于工具 啊啊啊 自从上次比赛因为用的shell管理框架不大行,导致30个shell全部丢掉,自己想着来写个shell管理框架。 虽然是个小项目,但是真的蛮好用的(hh 个人觉得)。代码也很强壮,不会意外退出、卡死等等,目前自己能想到的bug都做了异常处理。 附上链接: https://github.com/Tkitn/Reverse_shell_manage 0x01:README ##Tkitn_reverse_manage 278884553@qq.com ###介绍 awd线下shell管理与权限维持 批量执行命令,一键批量执行 交互式shell生成 异常处理,不会因为对方kill进程而意外退出,或命令输错导致程序卡死 ###How to use python3 python Tkitn_reverse_manage.py 0.0.0.0 9992 ###参数 h:列出帮助页面 a:批量命令执行所有shell l:查看已经上线的所有shell g:根据ip进入其shell通道 d:删除此shell节点 r:刷新已经上线的shell,连接失败的则删除掉 i:在当前的通道处生成交互式shell python -c 'import pty;pty.spawn("/bin/bash")' q:退出程序 0x03:关于代码 #encoding="utf-8" #