shell 学习笔记
- 格式:ppt
- 大小:157.00 KB
- 文档页数:27
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标准中并未包含此选项。
《LINUX与UNIX SHELL编程指南》读书笔记二次发布版张启峰Email: zqf620@一些废话这是笔者第一本发到网络上的 Linux 读书笔记,利用今年十一长假,重新编辑排版了一下,再次发到网上,姑且称为“二次发布版”吧!关于《LINUX与UNIX SHELL编程指南》这本书,我看的是 的电子版,在很多网站都可以下载到。
虽然看电子书很累人,但我还是建议不想掏钱买书的朋友看看(有钱也不一定买的到,反正我逛书店时就没有看到过有卖这本书的),它不愧为一本经典的讲解shell编程的书。
当初,写这本笔记时,花了很大的力气。
参考了不少资料,在我认为书中某些讲的不详细的地方,在笔记中也记述的很详细。
读者可以发现,这本笔记并不是简单的摘抄。
当然,记笔记的过程也是对我的一个提高,比如,awk和脚本编程中可以遇到的getopts,这两个东东我一直就没搞清楚,记笔记的过程中我就把它们搞清白了(我个人认为关键是要静下心来学)。
希望这本笔记能对读者您有所帮助!在笔记中给出了很多举例,这些例子都在 Red Hat Linux 9 和 Red Flag Advanced Server 4.1 中测试通过,大多数例子还给出了注释(使用C风格的双斜线”//”注释符号)。
好了,不再废话了。
最后,给您推荐两本书,都是美国佬写的。
一本是机械工业出版社出版的O'Reilly的《学习Bash(第二版)》,一本是人民邮电出版社出版的Sams的《精通Shell编程(第二版)》。
张启峰(zqf620@)2005年10月4日第1章 文件安全与权限1. 一个文件一经创建,就具有三种基本访问方式:1) 读(r): 可以显示该文件的内容。
2) 写(w): 可以编辑或删除它。
3) 执行(x): 如果该文件是一个shell脚本或程序的话。
2. 按照所针对的用户,文件的权限可分为三类:1) 文件属主: 创建该文件的用户。
2) 同组用户: 拥有该文件的用户组中的任何用户。
linuxshell编程实验总结Linux Shell编程实验总结在Linux系统中,Shell编程是一种强大的工具,可以帮助用户进行自动化任务、脚本编写和系统管理。
通过学习和实践Shell编程,我深深地体会到了其在提高工作效率和简化任务流程方面的重要性。
在这篇文章中,我将总结我在Linux Shell编程实验中的经验和心得。
一、实验概述在这次Linux Shell编程实验中,我学习并应用了Shell脚本语言,掌握了基本的语法和命令,并通过实验来加深对Shell编程的理解和掌握。
实验的内容包括变量的定义和使用、条件语句的实现、循环结构的应用等。
二、变量的定义和使用在Shell编程中,变量的定义和使用是非常重要的一部分。
通过实验,我学会了如何使用“=”符号来给变量赋值,并可以在后续的命令中使用这个变量。
在实践中,我发现给变量加上$符号可以获取变量的值,并且可以在字符串中插入变量。
这在编写脚本时非常有用,可以将一些可变的部分定义为变量,提高程序的可读性和可维护性。
三、条件语句的实现条件语句在Shell编程中起到了重要的作用,可以根据不同的条件执行不同的命令。
通过实验,我掌握了Shell中常用的条件判断语句,如if语句和case语句。
在编写条件语句时,我注意到要使用适当的比较运算符(如“-eq”表示等于、“-ne”表示不等于等),并在语句块的结尾加上“fi”或“esac”来结束条件语句的定义。
四、循环结构的应用在实践中,我发现循环结构是Shell编程中非常重要的一部分,可以重复执行特定的任务。
通过实验,我掌握了两种常见的循环结构:for循环和while循环。
在编写循环结构时,我注意到要使用适当的循环控制语句,如“break”可以用于跳出循环,“continue”可以用于跳过当前循环中的剩余命令,继续下一次循环。
五、实验心得通过这次实验,我深刻认识到了Shell编程在自动化任务和脚本编写方面的重要性。
Shell编程既可以简化日常工作中的重复性任务,又可以提高工作效率和减少出错的可能性。
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,这些语句在传递控制前执行命令行中剩下的命令。
RT-Thread学习笔记--finsh shell配置方法严文年-2018-01-07记于苏州一、背景:【finsh同时支持:c-style模式与msh模式,但是默认进入c-style 模式,执行[msh()]即可切换到msh模式。
在msh模式下执行[exit]后即退回到c-style模式】---------->由于RT-Thread BSP默认配置Finsh仅为msh模式,想要同时拥有c-style模式和msh模式,需要按照如下方法进行配置。
二、配置环境:✧系统:Windows7旗舰版(64位)✧ENV:env_released_0.6.4✧RT-Thread:rt-thread-3.0.2✧IDE:Keil5.24✧下载器:J-Link V9.3✧目标芯片:STM32F103RCT6三、参考文档:编程指南第11章四、配置步骤:1.打开ENV工具:(根据自己电脑系统选择要打开的可执行文件:console_xx.exe)2.切换到BSP待配置工程目录:(命令:cd[待配置工程目录])为方便目录切换,可将ENV与RT-Thread放置到相同根目录。
3.打开配置界面:(命令:menuconfig)4.进入finsh配置目录:5.配置Finsh:(取消仅为msh模式)6.保存配置:7.退出ENV配置:(连续按键盘ESC按键)五、更新工程:1.将重新配置的参数更新到工程文档:(命令:scons--target=mdk5)六、验证:1.打开更新后的项目工程文档2.确认配置信息是否更新3.配置Keil相关设置4.编译工程5.使用J-Link或其他Tools Download编译成功的Hex文件到目标板卡。
6.打开串口调试工具,验证finsh shell功能是否配置成功。
A.通过键盘【TAB】输出msh Commands list,通过指令【exit】退出msh模式,进入c-style模式。
B.通过键盘【TAB】输出c-style Commands list,通过指令【msh()】退出c-style模式,进入msh模式。
Linux学习笔记⼀(⽂件和⽬录操作)1.基本shell操作命令解析器--根据命令的名字,调⽤对应的可执⾏程序shell--unix操作系统bash--Linux操作系统(⽂件系统)Linux⽂件系统的存储单元是块在磁盘上存储的时候每个⽂件都有⼀个inode--i节点,保存了⼀些⽂件信息,通过iNode找到对应的⽂件a.快捷键b.虚拟终端history--查询命令的历史记录ctrl+p == 向上的箭头,查询上⼀个命令ctrl+n == 向下的箭头,查询下⼀个命令ctrl+b 向左移动backctrl+f 向右移动forwardctrl+a 移动到⾏⾸ctrl+e 移动到⾏尾ctrl+h 刪除光标前⾯的字符ctrl+d 刪除光标覆盖的字符ctrl+u 刪除光标前⾯的所有字符ctrl+k 删除光标位置到⾏尾的字符ctrl+l或者clear命令清理屏幕c.命令和路径补齐tab智能提⽰键,按⼀次没反应说明有很多符合条件的命令,再按⼀次出现符合条件的命令列表cd ⽬录 + 连续两次tab,显⽰⽬录下⼀级的所有路径d.centos7防⽕墙操作systemctl start firewalld.service 启动systemctl enable firewalld.service 开机启动systemctl stop firewalld.service 停⽌systemctl disable firewalld.service 禁⽌开机启动systemctl status firewalld.service 查看状态firewall-cmd --state 查看状态2.Linux系统⽬录结构ls 路径(查询当前路径下的所有⽂件)/根⽬录下的⽬录说明:/bin bin是binary的缩写,这个⽬录存放着经常使⽤的命令可执⾏程序/boot 存放的是启动Linux时的⼀些核⼼⽂件,包括⼀些连接⽂件以及镜像⽂件(开机启动项)/dev 是Device(设备)的缩写,该⽬录存放的是Linux的外部设备,在Linux中访问设备的⽅式和访问⽂件的⽅式是相同的(Linux奉⾏⼀切皆⽂件,它会把所有硬件外设抽象成设备⽂件存到dev⽬录之下,⽐如⿏标键盘)/etc ⽤来存放所有系统管理所需要的配置⽂件和⼦⽬录/home ⽤户的主⽬录,在Linux中,每个⽤户都有⼀个⾃⼰的⽬录,⼀般该⽬录名是以⽤户的账号命名。
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总结1.shell的⼼得 学习shell的时候必须把重点放在流程控制上和shell⼯具上。
⼀定要⽤⼼记语法和命令。
2.介绍shell shell是⼀种解释型语⾔,程序不需要编译,程序在运⾏时由解释器翻译成机器语⾔,每执⾏⼀次都要翻译⼀次。
因此解释型语⾔效率低。
其实也是⼀种编译型语⾔。
程序在运⾏之前就被编译器编译过成机器语⾔,执⾏的时候执⾏编译过的结果就⾏了效率⾼。
shell的编译器是bash。
3.总结shell 3.1Linux提供的解析器有 [jinghang@hadoop101 ~]$ cat /etc/shells /bin/sh 是bash的⼀个快捷⽅式 /bin/bash bash是⼤多数Linux默认的shell,包含的功能⼏乎可以涵盖shell所有的功能 /sbin/nologin 表⽰⾮交互,不能登录操作系统 /bin/dash ⼩巧,⾼效,功能相⽐少⼀些 /bin/tcsh 具有C语⾔风格的⼀种shell,具有许多特性,但是也有⼀些缺陷 /bin/csh 是csh的增强版本,完全兼容csh 3.2变量 系统变量分为:$HOME、$PWD、$SHELL、$USER等 ⾃定义变量就是⾃⼰取名字。
特殊变量:$n $0该脚本名称,$1-$9第⼀到第九个参数⼗个以上需要⼤括号${10} 特殊变量:$# 获取参数的个数 特殊变量:$*、$@ $*:这个变量代表命令⾏中所有的参数,$*把所有的参数看成⼀个整体. $@:这个变量也代表命令⾏中所有的参数,不过$@把每个参数区分对待 特殊变量:$? $?:最后⼀次执⾏的命令的返回状态。
如果这个变量的值为0,证明上⼀个命令正确执⾏;如果这个变量的值为⾮0(具体是哪个数,由命令⾃⼰来决定),则证明上⼀个命令执⾏不正确了。
3.3运算符 “$((运算式))”或“$[运算式]” + , - , *, /, % 加,减,乘,除,取余 expr + , - , \*, /, % 加,减,乘,除,取余 3.4条件判断 = 字符串⽐较 -lt ⼩于(less than) -le ⼩于等于(less equal) -eq 等于(equal) -gt ⼤于(greater than) -ge ⼤于等于(greater equal) -ne 不等于(Not equal) 3.5流程控制 if[ 条件判断式 ]; then 程序 fi 或者 if[ 条件判断式 ]then 程序 elif[ 条件判断式 ]then 程序 else 程序 fi case $变量名 in "值1")如果变量的值等于值1,则执⾏程序1 ;;"值2")如果变量的值等于值2,则执⾏程序2 ;;…省略其他分⽀… *)如果变量的值都不是以上的值,则执⾏此程序 ;;esac for (( 初始值;循环控制条件;变量变化 )) do 程序 done while [ 条件判断式 ] do 程序 done 4.shell⼯具命令 4.1 cut cut的⼯作就是“剪”,具体的说就是在⽂件中负责剪切数据⽤的。
shell基础知识总结1. shell 对于⼀台计算机⽽⾔,其硬件受系统内核的控制,使⽤者想要控制计算机,就必须有与系统内核进⾏通讯的⼿段。
⽽shell就是使⽤者与计算机进⾏通讯的⼿段之⼀。
从命名上看,shell其实是相对于kernel(内核)⽽⾔,指系统与外界(使⽤者)进⾏接触的部分,⼀个提供系统功能给⽤户使⽤的软件,它接受来⾃⽤户的指令,然后调⽤相应的应⽤程序。
为了满⾜不同的需求,shell提供了两种执⾏命令⽅式:a. 交互式:解释并执⾏⽤户输⼊的命令或者⾃动地解释和执⾏预先设定好的⼀连串的命令。
b. 程序设计式:作为⼀种脚本语⾔,提供变量、控制结构和函数,再通过解释器解释并执⾏。
Linux上常见的shell有sh、bash、ksh、tcsh等,不同解释器在某些语法的执⾏⽅⾯可能有些不同。
通过查看/etc/shells⽂件就可以知道本系统所⽀持的shell解释器类型。
如shells的⽂件内容如下:ryeshen@~$ cat /etc/shells/bin/sh/bin/bash/sbin/nologin/usr/bin/sh/usr/bin/bash/usr/sbin/nologin/bin/tcsh/bin/csh/bin/ksh/bin/zsh ⽽linux默认是⽤的解释器是bash。
在脚本头可以声明本脚本所使⽤的解释器,声明⽅式: #!/bin/bash2. 变量a. 赋值赋值⽅式:variable_name = variable_value等号两边不能有空格符;增加变量内容:PATH=”$PATH”:/home/bin取消变量:unset variable_name变量类型:可以使⽤declare [[-/+]aixr] [name[=value] …],其中-表⽰赋予变量属性,+表⽰去除变量属性,a-数组,i-整数,r-只读,x-环境变量b. ⾃定义变量与环境变量使⽤“=”赋值得到的⾃定义变量,这个变量的作⽤域为当前shell进程。
使用shell的基本操作命令使用Shell的基本操作命令Shell是一种命令行解释器,它是连接用户与操作系统内核的桥梁,可以通过输入不同的命令来操作计算机系统。
本文将介绍一些常用的Shell基本操作命令,并对其功能进行详细说明。
1. cd命令cd(Change Directory)命令用于切换当前目录。
通过输入cd命令,后面跟随要切换到的目录路径,即可切换到指定目录。
例如,输入cd /home,即可切换到/home目录下。
2. ls命令ls(List)命令用于列出当前目录下的文件和子目录。
通过输入ls命令,即可显示当前目录下的所有文件和子目录的名称。
例如,输入ls,即可显示当前目录下的所有内容。
3. pwd命令pwd(Print Working Directory)命令用于显示当前所在的目录路径。
通过输入pwd命令,即可显示当前所在的目录路径。
例如,输入pwd,即可显示当前目录的路径。
4. mkdir命令mkdir(Make Directory)命令用于创建新的目录。
通过输入mkdir命令,后面跟随要创建的目录名称,即可在当前目录下创建新的目录。
例如,输入mkdir test,即可在当前目录下创建名为test的目录。
5. touch命令touch命令用于创建新的空文件。
通过输入touch命令,后面跟随要创建的文件名称,即可在当前目录下创建新的空文件。
例如,输入touch test.txt,即可在当前目录下创建名为test.txt的空文件。
6. cp命令cp(Copy)命令用于复制文件或目录。
通过输入cp命令,后面跟随要复制的文件或目录路径,以及目标路径,即可将文件或目录复制到指定位置。
例如,输入cp file.txt /home,即可将当前目录下的file.txt文件复制到/home目录下。
7. mv命令mv(Move)命令用于移动文件或目录,也可以用于文件或目录的重命名。
通过输入mv命令,后面跟随要移动或重命名的文件或目录路径,以及目标路径或新的名称,即可将文件或目录移动到指定位置或重命名。
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、行首以^匹配字符串或字符序列^只允许在一行的开始匹配字符或单词。
Linux Shell脚本攻略读后感十篇《Linux Shell脚本攻略》是一本由(印)拉克什曼著作,人民邮电出版社出版的平装图书,本书定价:49.00元,页数:254,特精心从网络上整理的一些读者的读后感,希望对大家能有帮助。
《Linux Shell脚本攻略》读后感(一):快餐式阅读看豆瓣评分还可以,就拿来当闲书看,里面的案例直接明了,可以根据个人操作习惯摘要记下一下,不能说精彩,但写得有条理,毕竟shell学习本身就是大杂烩,至少可以翻阅,记下些许笔记。
《Linux Shell脚本攻略》读后感(二):花了两天时间读完对于新手来说够用了系统的介绍了日常开发中80%以上的用法,收货蛮大的比如有些sed awk介绍的不是非常详细但是对于一般的功能要求就够用了第8章第9章管理都是一笔带过,感觉好像换作者了《Linux Shell脚本攻略》读后感(三):很不错的参考书这本书不错,就是书薄了点,不过正所谓少而精么,对于初学者,绝对是一本不错的提高书。
书中有很多技巧是很多脚本老手经常使用,却不会手把手教你的。
不同于传统的脚本书籍,这本书没有长篇大论,都是一个接着一个的小技巧,很实用。
《Linux Shell脚本攻略》读后感(四):想系统学习Shell 编程的人,还是别看了这本书给我的感觉就是作者在学习Shell编程的笔记,排了一下版,就出成书了。
书里面的错误之多,命令也不太容易看,而且跳跃性巨大。
当你对Shell编程比较熟悉了,拿来看一看,也许还能有些帮助。
总之,不推荐浪费时间在此书上《Linux Shell脚本攻略》读后感(五):失望了,错误巨多,不适合初学者:,这么小儿科的问题充分暴露了译者的马虎。
文章采用代码都是从原书上复制来的,关键是换行也复制过来了,明明一行命令还没到页宽,就啪的一下换行了,匪夷所思!!!作者自己完全没有自己跑过代码。
又发现n 处错误,无力吐槽了《Linux Shell脚本攻略》读后感(九):易读就个人学习过程而言,shell最麻烦的地方在于选项太多。
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。
零基础入门学习Python(小甲鱼)笔记整理(class 1 - class 5)Class11、IDLE是一个python shell,shell就是一个通过键入文本与程序交互的路径。
2、Alt+n进入上一条语句;Alt+p进入下一条语句。
3、\n为换行符(lf),\r是回车符(CR)。
4、Python3中的输出语句格式为:print(’hello world!’)。
如果输入print ’hello world!’(这是Python2的输出格式)或者printf(‘hello world!’)(这是c语言的输出格式)。
【Notice】:如果输入print(‘hello world’); 可以正常输出,但是Python中的语句不需要使用分号结尾,除非在同一行输入多个语句。
5、Python的其他输入情况【Notice】:hello world是一个字符串,8是一个整型,不能直接用加号连接。
6、什么是脚本语言?7、直接输入5+8与输入print(5+8)有何不同?Class21、tab键的作用:1)缩进2)键入几个字母,按下tab,列出候选字。
2、BIF是built-in functions的缩写。
3、通过命令dir(___builtins__)可以查看各个BIF的名称;通过命令help(BIF)可以查看各个BIF的作用,例如help(print)可以查看print的相关信息。
Class31、【Notice】:third作为first和second的和,并没有随着first的变化而变化。
2、转义字符及原始字符串的使用方法。
打印单引号的办法——只用转移字符,即输入print(“\’”)。
【Notice】:反斜杠也可以对自身进行转义。
原始字符串的使用方法就是在字符串前边追加一个英文字母r即可。
【Notice】:下一例子中的str2=r’c:\program files\fishc\good’’\\’等价于str2=r’c:\program files\fishc\good’+’\\’。