2)环境变量:这种变量中主要保存的是和系统操作环境相关的数据。

export 变量名=变量值    设置环境变量

env                     查询变量

unset变量名             删除变量

pstree                   查询shell继承树

◆PATH:命令执行路径

◆PS1:定义系统提示符的变量

\d:显示日期,格式为“星期月日”

\h:显示简写主机名。如默认主机名“localhost”

\t:  显示24小时制时间,格式为“HH:MM:SS”

\T:  显示12小时制时间,格式为“HH:MM:SS”

\A:  显示24小时制时间,格式为“HH:MM”

\u:  显示当前用户名

\w:  显示当前所在目录的完整名称

\W:  显示当前所在目录的最后一个目录

#:  执行的第几个命令

\$:提示符。如果是root用户会显示提示符为“#”,如果是普通用户会显示提示符为“$”

3)位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。

位置参数变量

作用

$n

n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10}.

$*

这个变量代表命令行中所有的参数,*把所有的参数看成一个整体

$@

这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待

$#

这个变量代表命令行中所有参数的个数

◆read [选项] [变量名] 接受键盘输入

选项:

-p“提示信息”:在等待read输入时,输出提示信息

-t秒数:read命令会一直等待用户输入,使用此选项可以指定等待时间

-n字符数:read命令只接受指定的字符数,就会执行

-s:隐藏输入的数据,适用于机密信息的输入

4)预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。

预定义变量

作用

$?

最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确

$$

当前进程的进程号(PID)

$!

后台运行的最后一个进程的进程号(PID)

6、数值运算与运算符

1)declare声明变量类型

declare [+/-][选项] 变量名

选项:

:给变量设定类型属性

十:取消变量的类型属性

-i:将变量声明为整数型(integer)      declare -i c=$a+$b

-x:将变量声明为环境变量

-p:显示指定变量的被声明的类型

2) expr或let数值运算工具

d=$(expr $a+$b)      d的值是a和b的和。注意“+”号左右两侧必须有空格

3)S((运算式))或$[运算式]

f=$(($a+$b))

g=$[ $a+$b]

4)运算符

7、变量测试与内容替换

8、环境变量配置文件

环境变量配置文件中主要是定义对系统的操作环境生效的系统默认环境变量

