网易公共课Linux Shell脚本应用学习笔记
第二课:
执行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脚本应用学习笔记相关推荐
- Linux Shell脚本编程学习笔记和实战
http://www.1987.name/141.html shell基础 终端打印.算术运算.经常使用变量 Linux下搜索指定文件夹下特定字符串并高亮显示匹配关键词 从键盘或文件里获取标准输入 [ ...
- shell脚本编程学习笔记6(xdl)——字符串截取命令
shell脚本编程学习笔记6--字符串截取命令 1,cut命令 [root@localhost ~]# cut [选项] 文件名-f 列号,表示提取第几列-d 分隔符,按照指定的分隔符分割列注意:默认 ...
- shell脚本编程学习笔记1(xdl)——shell基础与Bash基本功能()
shell脚本编程学习笔记1--shell基础与Bash基本功能 1,简介: 1,Shell就是一个命令行解释器,用以连接输入设别和内核. 2,Shell是解 释执行的脚本语言,在Shell中可以直接 ...
- shell脚本编程学习笔记2(xdl)——Bash变量
shell脚本编程学习笔记2--Bash变量 1,变量简介 1,计算机内存单元2,设置规则字母数组下划线组成,不能以数字开头Bash中,默认类型字符串型,变量类型可修改 2,Bash变量规则 1,变量 ...
- LINUX SHELL脚本攻略笔记[速查]
LINUX SHELL脚本攻略笔记[速查] Linux Shell脚本攻略笔记[速查] 资源 shell script run shell script echo printf 环境变量和变量 pgr ...
- Linux shell脚本基础学习
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...
- Linux shell脚本基础学习详细介绍(完整版)一
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...
- Linux shell脚本基础学习详细介绍(完整版)2
详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续 ...
- Linux shell脚本基础学习详细介绍(完整版)
Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...
最新文章
- 卡巴循环30天不限次数循环试用工具
- Spring Cloud Alibaba到底坑不坑?反正是解放了部分使用的繁琐!
- mysql校对规则设计编码命令
- mysql id自动递增两个_浅析Mysql索引数据结构演变,让你一看就懂
- php开发电商项目的技术,[项目实战] php电商开发基本功课程 电商后台实战开发视频教程 共6章...
- gitt之设置和取消代理
- java代码删除本地文件_java程序实现删除本地文件
- - 动规讲解基础讲解五——最长公共子序列问题
- svn客户端(Windows版本)
- 基于SSH的房屋租赁管理系统
- G-sensor概述及常用概念整理【转】
- vue 项目 build 之后dist文件下的index.html不显示内容,并且报 Failed to load resource: net::ERR_FILE_NOT_FOUND 错误
- c++ de-mangle 反编译器命名工具:c++filt
- html页面获取map的值,vue获取map集合中的key、value值
- 发字的楷书写法图片_成年人要想练字,应该先练楷书还是行书?
- 北大计算机图灵班,北京大学举办图灵班开班仪式
- 调研人工智能技术在无人驾驶汽车中的应用
- 个人站长应该怎么设置服务器才可以无视CC攻击
- Python 三.创建第一个scrapy爬虫项目(分布式爬虫打造搜索引擎)
- 利用ffmpeg与PotPlayer将双路图片转换为红蓝视频
热门文章
- 微信小程序之图书借阅系统(含源码+论文+答辩PPT等)
- python里面pop,remove和del 三者的用法区别
- Java程序员被逼迫,挣着卖白菜的钱,操着卖白粉的心,2021年Java常见面试题
- html5怎样兼容ie浏览器版本,HTML5 兼容IE浏览器
- JS 原生自动加载的大数据表格探索
- shell查mysql_通过shell检查mysql主机和数据库,生成html报表的脚本
- 传奇开服架设要具备什么条件
- Linux系统运维之keepalived的工作原理和裂脑
- EED电力设计端(电网规划)
- 华为百度挺进“云手机”!5G时代的超级入口来了