Linux运维基础技能: 脚本编程与Linux命令
source link: https://zhang.ge/5140.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
本系列文章一共三篇,分别为《脚本编程与Linux命令》、《接入层与网络基础》和《 MySQL 与 SQL 优化》,由腾讯高级工程师 luaruan(阮永顺) 原创、张戈博客整理分享,如有勘误请在博客留言。
希望对需要学习、面试Linux运维的同学有所帮助。
$1 入参,空值时默认赋值技巧
$* 和 $@ 区别
- $* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含
时,都以"$1" "$2" … "$n" 的形式输出所有参数。 - 但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,
以"$1 $2 … $n"的形式输出所有参数;" - $@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。
区别在于,分别输出 1 2 3 和
几个 Shell 里的内置变量
Tips:
awk 教程 https://coolshell.cn/articles/9070.html
sed 教程 https://coolshell.cn/articles/9104.html
Shell script 基础问答 https://linux.cn/article-5607-1.html
Shell 四则运算方法
函数定义与调用
字符串与序列、随机数
name=John && echo 'My name is $name' 输出'My name is $name ,因为单引号里面的$只会当作字面值
字符串截取 a=123456789 ; echo ${a:0:3} 输出 123
echo 替换字符
使用 cksum 从管道灌进去一些随机文本可生成一些随机数字,需要使用 cut 切 割
字符串截取
提取最后一位
Shell script 语法在线检查与建议:https://www.shellcheck.net
考察 if 、head 、tail、sed:https://leetcode.com/problems/tenth-line
考察 ls 按时间、体积大小排序
考察 comm 的使用:http://man.linuxde.net/comm
前提是,文件要排序过。结果的第一列是仅仅在文件 1 出现的,第二列是仅仅在文件 2 出现
的,第三列是共同出现的。-1 表示不显示第一列,-2 表示不显示第二列,-3 表示不显示第三列。
考察 grep 与正则、子模式
https://leetcode.com/problems/valid-phone-numbers
https://www.interviewbit.com/problems/valid-phone-number/
另外, grep -c 表示匹配次数,-P 表示使用正则 -E 其实是扩展模式不是正则
考察容错处理、if、大于小于、正则、排序、去重统计、awk
https://leetcode.com/problems/word-frequency
#grep 使用 -o 输出、使用-P 表示正则、使用 awk 交换列
考察 awk 编程
给定一个文本文件,内有 M 行 N 列数字,求数字求和
题:给定 id 姓名 工资文本,计算工资和
答案:
Ps:注意 BEGIN、END 的位置;注意 awk 里定义的变量不用$号
考察 awk 编程、单引号里如何传递变量
https://www.interviewbit.com/problems/lines-in-a-given-range/
Ps:在单引号字句里,使用'$A' 以传递变量 A
使用 awk 一行检测磁盘分区> 90%
考察 tr 替换、删除的使用、去除空格
https://www.interviewbit.com/problems/remove-punctuations/
cat input|tr -d -c "a-zA-Z0-9[:space:]" #注意 tr 里什么代表字母、什么代表数字集
检测主机是否存活的脚本(三次 ping 都失败)
Ps:有个陷阱,ubuntu 16 里使用 sh 执行时,function xxx() 会报错。因此命令行用 bash 执行脚本
批量并发检测存活主机
检测站点 URL 是否存活:考察 curl 的使用、文件入参、待优化多次检测
让进程在后台可靠运行的方法(意思是不会随着子 shell 的退出而挂)
nohup command > /dev/null 2>&1 &
screen -S <label> # 用快捷键 CTRL -a d 来暂时断开当前会话
command & #注意,这样标准输出可能会在屏幕里翻滚
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK