shell脚本笔记

合集下载

shell编程学习笔记(四):Shell中转义字符的输出

shell编程学习笔记(四):Shell中转义字符的输出

shell编程学习笔记(四):Shell中转义字符的输出
通过echo可以输出字符串,下⾯看⼀下怎么输出特殊转义字符,⾸先我先列出来echo的转义字符:
\\ 输⼊\
\a 输出警告⾳
\b 退格,即向左删除⼀个字符
\c 取消输出⾏末的换⾏符,和-n选项⼀致
\e Esc
\f 换页符
\n 换⾏
\r 回车
\t 制表,即Tab
\v 垂直制表符
\0nnn 按照⼋进制ASCII码表输出字符,其中0为数字零,nnn是三位⼋进制数
\xhh 按照⼗六进制ASCII码表输出字符,其中hh是两位⼗六进制数
以下蓝⾊字体部分为Linux命令,红⾊字体的内容为输出的内容:
# cd /opt/scripts
# vim script04.sh
开始编写script04.sh的脚本,脚本内容为:
#! /bin/sh
echo -e "hello world\nhello\n"
echo -e -n "hello\n"
echo -e "this is a new line.\n"
# chmod +x script04.sh
# ./script04.sh
hello world
hello
hello
this is a new line.
上⾯的代码⽐较简单,我主要说⼀下echo后⾯带的选项:
-e 必须添加-e选项,输出的内容才⽀持转义输出
-n 不输出⾏尾的换⾏符,默认每⼀个echo都会在最后添加⼀个换⾏符。

注意-n选项并不被所有Linux版本⽀持。

POSIX标准中并未包含此选项。

Shell脚本编写的十个高级技巧

Shell脚本编写的十个高级技巧

Shell脚本编写的十个高级技巧Shell脚本编写是系统管理和自动化任务中一个非常重要的技能。

掌握一些高级技巧可以帮助我们更高效地编写脚本,提高工作效率。

本文将介绍Shell脚本编写的十个高级技巧,帮助读者更好地理解和应用Shell脚本。

一、函数的使用函数是Shell脚本中将一系列命令组织起来以实现特定功能的有效方法。

通过函数,我们可以将脚本划分为更小的部分,使得代码更加清晰和易于维护。

同时,函数还可以接收参数,增加了脚本的灵活性。

以下是一个示例:```shell#!/bin/bashmy_function() {echo "Hello, $1!"}my_function "World"```二、条件判断和循环条件判断和循环是编写脚本时常用的结构。

在Shell脚本中,我们可以使用if-else语句进行条件判断,使用for和while循环进行迭代操作。

以下是一个示例:```shell#!/bin/bashif [ $1 -gt 10 ]; thenecho "Greater than 10"elseecho "Less than 10"fifor i in {1..5}; doecho "Number: $i"donecounter=0while [ $counter -lt 5 ]; doecho "Counter: $counter"((counter++))done```三、数组的使用Shell脚本中的数组可以用于存储一组相关的数据。

通过使用数组,我们可以更方便地进行数据操作和处理,减少重复代码的编写。

以下是一个示例:```shell#!/bin/bashmy_array=("Apple" "Banana" "Orange")for fruit in "${my_array[@]}"; doecho "Fruit: $fruit"doneecho "Total: ${#my_array[@]}"```四、文件操作Shell脚本可以进行各种文件操作,包括文件的创建、读取、写入和删除等。

Shell脚本编写的高级技巧使用命令行参数实现脚本参数化

Shell脚本编写的高级技巧使用命令行参数实现脚本参数化

Shell脚本编写的高级技巧使用命令行参数实现脚本参数化Shell脚本是一种在Unix和Linux系统中广泛使用的脚本编程语言。

通过使用Shell脚本,可以方便地进行系统管理和自动化任务。

在编写Shell脚本时,使用命令行参数能够使脚本更加灵活和可扩展。

本文将介绍Shell脚本编写的高级技巧,重点是如何使用命令行参数实现脚本参数化。

1. 什么是命令行参数命令行参数是在执行Shell脚本时,传递给脚本的参数。

通常,命令行参数以空格分隔,并且在脚本中可以通过特殊变量$1、$2、$3...来引用对应的参数值。

其中,$1表示第一个参数,$2表示第二个参数,以此类推。

2. 使用位置参数位置参数是指按照命令行参数的顺序来引用参数值。

例如,假设有一个脚本名为hello.sh,使用./hello.sh 参数1 参数2来执行脚本,那么在脚本中可以使用$1来引用参数1的值,使用$2来引用参数2的值。

示例代码:```#!/bin/bashecho "Hello, $1 and $2"```执行命令:./hello.sh Alice Bob输出结果:Hello, Alice and Bob3. 使用命令行选项除了位置参数外,还可以使用命令行选项来传递参数值。

命令行选项通常以短横线(-)或双短横线(--)开头,并且具有可选的参数值。

在脚本中,可以使用特殊变量$1、$2、$3...来引用命令行选项的参数值。

示例代码:```#!/bin/bashwhile getopts "u:p:" option; docase $option inu)username=$OPTARG;;p)password=$OPTARG;;\?)echo "Invalid option: -$OPTARG"exit 1;;esacdoneecho "Username: $username"echo "Password: $password"```执行命令:./login.sh -u Alice -p 123456输出结果:Username: Alice Password: 1234564. 使用命令行参数实现脚本参数化使用命令行参数可以使脚本更加灵活,可以根据不同的参数值执行不同的逻辑。

