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. Jenkins问题笔记

    1.启动docker容器权限不足 通过如下命令启动docker容器后,使用命令"docker logs -f jenkins"查看jenkins容器日志, docker run - ...

  2. MongoDB基础入门

    1,安装 下载解压安装包 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.5.tgz tar -xvzf mongodb- ...

  3. MAC vim安装gruvbox主题

    gruvbox是一款优秀的vim配色方案,但是却不是vim自带的配色方案,这里记录一下安装过程. gruvbox官网:https://github.com/morhetz/gruvbox gruvbo ...

  4. 实现CNN卷积神经网络

    以上是模型,下面是代码: import tensorflow as tf import numpy as np import time from tensorflow.examples.tutoria ...

  5. Pecan中api-paste.ini的解析

    在pecan中存在一个请求配置文件,定义服务启动程序app和过滤器filter,例如: [pipeline:main] pipeline = request_id sizelimit api-serv ...

  6. 下拉js的实现

    这个JS是出自一个浴室柜网站 $(document).ready(function(){ $(".side_nav_3").hover(function() { $(this).f ...

  7. Java虚拟机运行时数据区域及垃圾回收算法

    程序计数器 记录正在执行的虚拟机字节码指令的地址(如果正在执行的是本地方法则为空). Java 虚拟机栈 每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表.操作数栈.动态链接.方法出口 ...

  8. jasper打印文件出现空白页面

    EG:打印文件结果打印出一片空白 原因:使用了null的数据源而不是JREmptyDataSource 以下为正确代码 public <T> List<JasperPrint> ...

  9. CP IPS功能测试

    测试环境:CP 15000硬件 测试拓扑: Step1:重新安装Check_Point_R80.10_T479_Gaia并且打补丁 Step2:初始化CP并且部署模式为Management和Gatew ...

  10. 词根:sol = sun(太阳) 词根:sol = alone/single, whole/entire (单独的)

    词根:sol = sun(太阳) sol 这个词根有的书上如刘毅字典,刘洪波英文字根词源精讲等上面说来自拉丁语的sol(=sun),有的书如赢在单词上面说sol 来自拉丁语的solari,但不管哪种说 ...