Tag Archives: shell

shell脚本中echo显示内容带颜色

shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e 格式如下: echo -e “\033[字背景颜色;文字颜色m字符串\033[0m” 例如: echo -e “\033[41;36m something here \033[0m” 其中41的位置代表底色, 36的位置是代表字的颜色c 注: 1、字背景颜色和文字颜色之间是英文的”” 2、文字颜色后面有个m 3、字符串前后可以没有空格,如果有的话,输出也是同样有空格 下面是相应的字和背景颜色,可以自己来尝试找出不同颜色搭配 例 echo -e “\033[31m 红色字 \033[0m” echo -e “\033[34m 黄色字 \033[0m” echo -e “\033[41;33m 红底黄字 \033[0m” echo -e “\033[41;37m 红底白字 \033[0m” … Continue reading

Posted in shell | Tagged | Leave a comment

shell变量类型

一、定义一个变量 shell在定义变量的时候,变量名与变量之间不能存在空格,这个大多数的语言的这个不同还是蛮大的,不过定义的规则就其他的语言定义的规则大致相同了。 使用变量 使用一个已经定义过的变量,只需要在变量的名字前加$,例如下面的例子。 在使用变量额时候 [root@n7 ~]# cat test.sh #!/bin/bash line=”hello world” echo $line echo ${line}  #可以的添加一个{},添加一个边界,更加的醒目,好理解 [root@n7 ~]# sh test.sh hello world hello world 1、只读变量 readonly 在变量的前面 添加readonly把变量定义为一个只能读取的变量,无法进行修改。 [root@n7 ~]# cat test2.sh #!/bin/bash name=”fencatn” readonly name name=”test” echo $name … Continue reading

Posted in shell | Tagged | Leave a comment

shell常用正则表达式实例

以下内容,转自:https://blog.csdn.net/sty124578/article/details/79408880 正则表达式的分类 1、基本的正则表达式(Basic Regular Expression 又叫Basic RegEx 简称BREs) 2、扩展的正则表达式(Extended Regular Expression 又叫Extended RegEx 简称EREs) 3、Perl的正则表达式(Perl Regular Expression 又叫Perl RegEx 简称PREs) shell常用正则表达式 “^\d+$” //非负整数(正整数 + 0) “^[0-9]*[1-9][0-9]*$” //正整数 “^((-\d+)|(0+))$” //非正整数(负整数 + 0) “^-[0-9]*[1-9][0-9]*$” //负整数 “^-?\d+$” //整数 “^\d+(\.\d+)?$” //非负浮点数(正浮点数 + 0) “^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$” … Continue reading

Posted in shell | Tagged | Leave a comment

shell正则表达式基础

正则表达式是操作字符串的一种逻辑公式,他使用事先定义好的特殊字符和这些特殊字符所构成的一种组合。正则表达式规定一些特殊语法,用来表示字符类、数量限定符和位置关系,然后用这些特殊语法和普通字符一起表示一个模式,这就是正则表达式(Regular Expression)。 如上面所说,正则表达式有三部分组成:字符类、数量限定符、位置限定符。下面详细举例说明。 1、字符类 . 匹配任意一个字符,比如下图所示food. 可以匹配fooda foodabcd [ ] 匹配中括号中的任意一个字符,- 表示字符的范围,当然,你可以写任意字符。比如下图所示的[a-z]可以匹配a到z的所有字母 ^ 可以匹配除了括号中的字符外的任意字符 [[:xxx:]]是grep工具预定义的一些命名字符,可以灵活使用   2、数量限定符 比如说,合法的邮箱地址,每一部分都可以有一个或者多个x字符,合法的IP地址每一部分可以有1-3个字符,等等 ?紧跟在?前面的单元应匹配0次或者1次 +紧跟在+前面的单元应匹配1次或者多次 *紧跟在*前面的单元应匹配0次或者多次 {N}紧跟在{N}前面的单元应精确匹配N次,例如[1-9][0-9]{2}匹配100-999的整数 {N,}紧跟在它前面的单元应至少N次,例如[1-9][0-9]{2}匹配3位以上的整数 {,M}紧跟在它前面的单元应最多匹配M次,例如[0-9]{,2}表示最多匹配1次数字 {N,M}紧跟在它前面的单元匹配至少N次,最多M次,例如[0-9]{1,3}表示0-9数字至少匹配1次,最多匹配3次   3、位置 限定符 位置限定符(Anchor):描述各种字符类以及普通字符之间的位置关系,例如邮件地址分三部分,用普通字符@和.隔 开,IP地址分四部分,用.隔开,每一部分都可以用字符类和数量限定符描述。 ^匹配行首的位置 $匹配行末的位置 \<匹配单词开头的位置 \>匹配单词词尾的位置 匹配某个单词 \b匹配单词的开头或者结尾的位置 \B匹配非单词开头或者结尾的位置   4、特殊字符 \转义字符,普通字符转为特殊字符,特殊字符转为普通字符。比如我们上面看到的\<就代表开头,因为<是个普通字符;而\.就是把特殊字符.转为普通字符的. … Continue reading

Posted in shell | Tagged | Leave a comment

Shell中将标准错误标准输出重定向到同一个文件的两种方式

在Shell中,标准错误写法为 2>, 标准输出为 1> 或者 >。如要要将标准输出和标准错误合二为一,都重定向到同一个文件,可以使用下面两种方式: 方式一: > out.txt 2>&1 [root@localhost ~]# { time ls /etc; } > out.txt 2>&1 方式二: &> out.txt [root@localhost ~]# { time ls /etc; } &> out.txt

Posted in LinuxBasic | Tagged | Leave a comment

设置开机自启服务、脚本的方法

1、添加开机自启服务 我这里以docker 服务为例,设置如下两条命令即可: 1# systemctl enable docker.service #设置docker服务为自启动服务 相当于我们的 chkconfig docker on 2# systemctl start docker.service #启动docker服务 2、添加开机自启脚本 在centos7中增加脚本有两种常用的方法,以脚本StartTomcat.sh为例: #!/bin/bash # description:开机自启脚本 /usr/local/tomcat/bin/startup.sh #启动tomcat 方法一: 1、赋予脚本可执行权限(/opt/script/StartTomcat.sh是你的脚本路径) # chmod +x /opt/script/StartTomcat.sh 2、打开/etc/rc.d/rc.local文件,在末尾增加如下内容 echo “/opt/script/StartTomcat.sh” >> /etc/rc.d/rc.local 3、在centos7中,/etc/rc.d/rc.local的权限被降低了,所以需要执行如下命令赋予其可执行权限 chmod +x /etc/rc.d/rc.local 方法二: … Continue reading

Posted in LinuxBasic | Tagged | Leave a comment

linux buff/cache过大,如何清理,附清理脚本

在Linux下经常会遇到buff/cache内存占用过多问题,尤其是使用云主机的时候最严重,由于很多是虚拟内存,因此如果buff/cache占用过大的,free空闲内存就很少,影响使用; 通常内存关系是: 普通机器:total=used+free 虚拟机器:total=used+free+buff/cache 现在给大家演示一下,我找了台虚拟机,当然,现在的buff/cache不是很大 在操作之前,要先sync一下,刷新下缓存,避免出现意外(描述:sync 命令运行 sync 子例程。如果必须停止系统,则运行sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-Node、已延迟的块 I/O 和读写映射文件) 然后使用命令清除cache缓存 通过3次清除,可以看到内存增加了 这个1、2、3分别是什么意思,自己看官方文档吧 Writing to this will cause the kernel to drop clean caches, dentries and inodes from memory, causing that memory to become free. To free pagecache: * echo 1 > /proc/sys/vm/drop_caches To free dentries and inodes: * echo 2 > /proc/sys/vm/drop_caches To free pagecache, dentries and inodes: * echo 3 > /proc/sys/vm/drop_caches As this is a non-destructive operation, and dirty objects are notfreeable, the user should run “sync” first in order to make sure allcached objects are freed. This tunable was added in 2.6.16. 当然,再拓展一下,你也可以写个自动化的脚本,更有意思 1、编写shell定时任务脚本freemem.sh #! /bin/sh used=`free -m | awk ‘NR==2’ … Continue reading

Posted in LinuxBasic | Tagged | Leave a comment

Linux中内存buffer和cache的区别

简单说,buffer就是高速缓存,读写数据(块)的数据缓冲区;cache是读取数据(页)的缓冲区,在CPU上面 buffer 与cache 的区别 A buffer is something that has yet to be “written” to disk. A cache is something that has been “read” from the disk and stored for later use. 更详细的解释参考:Difference Between Buffer and Cache 对于共享内存(Shared memory),主要用于在UNIX 环境下不同进程之间共享数据,是进程间通信的一种方法,一般的应用程序不会申请使用共享内存,笔者也没有去验证共享内存对上面等式的影响。如果你有兴趣,请参考:What … Continue reading

Posted in LinuxBasic | Tagged | Leave a comment