shell编程基础知识点

shell编程基础知识点

shell编程基础知识点
一、Shell 编程基础知识
1、什么是 Shell
Shell 是一种用户使用的解释型程序,它是操作系统的一部分,派生自多种不同的系统。

它是一种命令解释器,它可以读取用户的输入,解释该输入,并执行相应的命令。

Linux 的 Shell 有很多种,如 bash,csh,ksh 等。

2、Shell 的特性
(1) 交互式:用户可以通过 Shell 的界面实现与计算机的交互,以便用户和计算机之间的信息交换。

(2) 自动化:Shell 可以将用户编写的一系列命令,保存为脚本,并在需要的时候自动执行,以减少用户的工作量。

(3) 扩展性:Shell 可以实现过滤和管道功能,可以与其他应用程序和编程语言结合使用,实现不同应用程序、不同编程语言之间的信息传递。

3、Shell 命令
(1)ls : 列出目录内容。

(2)cd : 改变目录。

(3)pwd : 显示当前所在目录。

(4)mkdir : 创建目录。

(5)rm : 删除文件或目录。

(6)cat : 显示文件内容。

(7)echo : 向屏幕输出指定字符串。

(8)exit : 退出当前 shell 环境。

(9)man : 查看指定命令的帮助文档。

(10)chmod : 改变文件权限。

beaglebone_black_学习笔记——(4)闪烁LED之shell命令

beaglebone_black_学习笔记——(4)闪烁LED之shell命令

beaglebone_black_学习笔记——(4)闪烁LED之shell命令上⼀篇笔记在终端输⼊shell命令实现了LED灯的点亮与熄灭,作为初学者,已经兴奋了⼀阵,因为终于有了零的突破。

⼿动点亮LED总会⽐较⿇烦,还是得通过程序让它⾃⼰去点亮与熄灭,这样才更好玩。

这篇笔记⾥,笔者通过学习shell脚本,实现LED的闪烁,这样才好玩。

本篇笔记还是先从现象看起,然后在分析其实现原理。

第⼀步:实现LED灯闪烁1、先来个简单的shell脚本,了解⼀下shell脚本的使⽤流程。

下图为创建⼀个名为hello_sh的shell脚本编辑执⾏的过程。

⼏点说明:(1)shell脚本可以没有⽂件后缀名,但是为了⽅便,也可以添加.sh为其后缀。