(/etc/profile、/etc/profile.d/*.sh、家/.bash profile、家/.bashrc、/etc/bashrc)

1)source命令,使配置文件直接生效

source配置文件 或 . 配置文件

9、正则表达式与通配符

◆正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达式。

◆通配符用来匹配符合条件的文件名,通配符是完全匹配。1s、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配了。

10、字符截取命令

1)grep 在文件中搜寻字串匹配的行并输出

英文原意:global search regular expression(RE) and print out the line

语法:grep [-i/-v] [指定字串] [文件]

常用选项

-i:不区分大小写

-v:排除指定字串所在行

2)cut  截取文件的第几列,默认分隔符是制表符

语法:cut [选项] 文件名

选项:

-f列号:提取第几列

-d分隔符:按照指定分隔符分割列

3)awk

◆格式:awk ‘条件1{动作1} 条件2{动作2}.…’ 文件名

◆条件(Pattern):一般使用关系表达式作为条件

x>10判断变量x是否大于10,关系成立后才执行动作

x>=10大于等于

x<=10小于等于

$n 代表第n列,$0代表这一行

BEGIN{动作} 在程序执行前先执行这个动作

END{动作} 在程序执行后再执行这个动作

◆在awk命令的输出中支持print和printf命令

print会在每个输出之后自动加入一个换行符(Linux默认没有print命令)

printf是标准格式输出命令。如果需要换行,需要手工加入换行符\n

◆动作(Action):

格式化输出(print、printf)

流程控制语句

FS:内置对象,指定分隔符

4)sed命令

sed是一种几乎包括在所有UNIX平台(包括Linux)的轻量级流编辑器。sed主要是用来将数据进行选取、香换、删除、新增的命令。

语法:sed [选项] ‘[动作]’ 文件名

选项:

-n:一般sed命令会把所有数据都输出到屏幕,如果加入此选择,则只会把经过sed命令处

理的行输出到屏幕。

-e:允许对输入数据应用多条sed命令编辑

-i:用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出

动作:

a:追加,在当前行后添加一行或多行。添加多行时,除最后一行外,每行末尾需要用“\”代表数据未完结。 “2a hello” 在第二行后面追加hello

c:行替换,用c后面的字符串替换原数据行,替换多行时,除最后一行外,每行末尾需用“\”代表数据未完结。    “2c  helloword” 将第二行替换为新行

i:插入,在当前行前插入一行或多行。插入多行时,除最后一行外,每行末尾需要用“\”代表数据未完结。   “2i hello” 在第2行前插入一行

d:删除,删除指定的行。“2,4d” 删除第2到第4行

p:打印,输出指定的行。“2p” 输出第二行

s:字串替换,用一个字符串替换另外一个字符串。格式为“行范围s/旧字串/新字串/g”(和vim中的替换格式类似)。   “3s/aa/bb/g” 将第3行的aa改成bb

11、字符处理命令

1)排序命令sort

语法:sort [选项] 文件名

选项:

-f:忽略大小写

-n:以数值型进行排序,默认使用字符串型排序

-r:反向排序

-t:指定分隔符,默认是分隔符是制表符

-k n[,m]:按照指定的字段范围排序。从第n字段开始,m字段结束(默认到行尾)

2)统计命令wc

语法:wc[选项]文件名

选项:

-l:只统计行数

-w:只统计单词数

-m:只统计字符数

12、判断命令

1)判断格式

◆ test 判断     test -e /root/install.log

◆[ 判断 ]       [ -e /root/install.log ]

2)按照文件类型进行判断

3)按照文件权限进行判断

4)两个文件之间进行比较

5)两个整数之间比较

6)字符串的判断

7)多重条件判断

13、流程控制语句

1)if语句

◆if语句使用fi结尾,和一般语言使用大括号结尾不同

[条件判断式]就是使用test命令判断,所以中括号和条件判断式之间必须有空格

then后面跟符合条件之后执行的程序,可以放在[]之后,用“;”分割。也可以换行写入,就不需要“;”了

◆单分支if条件语句

if[ 条件判断式 ];then

程序

fi

或者

if[ 条件判断式 ]

then

程序

fi

◆双分支if条件语句

if[ 条件判断式 ]

then

条件成立时,执行的程序

else

条件不成立时,执行的另一个程序

fi

◆多分支if条件语句

if[ 条件判断式1 ]

then

当条件判断式1成立时,执行程序1

elif[ 条件判断式2 ]

then

当条件判断式2成立时,执行程序2

……省略更多条件

else

当所有条件都不成立时,最后执行此程序

fi

2)case多分支判断语句

case s变量名in

"值1")

执行程序1

;;

"值2")

执行程序2

;;

…省略其他分支…

*)

如果变量的值都不是以上的值,则执行此程序

;;

esac

3)循环

◆   foreach

for 变量in值1值2值3..

do

程序

done

◆普通for

for((初始值;循环控制条件;变量变化))

do

程序

done

◆while

while [条件判断式]

do

程序

done

◆until:只要条件判断式不成立则进行循环。一旦循环条件成立,则终止循环。

until [条件判断式]

do

程序

done

Linux 第十五天的更多相关文章

  1. 攻城狮在路上(叁)Linux(十五)--- 文件与目录的默认权限与隐藏权限

    一.文件默认权限:umask <==需要被减去的权限. 1.umask指的是当前用户在新建文件或者目录时的默认权限,如0022; 2.默认情况下,用户创建文件的最大权限为666; 创建目录的最大 ...

  2. Linux Shell系列教程之(十五) Shell函数简介

    本文是Linux Shell系列教程的第(十五)篇,更多Linux Shell教程请看:Linux Shell系列教程 函数可以将一个复杂功能划分成若干模块,从而使程序结构更加清晰,代码重复利用率更高 ...

  3. 十五个最常用Linux命令行 - imsoft.cnblogs

    众多Linux管理员在使用Linux的时候会经常使用到很多Linux命令行,其中有绝大部分不是经常使用到的.在本文中主要为大家总结了经常使用的十五个最常用Linux命令行,希望对刚刚接触Linux命令 ...

  4. 《Linux命令行与shell脚本编程大全》 第十五章 学习笔记

    第十五章:控制脚本 处理信号 重温Linux信号 信号 名称 描述 1 HUP 挂起 2 INT 中断 3 QUIT 结束运行 9 KILL 无条件终止 11 SEGV 段错误 15 TERM 尽可能 ...

  5. Linux学习之CentOS(十五)----磁盘管理之 启动挂载(转)

    启动挂载 /etc/fstab 及 /etc/mtab 刚刚上面说了许多,那么可不可以在启动的时候就将我要的文件系统都挂好呢?这样我就不需要每次进入 Linux 系统都还要在挂载一次呀!当然可以啰!那 ...

  6. Linux时间子系统之(十五):clocksource

    专题文档汇总目录 Notes:clocksource基本概念,struct clocksource详解:注册和注销clocksource:内核如何选取clocksource:clocksource相关 ...

  7. 《linux就该这么学》第十五节课:第14,15章,dhcp服务和邮件系统

    (借鉴请改动) 13章收尾 13.6.分离解析技术    1.在主配置文件中改两个any         2.编辑区域配置文件,写入acl,使用match匹配                      ...

  8. centos Linux系统日常管理2 tcpdump,tshark,selinux,strings命令, iptables ,crontab,TCP,UDP,ICMP,FTP网络知识 第十五节课

    centos  Linux系统日常管理2  tcpdump,tshark,selinux,strings命令, iptables ,crontab,TCP,UDP,ICMP,FTP网络知识 第十五节课 ...

  9. 我的MYSQL学习心得(十五) 日志

    我的MYSQL学习心得(十五) 日志 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

随机推荐

  1. Linux 下配置 nginx + 两个 tomcat 的负载均衡

    前提:已经安装了 nginx 和两个 tomcat 1.修改 nginx.conf 配置文件    1)在 http{} 节点之间添加 upstream 配置 2)修改 nginx 的监听端口,默认是 ...

  2. nagios监控mysql及邮件报警

    1.使用默认监控命令check_http命令+相关的参数来实现,如下: 在command.cfg添加如下关键词监控命令:check_http_word,参数解析:-I指定IP或者主机名,-u指定URL ...

  3. python的apidoc使用

    一.apidoc的安装 npm install apidoc -g -g参数表示全局安装,这样在哪儿都能使用. 二.apidoc在python接口代码中的使用 def index(): "& ...

  4. C++/CLI

    [C++/CLI] A C++/CLI application or component uses extensions to C++ syntax (as allowed by the C++ Sp ...

  5. Java Web解决跨域请求

    要知道跨域请求就要先了解同源策略,那么什么是同源?什么是不同源?简单来说就是,如果两个资源,包括HTML页面.JavaScript脚本.css样式,对应的协议.域名和端口完全相同,那么这两个资源就是同 ...

  6. 音视频处理概要 markdown

    最近要想办法把录制的音视频进行拼接. 比方说此次录制的视频有三段,通过高清直播编码器录制,录制下的标准为h.264 直接用ffmpeg简单拼接,音频会丢失,所以有了此次解决方案(有可能会繁琐,简单方案 ...

  7. [Solution] 985. Sum of Even Numbers After Queries

    Difficulty: Easy Question We have an array A of integers, and an array queries of queries. For the i ...

  8. java、asp.net 通用分页码函数

    <script type="text/javascript"> $(document).ready(function(){ ajaxGetPaging(1); }); ...

  9. innodb 体系结构(后台进程)

    一.后台进程(innodb 1.0.x以前的) 1.master thread master thread具有最高的线程优先级别,其内部由多个循环(loop)组成:主循环(loop).后台循环(bac ...

  10. JS-给对象动态添加属性

    var obj = {};//用来存放获取到所填写的信息 btn.onclick = function(){ var city = input_city.value; var num = input_ ...