shell脚本
shell
1002_spect
这个作者很懒,什么都没留下…
展开
-
shell脚本之2min35s倒计时
[root@localhost mnt]# vim time.sh ######################!/bin/bashfor((i=155;i>0;i–))doecho -n " After $i’s is end "echo -ne “\r”sleep 1done注释:\r ##表示回车:覆盖之前的输出(注意:必须加-e解析)sleep 1...原创 2019-06-13 19:55:30 · 317 阅读 · 0 评论 -
linux中bash或shell脚本,单引号,双引号,反引号的区别
单引号双引号,基本上类似于编程语言中的引用字符串区别在于单引号’ '内剥夺所有字符的特殊含义,所有字符都是单纯的字符串而没有特殊功能,比如$取参数等命令都是无效的而双引号" "中除了字符串,特殊字符是没有被转义的,$等特殊字符一样可以使用其功能。反引号``是命令替换,通常用于把命令输出结果传给入变量中,类似变量后$=(命令)...原创 2019-06-13 18:54:34 · 340 阅读 · 0 评论 -
Shell脚本之for循环、while循环,if语句、case语句
在单引号中的任何字符都会原样输出,单引号字符串中的变量是无效的双引号里面可以有变量,双引号里面可以出现转义字符1. for循环一般格式:格式1: for((条件)) do 动作 done格式2: for 变量名 in 范围 do 动作 done实验:##1. 输出数字:1-5[root@localhost ~]# vim...原创 2019-06-13 20:04:49 · 3493 阅读 · 0 评论 -
Shell中的文本处理:grep 文本过滤命令、sed 行编辑器
1.grep 文本过滤命令(1)grep命令的简介##全面搜索研究正则表达式并显示出来grep 命令(Global search regular expression and print out the line)是一种强大的文本搜索工具,根据用户指定的‘模式’对目标文本进行匹配检查,打印匹配到的行。由正则表达式或者字符及基本文本字符所编写的过滤条件(2)grep命令的基本用法gre...原创 2019-06-07 00:19:18 · 925 阅读 · 0 评论 -
Shell脚本之read命令、cut命令、sort命令、uniq 命令、test命令
1.read 命令read ##用于接收用户输入的信息-s #表示对输入内容的加密(即不显示输入的内容)-p #显示提示语-t #表示等待时间,超过多久后便自动退出实验: -p表示显示提示语,i表示接收用户输入信息的变量 -s表示加密;即无法看到用户输入的内容2.cut命令-d ##指定分隔符-f ...原创 2019-06-06 23:57:39 · 298 阅读 · 0 评论 -
面试题:grep与egrep的区别
grep命令用于在文件内查找指定的字符串。egrep执行效果与"grep-E"相似,使用的语法及参数可参照grep指令,与grep的不同点在于解读字符串的方法。egrep是用extended regular expression语法来解读的,而grep则用basic regular expression 语法解读,extended regular expression比basic regular expression的表达更规范,且egep支持更多的元字符,即egrep使用的是拓展的正则表达式拓展元字原创 2020-10-12 11:20:38 · 3536 阅读 · 0 评论 -
linux三剑客之awk详解
awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息awk处理过程: 依次对每一行进行处理,然后输出awk命令形式:awk [option] 'program' file其中program:pattern{action statements}pattern:决定动作语句何时触发以及触发事件action:对数据进行处理,放在{}里面指明,不指明动作时,默认为print $0.即打印所有的域什么是域?通过分隔符将字符串分割的原创 2020-10-12 10:17:26 · 221 阅读 · 0 评论 -
如何判断一个软链接有效?(所指向位置的文件没有被删除或更改位置)
两个必要条件:第一,这个链接文件必须存在。第二,这个文件必须是链接文件。我们首先将软链接所指向的源文件删除,看是什么效果:[root@server1 shells]# ll hh lrwxrwxrwx 1 root root 6 11月 4 20:21 hh -> ip.txt[root@server1 shells]# rm -fr ip.txt [root@server1 shells]# ll hh lrwxrwxrwx 1 root root 6 11月 4 20:21原创 2020-11-05 17:15:43 · 5101 阅读 · 1 评论 -
利用[ ] 进行判断和利用 [[ ]]的区别
这两个符号怎么用,点击这里本次说说两者的不同之处?先看两个字符串(其中一个为空值)比较时,如果不加“”双引号来表示一个整体时,用三种不同的判断方式会是什么样的结果:(正确的字符串比较方法要在两个字符串上加双引号,表示它是一个整体)第一种:test 表达式[root@server1 ~]# a= //给a赋空值,[root@server1 ~]# test $a = "heloo";echo $?-bash: test: =: unary operator expected2原创 2020-11-04 20:40:01 · 179 阅读 · 0 评论 -
变量的分类(临时(本地)变量、环境变量、全局变量和系统变量)
1、临时变量当前用户自定义的变量,只在当前进程中有效。其他进程及当前进程的子进程无效。(1)定义方式基本方式:变量名=变量值[root@server1 shells]# a=4[root@server1 shells]# echo $a4命令执行结果输入给变量:变量名=`执行的命令``[root@server1 shells]# name=`hostname`[root@server1 shells]# echo $nameserver1[root@server1 shell原创 2020-11-04 12:27:49 · 1929 阅读 · 0 评论 -
定义有类型的变量declare
原创 2020-11-03 17:51:10 · 299 阅读 · 0 评论 -
交互式定义变量read用法
不加选项:[root@server1 shells]# read namekongy[root@server1 shells]# echo $namekongy-p[root@server1 shells]# read -p "input your name" nameinput your namekongying[root@server1 shells]# echo $namekongying-s[root@server1 shells]# read -s -p "passw.原创 2020-11-03 17:27:38 · 340 阅读 · 0 评论 -
调用变量的两种方法:$变量和${变量}的区别
学shell脚本的大家都知道,这两种调用变量的方法:得到的调用结果是一样的。但是两者有什么区别呢?怎么个截取法呢?原创 2020-11-03 16:12:03 · 2566 阅读 · 0 评论 -
shell------写一个脚本实现调用脚本就可知道谁ssh远程连接自己的次数最多
[root@server1 bin]# last -i |grep -v '0.0.0.0'|awk -F ' ' '{print$3}'|tr -d 'a-zA-Z'|grep -v '^$'|uniq -c|sort -r |head -3 6 192.168.13.6 6 192.168.13.128 6 192.168.13.128原创 2020-11-03 01:48:32 · 143 阅读 · 0 评论 -
脚本的2种执行方式(标准执行方式和不标准的区别)sh 和利用文件路径执行的区别、bash报错 /usr/bin/bash: 解释器错误:没有那个文件或者目录
第一种:利用绝对路径和相对路径进行执行。第二种:非标准式执行方式用途:原创 2020-11-03 01:14:46 · 748 阅读 · 0 评论 -
shell脚本----#!/bin/bash和#!/bin/env
#!/usr/bin/env bash 在不同的系统上提供了一些灵活性。优点:1.用户不需要去寻找程序在系统中的位置(因为在不同的系统,命令或程序存放的位置可能不同),只要程序在你的$PATH中;2.它会根据你的环境寻找并运行默认的版本,提供灵活性。(保存用户信息的文件/etc/passwd)缺点:有可能在一个多用户的系统中,别人在你的$PATH中放置了一个bash,可能出现错误。#!/usr/bin/bash 将对给定的可执行文件系统进行显式控制。大部分情况下,/usr/bin/env是原创 2020-11-03 01:02:17 · 892 阅读 · 0 评论 -
shell介绍-----面试问题
1.什么是shell(命令解释器)?简单来说,其实shell就是用户和系统交互的软件工具,它接收用户命令,然后调用相应的应用程序原创 2020-11-03 00:48:53 · 118 阅读 · 0 评论 -
bash中反撇号和$()的区别(单引号、双引号、$、$()、反撇号的用法,保证看一遍再也不用看其他教程)
``和 $()都具有执行命令的功能,但如果具有嵌套,使用 $ ()原创 2020-11-03 00:20:18 · 558 阅读 · 0 评论 -
shell----读取出电脑的物理地址
[root@server1 mnt]# ifconfig ens33 |sed -n 4p|awk -F ' ' '{print$2}'00:0c:29:c7:26:1d原创 2020-11-02 22:28:22 · 230 阅读 · 0 评论 -
wak切割功能和cut的区别
cut : 将同一行里面的数据进行分解 -d 指定分隔符 -f 提取第几列`cut -d ':' -f1,3 filename` ##根据:号剪切整行,提取出第一、三个字段 awk : 对每一行分成多个字段数据进行处理,适合小型数据的处理 -F [:#/] 指定分隔符 $0代表整行 `awk -F : '{ print $1 }' /etc/passwd` root cut 与 awk的异同点:1、同:cut和awk都能分割显示需要的内容2、异:在需要原创 2020-11-02 21:54:10 · 593 阅读 · 0 评论 -
shell脚本之------本机IP地址、子网掩码(netmask)、网关(gateway)的提取
第一步:查看IP[root@server1 mnt]# ifconfig ens33第二步:查看IP、网关、子网掩码位置,选择适合的命令(1)先把第二列删选出来,可以用grep工具,我这里使用sed命令:[root@server1 mnt]# ifconfig ens33 |sed -n 2p inet 192.168.13.129 netmask 255.255.255.0 broadcast 192.168.13.255(2)根据数据所处分隔符位置,选出数据并逐行放原创 2020-11-02 22:32:08 · 2740 阅读 · 1 评论 -
shell-----用小工具列出你当前系统的运行级别
1、首先查看当前系统运行级别:[root@server1 mnt]# runlevelN 52、系统运行级别默认存储在/etc/inittab文件中3、如何将打印出来的运行级别5截取出来:[root@server1 ~]# runlevel |cut -d " " -f 25[root@server1 ~]# runlevel |cut -c35[root@server1 ~]# runlevel |awk -F ' ' '{print$2}'5...原创 2020-11-02 18:09:28 · 140 阅读 · 0 评论 -
shell脚本之case语句
1、语法结构(1)实现菜单打印及实现代码:1 #!/bin/bash 2 h="view the help" 3 f="view the fdisk" 4 d="view the mount" 5 m="view the mem" 6 u="view the cpu" 7 q="exit" 8 echo -e "h $h\n f $f\n d $d\n m $m\n u $u\nq $q" 9 while [ 1 -eq 1 ] //实现循环,可以多次查看,原创 2020-11-15 13:36:19 · 226 阅读 · 0 评论 -
shell脚本实战之统计web网站不同连接状态个数
1 #!/bin/bash 2 declare -A he //定义关联数组 3 array=`netstat -antlp |grep 80|awk -F" " '{print($6)}'` 定义索引变量 4 for i in ${array} //取值 5 do 6 let he[$i]++ //让元素加一 7 done 8 9 for j in ${!he[@]} 10 do 11 ech..原创 2020-11-15 08:27:19 · 252 阅读 · 0 评论 -
shell脚本之普通数组的创建、引用;关联数组的创建、引用
1、数组的分类2、定义普通数组方法3、读取普通数组元素[root@server1 shells]# array=(`head ip.txt`) //将IP.txt文件前10行赋值给array数组[root@server1 shells]# echo ${array[0]} //打印array数组索引为0的元素值root:x:0:0:root:/root:/bin/bash //我们可以发现整行都赋值给了该元素[root@server1 shells]# echo原创 2020-11-13 16:05:34 · 750 阅读 · 1 评论 -
如何快速注释很多行代码?如何快速取消注释的代码?
如果在开发过程中,遇到大段的代码需要临时注释起来,过一会儿又取消注释,怎么办呢?每一行加个 # 符号太费力了,可以把这一段要注释的代码用一对花括号括起来,定义成一个函数,没有地方调用这个函数,这块代码就不会执行,达到了和注释一样的效果。当需要这段代码的时候,把花括号去掉,==#==去掉就ok了。...原创 2020-11-12 19:52:01 · 3879 阅读 · 0 评论 -
Linux shell脚本中内联输入 <<- EOF和 <<EOF的区别
<<-EOF将忽略起止内容中前面的tab制表符,而<<EOF将不会,比如:-END就会忽略每行前面的TAB白串。原创 2020-11-11 21:30:13 · 1429 阅读 · 0 评论 -
shell脚本之expect自动应答语言
1、什么是交互式语言?在脚本中写入与系统交互时可能出现的询问语句,然后将要回答的答案也写入脚本中,实现自问自答,从而实现脚本的人机交互。2、案例第一步:安装该软件yum install -y expect.x86_64查看这个软件的编译器:编写脚本登录:#!/usr/bin/expectset ip 192.168.13.134 //定义登录的主机IPset pass westos //定义登录密码spawn ssh root@$ip //开启一个程序,远原创 2020-11-11 13:24:32 · 491 阅读 · 0 评论 -
echo -n 和echo -e 参数意义
echo -n 不换行输出echo−n"123";echo -n "123";echo−n"123";echo “456” ///最终输出 123456echo -e 处理特殊字符若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:\a 发出警告声;\b 删除前一个字符;\c 最后不加上换行符号;\f 换行但光标仍旧停留在原来的位置;\n 换行且光标移至行首;\r 光标移至行首,但不换行;\t 插入tab;\v 与\f相同;\ 插入\字符;\nnn 插入nnn原创 2020-11-10 17:40:56 · 232 阅读 · 0 评论 -
嵌套循环
1、什么是嵌套循环?(1)打印指定图案首先看一下echo如何保证打印出来的不换行:代码:#!/bin/bashfor i in $(seq 5) //定义行数dofor a in $(seq 5) //定义每行循环的数字doif [ $a -le $i ] //根据图案规律看出,每行的数字最大值等于第几行thenecho -n $a //内部循环打印符合规律的数字并且把它们不换行输出elsebreakfidoneecho原创 2020-11-10 16:59:38 · 1290 阅读 · 0 评论 -
shell脚本之抽取幸运观众
抽取五名幸运观众:上一次博客我们产生了1000个随机电话号码,本次实验就拿它来做:[root@server1 shells]# cat num.txt |sort -u|wc -l //1000个不同且随机的号码1000代码:#!/bin/bashphone=/root/shells/num.txtfor i in $(seq 5)doline=$[$RANDOM%1000+1]echo $line //显示行号,确定上一步执行结果num=`head -$line原创 2020-11-10 11:19:51 · 1057 阅读 · 0 评论 -
shell脚本之random产生随机数(产生随机电话号码)
(1)随机产生以139开头的手机号码代码:#!/bin/bashfor i in $(seq 1000) //定义循环doa1=$(($RANDOM%10))a2=$(($RANDOM%10))a3=$(($RANDOM%10))a4=$(($RANDOM%10))a5=$(($RANDOM%10))a6=$(($RANDOM%10))a7=$(($RANDOM%10))a8=$(($RANDOM%10))echo "139$a1$a2$a3$a4$a5$a6$a7$a..原创 2020-11-10 09:14:59 · 1308 阅读 · 0 评论 -
shell脚本之while循环、until循环
1、while循环语法结构及简单例子(1)打印1-10之间的奇数[root@server1 shells]# i=1;while [ "$i" -le 10 ];do echo $i; let i+=2;done //-le:小于等于13579(2)脚本计算1-50的偶数和if [[ $(($i%2)) -eq 0 ]] //注意计算$i%2的时候一定要用四则运算符号thenlet sum=sum+ilet i+=1elselet i+=1fidoneech原创 2020-11-09 21:48:09 · 393 阅读 · 0 评论 -
shell脚本for循环之批量创建用户
第一步:判断class这个组是否存在第二步:我们先将需要使用的命令罗列下来:groupadd class //创建用户组useradd xx -g class //创建用户并指定群组为class第三步直接代码:#!/bin/bashgrep -w class /etc/group &> /dev/null //-w代表整个单词,过滤包含class这个单词的行,并将过滤内容导入空文件[ $? -ne 0 ] && group.原创 2020-11-07 00:10:40 · 1868 阅读 · 0 评论 -
shell脚本之for循环语法结构(实现0-100奇数的相加、判断所输入的数字为质数)----break、exit、continue循环控制语句的写法
1、列表循环功能:用于将一组命令执行已知的次数基本语法格式:(1)实现1-10的倒数:[root@server1 shells]# for i in {10..1};do echo $i;done //注意中间用..隔开10987654321(2)实现1-10奇数的打印[root@server1 shells]# for i in {1..10..2};do echo $i;done //{开始..结束..步长}135792、类c风格(1)实原创 2020-11-06 20:05:06 · 2021 阅读 · 0 评论 -
shell脚本之查看一个服务器是否假死并且重启
1、什么是服务器假死?就是看着在运行,实际已经不发送数据了。2、如何查看?通过wget该服务器网站的默认界面.通过curl -l 命令查看默认界面文本3、直接上代码#!/bin/bashwget "$1" &> /dev/nulla=$?rm -fr /shells/tmp/*.index //将请求到的默认页面删除if [ "$a" -eq 0 ]then echo "ok"else echo "no"fi查看执行.原创 2020-11-05 21:55:11 · 666 阅读 · 0 评论 -
shell脚本之判断一个进程是否存在以及pgrep的用法
我们之前学过的进程查看命令有ps、top,但因为top是动态进程查看命令,所以选择ps吧。比如我们要查看nginx进程是否存在:[root@server1 shells]# ps -aux |grep nginxroot 21535 0.0 0.0 112704 1024 pts/0 S+ 20:08 0:00 grep --color=auto nginx很明显,进程中没有nginx的进程,唯一一个是因为我们打开了grep --color=auto nginx命令才出原创 2020-11-05 20:35:01 · 1749 阅读 · 0 评论 -
shell脚本之判断两个主机是否ping的通
第一个问题:如何缩短ping的次数,减少输出内容,以及自动结束ping?[root@server1 shells]# ping -c1 www.baidu.com //通过-c设置次数,减少输出内容以及减少ping的时间PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data.64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=1 ttl=128 time=37.1 ms-原创 2020-11-05 20:01:19 · 866 阅读 · 0 评论 -
shell脚本之if结构
1、一直选择结构2、if…else结构原创 2020-11-05 18:06:10 · 282 阅读 · 0 评论 -
||和|,&&和&的区别
请点击这里转载 2020-12-19 14:01:46 · 129 阅读 · 1 评论