上图中⽤_sh作为表⽰,也可以没有;(2)shell脚本创建可以利⽤touch filename的形式来创建;(3)编辑shell脚本可以直接使⽤vi编辑器,关于vi编辑器的简单实⽤请查看上⼀篇笔记;(4)shell脚本是不需要编译就可以运⾏,有shell解释器完成命令的解读与执⾏;(5)新建的shell脚本需要为其添加可执⾏权限,否则执⾏时会出错;(6)运⾏shell脚本直接使⽤ ./* 就可以运⾏;(7)上图中hello_sh脚本⽂件⾥只有⼀⾏内容,⽬的是输出hello字符,脚本内容如下图。

2、下⾯就进⼊今天的主题,⾸先还是要⼿动创建shell脚本⽂件,笔者的⽂件名为led_sh。

创建和添加权限的过程就不在此贴了,请参考上⽂。

下⾯直接贴出led_sh的内容。

⼏点说明:(2)简答解释⼀下脚本内容:1)第1⾏:在终端显⽰hello led⼀串字符;2)第2~4⾏:这部分是⼀个if语句,⽬的是查看是否有gpio44⽂件,如果没有,通过第3⾏脚本添加⼀个;3)第4⾏:为gpio44添加输出属性;4)第7~13⾏:这部分是⼀个while语句,在while语句⾥⾯先点亮LED,然后睡眠0.25秒再熄灭LED,再睡眠0.25秒。

shell的基础语法

shell的基础语法

shell的基础语法Shell是一种命令行解释器,它允许用户与操作系统进行交互并执行各种操作。

Shell的基础语法包括以下几个方面:1. 命令执行,在Shell中,用户可以直接输入命令来执行各种操作,例如`ls`命令用于列出当前目录下的文件和文件夹,`mkdir`命令用于创建新的目录等。

2. 变量,在Shell中,可以使用变量来存储数据并在需要的时候进行引用。

变量的赋值和引用使用类似于`variable_name=value`和`$variable_name`的语法。

3. 控制结构,Shell支持基本的控制结构,如条件判断和循环。

条件判断使用`if-then-else-fi`语法,而循环则可以使用`for`、`while`等关键字来实现。

4. 函数,Shell中可以定义和调用函数,使用`function_name() { ... }`的语法来定义函数,使用`function_name`来调用函数。

5. 管道和重定向,Shell支持管道和重定向操作,允许用户将一个命令的输出作为另一个命令的输入,或者将命令的输入/输出重定向到文件或其他设备。

6. 通配符,Shell支持通配符来匹配文件名,例如``用于匹配任意字符,`?`用于匹配单个字符等。

7. 注释,在Shell脚本中,可以使用`#`符号来添加注释,注释部分将被解释器忽略。

总的来说,Shell的基础语法包括了命令执行、变量、控制结构、函数、管道和重定向、通配符以及注释等内容。

掌握这些基础语法对于编写Shell脚本和在命令行下进行操作都是非常重要的。

希望这些信息能够帮助你更好地理解Shell的基础语法。

Shell脚本中的日志记录和日志分析技巧

Shell脚本中的日志记录和日志分析技巧

Shell脚本中的日志记录和日志分析技巧在Shell脚本编程中,日志记录和日志分析是非常重要的一部分。

通过记录和分析日志,可以方便开发人员进行错误排查、性能优化和系统监控。

本文将介绍一些Shell脚本中常用的日志记录和分析技巧。

一、日志记录在Shell脚本中,可以使用echo命令将输出信息打印到屏幕上。

然而,如果需要将重要的输出信息记录到日志文件中,可以通过重定向将echo的输出写入到文件中。

1.创建日志文件在Shell脚本中,可以使用touch命令创建一个新的日志文件。

例如:```#!/bin/bashLOG_FILE="/var/log/my_script.log"touch $LOG_FILE```2.记录日志在Shell脚本中,可以使用重定向符号(>>)将输出信息追加到日志文件中。

例如:```#!/bin/bashLOG_FILE="/var/log/my_script.log"echo "Start script" >> $LOG_FILEecho "Doing something..." >> $LOG_FILEecho "Script completed" >> $LOG_FILE```以上代码会将"Start script"、"Doing something..."和"Script completed"这三行文本追加到日志文件中。

二、日志分析日志分析是指对日志文件中的内容进行统计和分析,以便获取有用的信息。

下面介绍两种常见的日志分析技巧:关键字搜索和日志分析工具的使用。

1.关键字搜索在Shell脚本中,可以使用grep命令对日志文件进行关键字搜索。

grep命令可以根据指定的关键字过滤出包含该关键字的行。

Shell脚本编写的小技巧如何处理日志和错误记录

Shell脚本编写的小技巧如何处理日志和错误记录

Shell脚本编写的小技巧如何处理日志和错误记录Shell脚本在日常运维工作中起着非常重要的作用,它可以自动化完成许多重复繁琐的任务。

然而,在编写Shell脚本时,处理日志和错误记录是非常重要的一部分。

本文将介绍一些Shell脚本编写的小技巧,以便更好地处理日志和错误记录。

1. 使用日志记录器在Shell脚本中,使用日志记录器可以更方便地管理日志信息。

通过将日志记录到文件中,我们可以随时查看并检查日志信息。

下面是一个简单的示例:```shell#!/bin/bashLOG_FILE="/var/log/myscript.log"logger() {local message="$@"echo "$(date +'%Y-%m-%d %H:%M:%S') $message" >>$LOG_FILE}# 根据需要输出日志信息logger "Starting script."# 执行任务...logger "Script completed."```在上面的例子中,我们定义了一个名为`logger`的函数,它接受一个参数作为日志信息并将其附加到日志文件中。

通过使用`logger`函数,我们可以在脚本的不同位置方便地记录日志信息。

2. 处理脚本错误当脚本发生错误时,我们需要能够识别和处理这些错误。

下面是一个示例,演示了如何处理脚本中的错误:```shell#!/bin/bashLOG_FILE="/var/log/myscript.log"logger() {local message="$@"echo "$(date +'%Y-%m-%d %H:%M:%S') $message" >>$LOG_FILE}# 检查命令是否执行成功,如果失败则记录错误信息并退出脚本check_command() {local command_result="$1"local error_message="$2"if [ $? -ne 0 ]; thenlogger "Error: $error_message"exit 1fi}# 执行任务...some_commandcheck_command "$?" "Failed to execute some_command."another_commandcheck_command "$?" "Failed to execute another_command."# 脚本完成logger "Script completed."```在上面的示例中,我们定义了一个名为`check_command`的函数,该函数接受两个参数:命令的返回值和错误信息。

学习笔记_cshell

学习笔记_cshell

1.基本命令2.表达式表达式可由常量、变量和以下运算符组成,其中部分是涉及文件而不是数值表达式遵守以下规则:1)shell将丢失参数或零参数看作是0;2)所有的结果都是十进制数;3)除了!=和==外,运算符的参数都是数字;4)用户必须将表达式的每个元素与比邻的元素用空格分开,除非相邻元素是&、/、<、>等。

3.shel变量格式序列结果%U 命令运行用户代码所消耗的时间,单位是C P U秒(用户模式)%S 命令运行系统代码所消耗的时间,单位是C P U秒(核心模式)%E 命令所消耗的Wa l l时钟时间(整个时间)%P 任务周期内C P U所耗费的时间百分比,按照( % U + % S ) / % E计算%W 命令进程交换到磁盘的次数%X 命令使用的平均共享代码内存量,单位是千字节%D 命令使用的数据代码内存量,单位是千字节%K 命令使用整个内存内存量,就是% X + % D,单位是千字节%M 命令使用的最大内存量,单位是千字节%F 主页错误数(不得不脱离磁盘读取的内存页)%I 输入操作数%O 输出操作数作为开头的shell变量4.控制结构if(expression) simple-command只对简单命令起作用,对管道或命令列表无效。

可以用if….then控制结构来执行更复杂的命令除逻辑表达式外,用户可以用表达式来返回基于文件状态的值如下:如果指定的文件不存在或不可访问,csh将表达式的值算作0。

否则如果测试结果是true,则表达式的值为1;如果为false,则表达式的值为0。

goto labelgoto命令将控制传送给开始于label的表达式。

onintr label中断处理当用户在脚本执行过程中按下中断键,shell将把控制传递给以label:开始的语句。

该语句可以让用户在其被中断时正常终止脚本。

if…then…else形式1if(expression) thencommandsendif形式2if(expression) thencommandselsecommandsendif形式3if(expresstion) thencommandselse if(expresstion) thencommands...elsecommandsendifforeachforeach loop-index(argument-list)commandsendwhilewhile(expresstion)commandsendbreak/continue可以用break中断foreach或while,这些语句在传递控制前执行命令行中剩下的命令。

sh 文件语法

sh 文件语法

sh文件(Shell脚本)的语法
包括以下部分
1.注释:在sh文件中,以#开头的句子表示注释,直到这一行的结束。


释对于理解脚本的工作原理非常有帮助,即使长时间没有使用脚本,也可以通过注释快速了解其作用及工作原理。

2.变量:在sh文件中,变量可以用来存储数据,如文本字符串、数字或命
令的输出结果等。

变量名通常以字母或下划线开头,后面可以是字母、数字或下
划线。

使用变量时,需要用$符号引用变量的值。

3.条件测试:sh文件中的条件测试使用test命令,通过特定的表达式或命
令来评估条件是否成立。

例如,可以使用-f表达式来测试文件是否存在,或使用-x表达式来测试命令是否存在且具有可执行权限。

4.循环:sh文件中的循环可以使用for或while语句来实现。

for语句用
于遍历一组值,而while语句则用于重复执行一组命令,直到条件不再成立。

5.函数:sh文件中的函数可以定义一组可重用的代码块,通过函数名来调
用。

函数定义需要使用function关键字,并指定函数的参数和返回值。

6.控制结构:sh文件中可以使用if-else结构来实现条件分支,使用case
语句来实现多分支选择,以及使用break和continue语句来控制循环的流程。

7.输入输出:sh文件中的输入输出可以使用echo命令来输出文本信息,
使用read命令来从标准输入读取用户的输入,以及重定向符号(>、>>)来实
现输出重定向。

这些是sh文件的一些基本语法元素,可以帮助您编写和执行Shell脚本。

shell脚本基础(又长又详细)

shell脚本基础(又长又详细)

shell脚本基础(⼜长⼜详细)第⼗⼀章 BASH脚本(⼀)常见的Shell变量的类型包括环境变量、预定义变量、位置变量、⽤户⾃定义变量。

本节将分别学习这四种Shell变量的使⽤。

11. 1、 Shell的环境变量通过set命令可以查看系统中所有Shell变量(包括环境变量和⽤户⾃定义变量),由于内容输出较多,建议使⽤less命令分页查看。

常⽤环境变量:PATH 决定了shell将到哪些⽬录中寻找命令或程序HOME 当前⽤户主⽬录HISTSIZE 历史记录数LOGNAME 当前⽤户的登录名USER 当前⽤户名UID 当前⽤名的UIDHOSTNAME 指主机的名称SHELL 前⽤户Shell类型LANGUGE 语⾔相关的环境变量,多语⾔可以修改此环境变量MAIL 当前⽤户的邮件存放⽬录PS1 基本提⽰符,对于root⽤户是#,对于普通⽤户是$PS2 附属提⽰符,默认是“>”例:以分号分隔,显⽰当前的⽤户的⽤户名、宿主⽬录、登录Shell。

例:查看当前命令的搜索路径,并将/opt/bin⽬录添加到现有搜索路径中去,从⽽可以直接执⾏此⽬录中的命令。

环境变量的配置⽂件⽤户可在当前的Shell环境中直接为环境变量赋值,但需要长期变更所使⽤的某个环境变量时,可以修改配置⽂件。

在Linux系统中,⽤户环境变量的设置⼯作习惯上在 /etc/profile ⽂件及宿主⽬录中 .bash_profile⽂件中进⾏,前者称为全局配置⽂件(对所有⽤户起作⽤),后者称为⽤户配置⽂件(允许覆盖全局配置)。

例:在当前⽤户环境中,将⽤于限制历史命令的环境变量HISTSIZE的值改为100。

例:编辑“~/.bash_profile”⽂件,修改PATH的设置,以便⽤户在下次登录后能够使⽤服务/opt/bin ⽬录作为默认的搜索路径。

# vi /root/.bash_profielPATH=$PATH:$HOME/bin:/opt/binExport PATH11.2 Shell位置变量为了在使⽤Linux程序时,⽅便通过命令⾏给程序提供操作参数,Bash引⼊了位置变量的概念。

shell编程实验总结

shell编程实验总结

shell编程实验总结Shell编程实验总结Shell编程是一种在Linux系统中常用的脚本语言,它可以通过编写一些简单的脚本来完成一些复杂的任务。

在学习Shell编程的过程中,我通过实验掌握了一些基本的语法和技巧,现在将它们按照类别进行总结。

一、变量在Shell编程中,变量是非常重要的概念。

我们可以通过定义变量来存储一些数据,然后在程序中使用这些数据。

定义变量的语法如下:```variable_name=value```其中,`variable_name`是变量名,`value`是变量的值。

在使用变量时,需要在变量名前加上`$`符号。

例如:```name="Tom"echo "My name is $name"```这段代码会输出"My name is Tom"。

二、条件语句条件语句是Shell编程中常用的语句之一。

它可以根据条件的真假来执行不同的代码块。

条件语句的语法如下:```if conditionthencommand1command2...elsecommand3command4...fi```其中,`condition`是一个条件表达式,如果它的值为真,则执行`then`后面的代码块;否则执行`else`后面的代码块。

例如:```if [ $name = "Tom" ]thenecho "Hello, Tom!"elseecho "Who are you?"fi```这段代码会根据变量`name`的值输出不同的问候语。

三、循环语句循环语句是Shell编程中另一个常用的语句。

它可以重复执行一段代码块,直到满足某个条件为止。

Shell编程中有两种循环语句:`for`循环和`while`循环。

`for`循环的语法如下:```for variable in listdocommand1command2...done```其中,`variable`是一个变量名,`list`是一个列表,`command1`、`command2`等是要执行的命令。

《Linux命令行与shell脚本编程大全 第4版 》读书笔记PPT模板思维导图下载

《Linux命令行与shell脚本编程大全 第4版 》读书笔记PPT模板思维导图下载
06 第 四 部 分 创建和管 理实用的脚本
目录
07 附 录 A b a s h 命令快 速指南
09 看完 了
08 附 录 B s e d 和g a w k 快速指南
内容摘要
这是一本关于Linux命令行与shell脚本编程的系统性教程,主要包括四大部分 :Linux命令行、shell脚本 编程基础、高级shell脚本编程,以及创建和管理实用的脚本。本书这一版针对Linux系统的新特性进行了更新, 不仅涵盖了详尽的动手教程和现实世界中的实用信息,还提供了与所学内容相关的参考信息和背景资料。通过本 书的学习,你能轻松写出自己的shell脚本。 本书适合Linux系统管理员及相关开发人员阅读。
01
1 1 .1 使 用多个 命令
03
1 1 .3 显 示消息
04
1 1 .4 使 用变量
05
1 1 .5 重 定向输 入和输出
06
1 1 .6 管 道
第11章 构建基础脚 本
1 1 .7 执行数学运 算
1 1 .8 退出脚本
1 1 .9 实战演练 1 1 .1 0 小结
第12章 结构化命

02
04
9 .4 使用 容器管理 软件
06
9 .6 小结
05
9 .5 从源 代码安装
第10章 文本编辑

02
10.2 nano 编 辑器
01
10.1 v i m 编辑 器
03
10.3 Emacs 编 辑器
04
10.4 K D E 系编 辑器
05
10.5 GNOME 编辑 器
06
1 0 .6 小 结
第二部分 shell脚本编程基础

Shell脚本中函数的定义和调用笔记

Shell脚本中函数的定义和调用笔记
本文版权归作者和博客园共有欢迎转载但未经作者同意必须保留此段声明且在文章页面明显位置给出原文连接否则保留追究法律责任的权利
Shell脚 本 中 函 数 ห้องสมุดไป่ตู้ 定 义 和 调 用 笔 记
Shell脚本函数的作用主要是把一些可以通用的功能封装起来、避免脚本中出现大量重复的脚本代码,同时可以大大增强脚本的可读性、和 可维护性。 Shell函数定义的语法格式: function FUNCTION_NAME() { command1 command2 command3 } 也可以省略function 关键字 FUNCTION_NAME() { command1 command2 command3 } 说明: 1、function 为定义函数的关键字 2、FUNCTION_NAME 为函数的名称 3、函数体内由多条脚本语句组成,但不允许有空语句 函数使用示例:cat Test.sh #!/bin/bash function Test() { echo "你好,朋友。我是第一个函数定义" } echo "Call function Test" Test 执行命令:bash test.sh 输出结果:你好,朋友。我是第一个函数定义

MongoDB的mongoshell常用操作方法及操作脚本笔记

MongoDB的mongoshell常用操作方法及操作脚本笔记

MongoDB的mongoshell常⽤操作⽅法及操作脚本笔记⼀、常⽤命令1、Help查看命令提⽰helpdb.help();db.yourColl.help();db.youColl.find().help();rs.help();2、切换/创建数据库use yourDB; 当创建⼀个集合(table)的时候会⾃动创建当前数据库3、查询所有数据库show dbs;4、删除当前使⽤数据库db.dropDatabase();5、从指定主机上克隆数据库db.cloneDatabase(“127.0.0.1”);将指定机器上的数据库的数据克隆到当前数据库6、从指定的机器上复制指定数据库数据到某个数据库db.copyDatabase("mydb", "temp", "127.0.0.1");将本机的mydb的数据复制到temp数据库中7、修复当前数据库db.repairDatabase();8、查看当前使⽤的数据库db.getName();db; db和getName⽅法是⼀样的效果,都可以查询当前使⽤的数据库9、显⽰当前db状态db.stats();10、当前db版本db.version();11、查看当前db的链接机器地址db.getMongo();⼆、Collection(table)聚集集合1、创建⼀个聚集集合(table)db.createCollection(“collName”, {size: 20, capped: 5, max: 100});//创建成功会显⽰{“ok”:1}2、得到指定名称的聚集集合(table)db.getCollection("account");3、得到当前db的所有聚集集合db.getCollectionNames();4、显⽰当前db所有聚集索引的状态db.printCollectionStats();三、⽤户相关1、添加⼀个⽤户db.addUser("name");db.addUser("userName", "pwd123", true);添加⽤户、设置密码、是否只读2、显⽰当前所有⽤户show users;3、删除⽤户db.removeUser("userName");以上都是⼀些最基本的命令,我就当做笔记来看了。

Shell 脚本基础学习笔记

Shell 脚本基础学习笔记

Shell 脚本基础学习笔记shell脚本的解释用“#”号,本文档为了习惯方便,解释大都用“//”,也有用“#”的SHELL 最基本的语法基本元字符集及其含义(2008-05-24)abc 表示abc 三個連續的字符, 但彼此獨立而非集合. (可簡單視為三個char set)(abc) 表示abc 這三個連續字符的集合. (可簡單視為一個char set)a|b 表示單一字符, 或a 或b .(abc|xyz) 表示或abc 或xyz 這兩個char. set 之一. (註二)[abc] 表示單一字符, 可為a 或b 或c . (與wildcard 之[abc] 原理相同)[^abc] 表示單一字符, 不為a 或b 或c 即可. (與wildcard 之[!abc] 原理相同)^ 只匹配行首$ 只匹配行尾* 只一个单字符后紧跟*,匹配0个或多个此单字符[ ] 只匹配[ ]内字符。

可以是一个单字符,也可以是字符序列。

可以使用-表示[ ]内字符序列范围,如用[ 1 - 5 ]代替[ 1 2 3 4 5 ]\ 只用来屏蔽一个元字符的特殊含义。

因为有时在s h e l l中一些元字符有特殊含义。

\可以使其失去应有意义. 只匹配任意单字符p a t t e r n \ { n \ } 只用来匹配前面p a t t e r n出现次数。

n为次数p a t t e r n \ { n,\ }含义同上,但次数最少为np a t t e r n \ { n,m \ }含义同上,但p a t t e r n出现次数在n与m之间现在详细讲解其中特殊含义1、使用句点匹配单字符例一:beg.n:以beg开头,中间夹一个任意字符。

例二:. . . .X C. . . .:共10个字符,前四个之后为XC例三:列出所有用户都有写权限的目录或文件:ls -l |grep ...x..x..x2、行首以^匹配字符串或字符序列^只允许在一行的开始匹配字符或单词。

shell 笔记

shell 笔记
$IFS 内部域分隔符,默认为空白(空格、tab、新行)
$LINENO 记录它所在脚本中它所在行和行号,一般用于调度
$MACHTYPE 显示系统类型,系统架构
$OLDPWD 老的工作目录
$OPTYPE 操作系统类型
$PATH 指向Bash外部命令所在位置,系统在它指向的目录下搜索命令
Ctrl+a 移到命令行首
Ctrl+e 移到命令行尾
Ctrl+u 删除到行首的命令
Ctrl+k 删除到行尾的命令
Ctrl+a后再Ctrl+k 或者Ctrl+e后再Ctrl+u就是删除输入的全部命令
Ctrl+->/<- 向左/右移动一个单词(远程ssh终端不可用)
Ctrl+c 终止当前任务
$DIRSTACK 、$PWD 结果 等于dirs命令结果
$EDITOR 脚本调用的默认编辑器
$EUID "effective"用户ID号
$FUNCNAME 当前函数名字
$GROUPS 当前用户属于的组
$UID 用户ID号
$HOME 用户home目录
$HOSTNAME 系统主机名
shell脚本可移植性好,在unix/linux系统中可灵活移植,几乎不用任何设置就能正常运行
shell脚本可轻松方便读取和修改源代码,不需要编译
掌握shell可以帮你解决一些故障问题,比如脚本引起的故障问题
掌握shell是一个中级以上系统工程师必需要会的
掌握shell是你系统管理进阶的必经之路
选项:
-a 将后面的变量定义成为数组 (array)

Linuxshell脚本输出日志笔记整理(必看篇)

Linuxshell脚本输出日志笔记整理(必看篇)

Linuxshell脚本输出⽇志笔记整理(必看篇)1、⽇志⽅法简介:#⽇志名称log="./upgrade.log" #操作⽇志存放路径fsize=2000000 #如果⽇志⼤⼩超过上限,则保存旧⽇志,重新⽣成⽇志⽂件exec 2>>$log #如果执⾏过程中有错误信息均输出到⽇志⽂件中#⽇志函数#参数#参数⼀,级别,INFO ,WARN,ERROR#参数⼆,内容#返回值function zc_log(){#判断格式if [ 2 -gt $# ]thenecho "parameter not right in zc_log function" ;return ;fiif [ -e "$log" ]thentouch $logfi#当前时间local curtime;curtime=`date +"%Y%m%d%H%M%S"`#判断⽂件⼤⼩local cursize ;cursize=`cat $log | wc -c` ;if [ $fsize -lt $cursize ]thenmv $log $curtime".out"touch $log ;fi#写⼊⽂件echo "$curtime $*" >> $log;}2、使⽤举例shell脚本内容:#! /bin/bash#数据库变量localpasswd=xxxxmysqlhost=xxxxmysqluser=xxxxmysqlpasswd=xxxx#⽇志名称log="./upgrade.log" #操作⽇志存放路径fsize=2000000exec 2>>$log #如果执⾏过程中有错误信息均输出到⽇志⽂件中#⽇志函数#参数#参数⼀,级别,INFO ,WARN,ERROR#参数⼆,内容#返回值function zc_log(){#判断格式if [ 2 -gt $# ]thenecho "parameter not right in zc_log function" ;return ;fiif [ -e "$log" ]thentouch $logfi#当前时间local curtime;curtime=`date +"%Y%m%d%H%M%S"`#判断⽂件⼤⼩local cursize ;cursize=`cat $log | wc -c` ;if [ $fsize -lt $cursize ]thenmv $log $curtime".out"touch $log ;fi#写⼊⽂件echo "$curtime $*" >> $log;}echo "start update shell" ;mysql -h$sqlip -u$sqluser -p$sqlpasswd -e "use $db;set names gbk;---- 表的结构 msgm_qdjyly--DROP TABLE IF EXISTS msgm_qdjyly;CREATE TABLE IF NOT EXISTS msgm_qdjyly (jylyid int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',jylb varchar(20) DEFAULT NULL COMMENT '交易类别',jylbmc varchar(50) DEFAULT NULL COMMENT '交易类别名称',jgm varchar(10) NOT NULL COMMENT '机构码',lyfs int(11) NOT NULL COMMENT '路由⽅式,1指定渠道,2按卡bin渠道',qdbh varchar(20) DEFAULT NULL COMMENT '渠道编号',qdmc varchar(50) DEFAULT NULL COMMENT '渠道名称',zt int(11) NOT NULL DEFAULT '1' COMMENT '状态,1正常,2关闭',bz varchar(100) DEFAULT NULL COMMENT '备注',PRIMARY KEY (jylyid)) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT='交易路由信息' AUTO_INCREMENT=7 ;zc_log INFO "执⾏ CREATE TABLE msgm_qdjyly 命令的结果为: $? " ;echo "执⾏ CREATE TABLE msgm_qdjyly 命令的结果为: $? " ;以上这篇Linux shell脚本输出⽇志笔记整理(必看篇)就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

Shell学习笔记之shell脚本和python脚本实现批量pingIP测试

Shell学习笔记之shell脚本和python脚本实现批量pingIP测试

Shell学习笔记之shell脚本和python脚本实现批量pingIP测试0x00 将IP列表放到txt⽂件内先建⼀个存放ip列表的txt⽂件:[root@yysslopenvpn01 ~]# cat hostip.txt192.168.130.1192.168.130.2192.168.130.3192.168.130.4192.168.130.5192.168.130.6192.168.130.7192.168.130.8192.168.130.9192.168.130.10192.168.130.11192.168.130.12192.168.130.13192.168.130.14192.168.130.15192.168.130.16192.168.130.17192.168.130.18192.168.130.19192.168.130.200x01 使⽤Shell脚本实现创建shell 脚本:[root@yysslopenvpn01 ~]# vim shell_ping.sh#!/bin/shfor i in `cat hostip.txt`doping -c 4 $i|grep -q 'ttl=' && echo "$i ok" || echo "$i failed"doneexit()注意:请不要直接粘贴复制,如果使⽤以上shell请在linux主机的vim中⾃⼰⼿动编写,不然会出现换⾏符报错!# syntax error near unexpected token `do!添加脚本权限[root@yysslopenvpn01 ~]# chmod +x shell_ping.sh执⾏:[root@yysslopenvpn01 ~]# sh shell_ping.sh192.168.130.1 ok192.168.130.2 failed192.168.130.3 failed192.168.130.4 failed192.168.130.5 failed192.168.130.6 failed192.168.130.7 failed192.168.130.8 failed192.168.130.9 failed192.168.130.10 failed192.168.130.11 failed192.168.130.12 failed192.168.130.13 failed192.168.130.14 failed192.168.130.15 failed192.168.130.16 failed192.168.130.17 failed192.168.130.18 ok192.168.130.19 ok192.168.130.20 ok0x02 使⽤Python脚本实现创建python脚本:[root@yysslopenvpn01 ~]# vim ping.py#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:xieshengsen# 实现批量ping IP测试import reimport subprocessdef check_alive(ip,count=4,timeout=1):cmd = 'ping -c %d -w %d %s'%(count,timeout,ip) p = subprocess.Popen(cmd,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)result=p.stdout.read()regex=re.findall('100% packet loss',result)if len(regex)==0:print"\033[32m%s UP\033[0m" %(ip)else:print"\033[31m%s DOWN\033[0m" %(ip)if__name__ == "__main__":with file('hostip.txt','r') as f:for line in f.readlines():ip = line.strip()check_alive(ip)执⾏结果:[root@yysslopenvpn01 ~]# python ping.py 192.168.130.1 UP192.168.130.2 DOWN192.168.130.3 DOWN192.168.130.4 DOWN192.168.130.5 DOWN192.168.130.6 DOWN192.168.130.7 DOWN192.168.130.8 DOWN192.168.130.9 DOWN192.168.130.10 DOWN192.168.130.11 DOWN192.168.130.12 DOWN192.168.130.13 DOWN192.168.130.14 DOWN192.168.130.15 DOWN192.168.130.16 DOWN192.168.130.17 DOWN192.168.130.18 UP192.168.130.19 UP192.168.130.20 UP。

Linux新手生存笔记[10]——shell脚本基础3-函数及常用命令

Linux新手生存笔记[10]——shell脚本基础3-函数及常用命令

keep learning!分类: 03-Linux入门笔记 2012-05-05 11:40 100人阅读 评论(0) 收藏举报回到全局目录-----------------------------------------------目录函数定义 1退出状态 1参数传递 2标准IO 2脚本调试 2AND&OR 3内置命令补充 3函数定义函数定义:在Shell 中,函数就是一组命令集或语句形成一个可用块函数增强了shell的可编程能力组成function_name(){statements}<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 函数名(在一个脚本中必须唯一)函数体(命令集合)注意shell中不存在向前声明(先定义后使用)必须在调用一个函数之前对它进行定义函数可以定义自己内部使用的变量:local像使用命令一样调用函数egfunction copyfile(){local srcfile=$1local dstfile=$2cp $srcfile $dstfilereturn 0 # always return success}copyfile /tmp/myconf /etc/sysconf调用function_name params可以通过return命令让函数返回数字值,或者echo一个字符串返回参数传递参数传递:参数使用与位置参数一样$1, $2, ……$@, $*$#func $var1 $var2注:变量中间用空格、Tab分割返回值return:主要用来返回退出状态,即$?0 <= 返回值(整数) <= 255;0 为无错误;非0 为有错误;注:如果返回其他数据,可以使用echo或者全局变量return_var=`func $var1 $var2`退出状态退出状态(exit status):函数返回一个被称为退出状态的值. 退出状态可以由return 来指定statement, 否则函数的退出状态是函数最后一个执行命令的退出状态(0 表示成功,非0 表示出错代码).可以在脚本中由$? 引用退出值为 0 表示成功退出值非 0 表示失败当一个命令因为严重的信号 N 退出时,bash 将使用 128+N 作为它的退出状态出现一个信号 128及以上严重的信号 N 退出命令没找到: 127文件找到但不可执行: 126展开或重定向中的错误:脚本程序可使用的错误代码 1-125所有的内建命令在用法错误时返回 2成功 0内置命令补充内置命令补充::命令冒号(:)是一个空命令,偶尔用于简化条件逻辑,相当于true的一个别名。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Shell脚本的应用
一SHELL的种类
图形的SHELL:EXPLORER.EXE (Windows) GNOME KDE (Linux)
命令的SHELL:cmd.exe powershell.exe (Windows) bash nologin (Linux)
二查看SHELL
1、查看系统所支持的SHELL:cat /etc/shells
2、查看当前默认支持的SHELL: echo $SHELL
3、切换SHELL:直接输入SHELL解释器的名称,退出时EXIT返回原SHELL
三编写脚本
1、脚本的结构:脚本声明、注释信息、执行的命令
2、执行脚本:
a、需要执行权限,方法:./脚本名
b、不需要执行权限,方法:SHELL解释器 /脚本名
c、不需要执行权限,方法: source或. /脚本名
四重定向
1、种类:标准输入(0)、标准输出(1)、标准错误输出(2)
2、重定向的符号:> 重定向>> 追加重定向
3、应用:1>1.txt 表示将标准输出的内容输出到1.txt中
2>2.txt 表示将标准错误输出的内容输出到2.txt中
&>3.txt 表示将标准输出和标准错误输出都输出到3.txt中
echo "" | passwd --stdin zhangsan 通过脚本给zhangsan添加密码
五变量
1、种类:
自定义变量、环境变量、位置变量、预定义变量
2、应用:
a、自定义变量:
给变量赋值方法:1:变量名=变量值
引用变量: echo $变量名
注意事项:{}用来区别变量名和普通的字符串给变量赋值方法2:read -p "提示信息":变量名(优势:变量的值由用户自己指定,灵活)
引号的应用:
共同点:可以在变量值中出现空格。

不同点:双引号:内容可引用其他变量
单引号:内容不可引用其他变量
反撇号:将内容当做命令处理
全局变量:让变量在当前系统中所有SHELL下都能够生效。

export 变量名=变量值或者 export 变量名(不带$符号)
整数变量:
expr 变量一运算符号变量二
运算符号:+ - \* / %
环境变量:
配置文件:/etc/profile 全局配置文件~/bash_profile 用户配置文件
位置变量:
$0-$9 0代表命令或程序 1-9代表位置参数
预定义变量:
$# 位置参数的个数
$* 显示全部位置参数
$? 查看上一条命令是否执行成功
3、计划任务:
crontab -e
格式:分时日月周执行的命令(完整路径)
时间格式:有规律的时间间隔:*/3
无规律的时间间隔:1,3,5
连续的时间间隔:1-5
设置完成后,检查服务是否开启
service crond restart
chkconfig crond on
if循环语句
命令:test
格式:test 条件
[ 条件] 两端皆有空格
测试:echo $?
返回0,代表上一条命令执行成功;返回非0,代表上一条命令执行不成功。

