变量的分类
本地变量: 只对本地有效,对子shell无效 // /bin/bash 打开子shell
环境变量: 对本地和子shell都有效
export A=3
或
A
export A
export //查看当前系统环境变量
printenv //类似export
env //显示当前环境变量
特殊变量:$?
ehco $? //上一个命令是否执行成功 0代表成功 1-255失败
位置参数变量: 需要用户通过命令引用,很有用的变量
$1,$2,$3 超过10时建议加{} ${11}
算数运算:
$[] //echo “$[$A+$B]”
$(( )) //echo "(($A+$B))"
写一个脚本,完成以下功能:
1、传递两个整数给脚本,让脚本分别计算并显示这两个整数的和、差、积、商。
\ //避免展开变量 echo "Your Salary : \$1" //该命令并不会显示$1的值,而是显示$1
BASH的命令别名
alias
例如将cls设置为lear方便使用
alias cls=clear
unlias cls
alias cdnet='cd /etc/sysconfig/network' //有空格用''
全局变量:/etc/profile, /etc/profild.d/*, /etc/bashrc 对所有用户都作用
/etc/bashrc //可设置alias对所有用户有效
/etc/profild.d/* //将profile分成片便于管理
/etc/profild //设置全局有效变量,永久有效
export DFSF=dfsf //需注销才生效
source /etc/profile //重读profile,可立刻生效,不建议
局部变量: ~/.bash_profile, ~/.bashrc ~/.bash_logout 只对当前用户有效
profile类:
1.设置环境变量
2.运行用户登录时要执行的一些命令
bashrc类
1.设置别名
2.设定本地变量
-------------------------------------------------------------------------------------------------
shell分类:
1.交互式登录式shell
用户登录进去输入命令
过程:
/etc/profile --> /etc/profile.d/* --> ~/.bash_profile --> /etc/bashrc
2.非登录式shell
脚本执行过程中,系统自动运行,不需要用户登录输入命令
过程:
~/.bashrc --> /etc/bashrc --> /etc/profile.d/×
——————————————————————————————————————————————————
输入/输出重定向,管道 输出流
I/O重定向分为:
标准输入 :/dev/stdin, 0, KEYBOARD,< //平常可以不输入
标准输出 :/dev/stdout, 1, MONITOR, > //命令正常执行 cat > /tmp/ls1.out
错误输出 :/dev/stderr, 2, MONITOR, 2>//命令错误执行 cat 2> /tmp/ls2.out
//lessss &> /tmp/ls3.out //&> 合并>和2>
例如
ls /var >> /tmp/var.out 2>> /tmp/var.err //正确的信息存在var.out,错误的在var.err
其他的重定向
> //覆盖输出重定向
>> //追加输出重定向
set -C //开启避面覆盖重定向
set +C //关闭
>| //强制覆盖
自定义输出重定向
exec 3> /tmp/myout.out //实现多次重定向到一个文件,避免多次打开关闭一个文件,提升脚本执行效率
>> //追加
< //读入
ls /var >&3
exec 3>&- //关闭文件
写一个脚本:
1、设定变量FILE的值为/etc/passwd
2、使用循环读取文件/etc/passwd的第2,4,6,10,13,15行,并显示其内容;(提示:LINE=`head -2 /etc/passwd | tail -1`可以取得第2行)
3、把这些行保存至/tmp/mypasswd文件中
————————————————————————————————————————————————————————————————————————
管道 | : 把第一个命令的输出送到第二个命令处理
echo "123456" | passwd --stdin rehat //这个命令将123456交给passwd来处理,--stdin参数会使123456立刻生效成为用户redhat的密码
ls /etc | tee /tmp/ls.out | less //tee可以把输出流保存到指定文件 并交给下一个命令处理
多个命令的输出都需要保存至同一个文件
command >> a.out
command >> a.out
/dev/nullnull 指空文件,任何被放到Null的数据都被删除,在linux里是一个常用的命令,可以轻松去除输出结果,不过要小心使用
比如:ls/var/ttt&>/dev/null //无论结果如何,都输出到null里,不会显示结果
——————————————————————————————————————————————————
程序执行流
分类:
顺序执行
选择分支
循环执行 //这一次只学习for循环
for I in LIST ; do //LIST是这个循环的条件,也叫做列表,可以是字符,数字,表达式
statement1
statement2
done
列表分类:
简单列表: 1 2 3 4
复杂列表: This is TOM`s cat
命令 : `ls /var`
通配符 : for I in /var/*
例如:
for LINE in `cat /etc/passwd`: dao
而外说明
IFS=$'\n' //for 循环只是别换行符
写一个脚本:添加10个用户user1-10
文本处理类命令cut -d: -d""
//指定分隔符:或"" -f //指定第几段
grep与正则表达式
grep: 全面搜索正则表达式并打印出来
grep,egrep,fgrep
grep [options] "PATTERN“ file... //grep的用法
-i //不区分大小写
-v //显示没有匹配到模式的行
-n //显示匹配的行在原文中所处的行号
-An //显示后n行
-Bn //显示前n行
-Cn //上下文,显示上线n行
--color //把匹配的高亮显示
模式
正则表达式,元字符 re
^ //锚定行首 ^love love必须在行首
$ //锚定行尾
. //用于匹配任意单个字符
* //root* *前的t可以出现0次或任意次
?
[] //匹配一组字符中任意一个
\
\< //词首定位符
\> //词尾定位符
x\(m)\ //x精确出现m次
x\(m,)\ //x至少出现m次
x\(m,n) //x至少出现m次,最多m次
\(...)\ //任意长度的任意字符
grep -E = egrep
+ 相当于\{1,\}
? 相当于\{0,1}\
| 或
’love|hate‘ e或h谁出现都行
grep练习
————————————————————————————————————————————————————————————————————————
短路操作符
&& //与运算,当你需要判断使用两条命令是,使用&&: 如果第一个运行结果错误,那么继续运行第二个命令,结果为第二个命令,
如果第一个命令正确,那么将不会在运行第二个命令
1 && ? = ?
0 && ? = 0
|| //或运算,使用|| : 如果第一个命令结果错误,那么结果直接为第一个命令,
如果第一个命令结果正确,那么结果为第二个命令
1 || ? = 1
0 || ? = ?
##结合/dev/null的使用,将会发挥很重要的效果
例如 cat /tmp/aaa >> /tmp bbb || cat /tmp/aaa &>/dev/null
##这个命令,如果aaa不存在的话,将会直接将结果输出到/dev/null下,而不会占用系统资源输出错误信息
写一个脚本:
1、添加10个用户user1到user10,但要求只有用户不存在的情况下才能添加;
编程语言:
脚本语言:bash,perl(语言学家),python(灵活,简洁),ruby,php
以源程序的方式存在,执行前不需要编译,而是靠一个解释器执行
维护简便
执行效率差
编译型语言:
编辑-->编译-->链接-->运行
脚本:命令的堆砌
#!/bin/bash //第一行标准 shebang
#
nano myscript.sh
chmod +x myscript.sh
./myscript.sh //执行脚本
分享到:
相关推荐
正则表达式基础学习笔记!!!从基础开始正则表达式基础学习笔记!!!
正则表达式学习笔记正则表达式学习笔记正则表达式学习笔记正则表达式学习笔记正则表达式学习笔记正则表达式学习笔记
Java正则表达式学习笔记,比较基础,适合初学者
正则表达式 txt文档 详细的总结正则表达式!
正则表达式的基本语法,主要用于javascript开发时看正则表达式方便点
北风网正则表达式详细讲解学习笔记,讲解的比较基础适合初学者学习。
以前学习了正则表达式,总结一下查找起来也很方便,包括各种常用字符串的验证:如邮箱等
学习笔记:Python爬虫正则表达式.doc
根据老男孩老师视频教程《Linux正则表达式实战》的精彩讲解,进行了学习笔记记录,主要讲解Linux三剑客中的grep用法、捎带sed的讲解笔记。 学习笔记进行了规整,相信Linux运维工作者能够一目了然笔记的内容。 (1...
学习linux的笔记,发到博文了,鉴于文档方便保存和查阅,发出来,免费的哈 博文来自http://blog.csdn.net/wklken,共12篇,类似手册,可快速练习和查阅,容易上手 文档列表: Linux笔记——vim常用操作及扩展补充...
本文档是本人在学习正则表达式时所做笔记 介绍并解析了正则表达式 适合未学习过或者复习者使用 文末附加了常用的正则表达式表
javascript正则表达式入门学习实例入门
好东西才与大家分享!这是博客园一位老师的正则表达式教学笔记,很精炼的阐述,看了你一定不后悔……
基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码....
1. Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来(匹配到的标红)。 grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有...
python正则表达式的学习资料,内有图文,详细的讲述了正则表达式的机理
正 则 表 达 式 学 习 笔 记