第二课:

执行shell脚本的几种方式

chmod +x shtest.sh
./ shtest.sh
sh shtest.sh

管道操作
find /etc -name "*.conf" | wc -l
ps aux | grep httpd
bash shtest.sh
source shtest.sh
重定向
cat version.txt version.txt2 &> error.txt
< 从文本中写入
> 、>> 写入、追加至文件
2>、2>>错误信息写入、追加至文件。
&>、&>>混合模式。

A&&B 两者都执行
A||B A成功后不继续执行B

; 多条命令先后执行

第三课:

""双引号允许引用、转义
‘单引号禁止引用、转义,可省略
`反撇号 将命令执行结果作为值

特殊变量
$0 程序名
$1-9 输入的参数
$# 输入的变量个数
$* 输入的全部内容 个体
$@ 输入的全部内容 整体
$?前一条命令执行的状态,0为正常,1为非正常。

第四课:

expr A + - \* / % B 整数四则计算
X=1;Y=2;expr $X-$Y
$[]
echo $[A*B]
let X++;let Y--;
let X+=2;
echo $RANDOM
echo $[RANDOM%100] 100以内的随机数
seq 3 5
seq 3 2 15 首数 增量 末数
小数运算操作
echo "scale=4;10/3" | bc sacle=n约束小数位

第五课:

dirname $Var 路径名
basename $Var 文件名

截取
expr substr $Var 起始位置 截取长度 从1开始
echo ${Var:起始位置:截取长度} 从0开始
echo ${Var::5} 从开头截

替换
${Var/old/new} 单斜杠 只替换第一个出现的old
${Var//old/new} 双斜杠 替换所有old

生成随机字符串
head -1 /dev/urandom | md5sum
head -1 /dev/urandom | md5sum | cut -b -8 截取开头起的8个字符

第六课:

条件测试:
测试操作规范
格式1:test 条件表达式
格式2:[条件表达式]

测试操作的练习方法:
[条件表达式] && echo YES
[-d "/etc/grub"] 判断是不是一个文件夹

文件状态的检测
存在及识别:
-e 目标是否存在
-d 是否为目录
-f 是否为文件

权限的检测:
-r 读
-w 写
-x 执行
所有者w例外

整数值比较、字串匹配
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-ge 大于或等于
-le 小于或等于

who | wc -l 用户数目
[ $(who | wc -l) -eq 2] && echo yes 判断用户数是否为2

= 两个字符串相同
!= 两个字符串不相同

[ &USER = "root" ] echo yes 判断目前用户是否为root

第七课:

使用if判断结构:

一、程序流控制
单分支:
if
then
fi

双分支:
if
then
else
fi

if
then
elif
then
else
fi

判断目标主机是否存活:
#!/bin/bash
ping -c 3 -i 0.2 -W3 $1 &> /dev/null
if [ $? -eq 0 ]
then
echo "host $1 is up"
else
echo "'host $1 is down"
fi

执行:
./chkhost.sh 192.168.*.*

第八课:

for var in list
do
command
done

eg:
#! /bin/bash
for i in $(cat /root/users.txt)
do
useradd $i
echo "123456" | passwd --stdin $in
chage -d 0 $i
done

eg:
#! /bin/bash
IP_PRE = "192.168.4."
for IP in $(seq 1 5)
do
ping -c 3 -i 0.2 -W 3 $[IP_PRE]$IP &> /dev/null
if [ $? -eq 0 ] ; then
echo "$[IP_PRE]$IP is up"
else
echo "$[IP_PRE]$IP is down"
fi
done

第九课:

case var in
mode1)
command1
;;
mode2)
command2
;;
......
*)
command
esac

eg:
#! /bin/bash
read -p "enter" KEY
case "$KEY" in
[a-z]|[A-Z])
echo "letter"
;;
[1-9])
echo "digit"
;;
*)
echo "else"
esac

eg:
[user]# cat /etc/init.d/sleepd
#! /bin/bash
# chkconfig: - 90 10
# description: daemon script for sleepd server
case "$1" in
start)
sleep 3600 &
;;
stop)
pkill -x "sleep"
;;
*)
echo ""
esac
[user]# chkconfig --add sleep

第十课:

awk文本处理
awk 'pattern {operation}' file1 file2 ......
NR 当前行序号
FS 字段分隔, 缺省为空格或制表符
$n 当前行的第n个字段
$0 当前行的所有字段内容

eg:
awk 'NR==1,NR==3 {print}' file (输出1-3行)
awk '(NR==1)||(NR==3) {print}' file (输出1和3行)
awk '/2/ {print}' file (正则表达式)
awk 'NR==2,NR==3 {print $1,$3}'
awk -F. (制定分隔符)

第十一课:

sed(stream editor)
输出处理结果,整个文件,不改变原文件

sed '[address1[, address2]]op;command2' file1 file2
-n 只输出修改相关的部分
-i 直接修改文件内容

p print
n next
d delete
!d delete others
s substitute
a append

sed -n 'p;n' file 隔行输出
sed -n '/w2k8/,$p' file $表示最后一行
sed -n '/\<This\>/' file <>表示单词
sed '2, 3d' file
sed '3, 4s/origin/new/g' file (g:global)
sed '1, 2s/^/#/g' file 注释

网易公共课Linux Shell脚本应用学习笔记相关推荐

  1. Linux Shell脚本编程学习笔记和实战

    http://www.1987.name/141.html shell基础 终端打印.算术运算.经常使用变量 Linux下搜索指定文件夹下特定字符串并高亮显示匹配关键词 从键盘或文件里获取标准输入 [ ...

  2. shell脚本编程学习笔记6(xdl)——字符串截取命令

    shell脚本编程学习笔记6--字符串截取命令 1,cut命令 [root@localhost ~]# cut [选项] 文件名-f 列号,表示提取第几列-d 分隔符,按照指定的分隔符分割列注意:默认 ...

  3. shell脚本编程学习笔记1(xdl)——shell基础与Bash基本功能()

    shell脚本编程学习笔记1--shell基础与Bash基本功能 1,简介: 1,Shell就是一个命令行解释器,用以连接输入设别和内核. 2,Shell是解 释执行的脚本语言,在Shell中可以直接 ...

  4. shell脚本编程学习笔记2(xdl)——Bash变量

    shell脚本编程学习笔记2--Bash变量 1,变量简介 1,计算机内存单元2,设置规则字母数组下划线组成,不能以数字开头Bash中,默认类型字符串型,变量类型可修改 2,Bash变量规则 1,变量 ...

  5. LINUX SHELL脚本攻略笔记[速查]

    LINUX SHELL脚本攻略笔记[速查] Linux Shell脚本攻略笔记[速查] 资源 shell script run shell script echo printf 环境变量和变量 pgr ...

  6. Linux shell脚本基础学习

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

  7. Linux shell脚本基础学习详细介绍(完整版)一

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

  8. Linux shell脚本基础学习详细介绍(完整版)2

    详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续 ...

  9. Linux shell脚本基础学习详细介绍(完整版)

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

最新文章

  1. 卡巴循环30天不限次数循环试用工具
  2. Spring Cloud Alibaba到底坑不坑?反正是解放了部分使用的繁琐!
  3. mysql校对规则设计编码命令
  4. mysql id自动递增两个_浅析Mysql索引数据结构演变,让你一看就懂
  5. php开发电商项目的技术,[项目实战] php电商开发基本功课程 电商后台实战开发视频教程 共6章...
  6. gitt之设置和取消代理
  7. java代码删除本地文件_java程序实现删除本地文件
  8. - 动规讲解基础讲解五——最长公共子序列问题
  9. svn客户端(Windows版本)
  10. 基于SSH的房屋租赁管理系统
  11. G-sensor概述及常用概念整理【转】
  12. vue 项目 build 之后dist文件下的index.html不显示内容,并且报 Failed to load resource: net::ERR_FILE_NOT_FOUND 错误
  13. c++ de-mangle 反编译器命名工具:c++filt
  14. html页面获取map的值,vue获取map集合中的key、value值
  15. 发字的楷书写法图片_成年人要想练字,应该先练楷书还是行书?
  16. 北大计算机图灵班,北京大学举办图灵班开班仪式
  17. 调研人工智能技术在无人驾驶汽车中的应用
  18. 个人站长应该怎么设置服务器才可以无视CC攻击
  19. Python 三.创建第一个scrapy爬虫项目(分布式爬虫打造搜索引擎)
  20. 利用ffmpeg与PotPlayer将双路图片转换为红蓝视频

热门文章

  1. 微信小程序之图书借阅系统(含源码+论文+答辩PPT等)
  2. python里面pop,remove和del 三者的用法区别
  3. Java程序员被逼迫,挣着卖白菜的钱,操着卖白粉的心,2021年Java常见面试题
  4. html5怎样兼容ie浏览器版本,HTML5 兼容IE浏览器
  5. JS 原生自动加载的大数据表格探索
  6. shell查mysql_通过shell检查mysql主机和数据库,生成html报表的脚本
  7. 传奇开服架设要具备什么条件
  8. Linux系统运维之keepalived的工作原理和裂脑
  9. EED电力设计端(电网规划)
  10. 华为百度挺进“云手机”!5G时代的超级入口来了