Linux运维基础技能: 脚本编程与Linux命令


本系列文章一共三篇,分别为《脚本编程与Linux命令》、《接入层与网络基础》和《MySQL与SQL优化》,由腾讯高级工程师luaruan(阮永顺)原创。

希望对需要学习、面试Linux运维的同学有所帮助。

$1入参,空值时默认赋值技巧

variable=${1:-"defaultvalue"}入参个数

$PID

$0文件名

$?上个命令执行结果

Shell四则运算方法

letC=A+B

letA++使用bc可以做比较复杂的运算

函数定义与调用

function可省略

echo$1echo"-----"

echo$2echo"-----"

echo$3

}

-a表示与,-o表示或

字符串与序列、随机数

name=Johnecho'Mynameis$name'输出'Mynameis$name,因为单引号里面的$只会当作字面值

字符串截取a=123456789;echo${a:0:3}输出123

echo替换字符

var=tom_tom_lucy_jack_tomomttom

echo${var/tom/mary}mary_tom_lucy_jack_tomomttom

echo${var//tom/mary}mary_mary_lucy_jack_maryomtmary

序列

foriin{1..100}1,8,15.99

foriin`seq100`3,4,5

随机数

echo$RANDOM

head/dev/urandom|md5sum|cksum|cut-c1-9

使用cksum从管道灌进去一些随机文本可生成一些随机数字,需要使用cut切割

字符串截取

a=123A123B456456C

echo${a*3}从最左边找到3删除,贪婪B456456C

echo${a%%6*}从最右边找到6删除,贪婪123A123B45

echo${a%?}删除最右边一个字符123A123B456456

提取最后一位

str="12345678"

i=$((${字符串长度减去1,故i=7

echo${b:$i:1}2018-10-1400:09

删除空行

|tr-s"\n"

sed-i'/^$/d'1.txt

grep-v"^$"1.txt

考察ls按时间、体积大小排序

ls-lt最新在前

ls-ltr最旧在前

ls-lS最大在前

ls-lSr最小在前

考察comm的使用:

前提是,文件要排序过。结果的第一列是仅仅在文件1出现的,第二列是仅仅在文件2出现

的,第三列是共同出现的。-1表示不显示第一列,-2表示不显示第二列,-3表示不显示第三列。

考察grep与正则、子模式

答案:

grep-P"(\d{3}-|\(\d{3}\)\s{1})\d{3}-\d{4}"input

另外,grep-c表示匹配次数,-P表示使用正则-E其实是扩展模式不是正则

考察容错处理、if、大于小于、正则、排序、去重统计、awk

为什么单引号里加{}不行呢

考察tr替换、删除的使用、去除空格

catinput|tr-d-c"a-zA-Z0-9[:space:]"!/bin/bash

functioncheck_ip(){使用((表达式))来做for循环ping3次

ifping-W1-c1"$ip"/dev/null21;then如果ping成功了,则直接结束探测,节省时间

fi

((fail_count=fail_count+1))给出IP列表,当然也可以自行改造成文本方案

foripin$iplist;do

check_ip$ip

done

批量并发检测存活主机:

批量IP的技巧;仅仅在bash生效,sh不行

do

(

ping-c3-W1$ip/dev/null;

if[$?-eq0];then

echo"$ipalive"

fi

)等待所有子进程结束

检测站点URL是否存活:考察curl的使用、文件入参、待优化多次检测:

,thencheckwhetherthesiteisavailable

INPUT_FILE=""

whilereadu;do

curl-s--connect-timeout3-o/dev/null$u用快捷键CTRL-ad来暂时断开当前会话

command#注意,这样标准输出可能会在屏幕里翻滚

版权声明:本站所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请举报,一经查实,本站将立刻删除。

相关推荐