实验1:测试家目录下是否存在1.txt的文件
实验2:创建一个文件,文件名由用户定义,然后检测其是否有执行权限,有则输出YES,没有输出NO
文件测试:
-f 是否为文件-d 是否为目录-e 目录或文件是否存在-r/w/x 是否有读/写/执行权限
整数测试:
-eq 等于 -ne 不等于-gt 大于-ge 大于等于 -lt 小于-le 小于等于
字符串测试:
= 等于!= 不等于-z 空
-a 而且相当于&& “与”
-o 否则相当于|| “或”
! 代表反向选取,“否”
if 的语法结构
单分支:if 条件测试 then 命令序列fi
双分支:if 条件测试then 命令序列(条件测试成功)else 命令序列(条件测试不成功)fi
多分支:if 条件测试1 then 命令序列(条件测试成功)elif 条件测试2 then 命令序列(条件测试成功)else 命令序列(条件测试不成功)fi
For while case循环
For
制定一个变量以及可能的取值列表,针对每一个不同的取值重复执行相同的命令序列,直到变量值用完退出
For 变量名in 取值列表
Do 命令序列
Done
find用法:
find -name 查找文件名
-size 查找文件大小
-type 查找文件类型
-user 查找文件属主
-exec 命令{} \; 对find的查找结果进行筛选
while
For循环语句适用于列表对象无规律,且列表来源已固定的场合;
而对于按特定条件重复执行的操作,更适合使用while while 条件测试
do
命令序列
done
条件测试操作:true false
使用true作为条件时,循环将会无限执行下去,除非强制终止脚本(exit)
使用false作为条件时,循环将不会执行
case
每行模式(或条件)都以)结尾
每个命令区域结束都以一对;;结尾
默认搜索条件为*)
最后以esac结尾。

相关文档
最新文档