bin

shell入门-grep过滤-1

柔情痞子 提交于 2020-03-14 11:29:59
正则表达式,就是一个字符串。有一定的规律。我们用指定的字符串匹配一个指定的行。指定的字符串就是正则表达式。 正则表达式有这几个工具:grep egrep sed awk 命令:gerep 说明:过滤出指定的行 选项:--color 关键字有颜色 -n 显示行号 -c 显示一共出现了多少行 -v 取反 不包含指定字符的行 -A n n指数字 例如A2在有指定字符的行下面再显示两行 -B n n指数字 例如B2 在有指定字符的行上面再显示两行 -C n n指数字 例如C2 在有指定字符的行上面和下面再显示各两行 -r 显示目录里的所以带指定字符的行 -rh 显示目录里的所以带指定字符的行并不显示文件路径和文件名 grep 过滤出有root的行 [root@wangshaojun ~]# grep --color 'root' /etc/passwd root :x:0:0: root :/ root :/bin/bash operator:x:11:0:operator:/ root :/sbin/nologin grep -n [root@wangshaojun ~]# grep -n 'root' /etc/passwd 1:root:x:0:0:root:/root:/bin/bash 11:operator:x:11:0:operator:/root:/sbin/nologin

shell入门-grep2

♀尐吖头ヾ 提交于 2020-03-14 11:28:05
案例介绍 搜索关键词带‘root’的行 并输出行号 [root@wangshaojun ~]# cg -n 'root' 1.txt 1: root :x:0:0: root :/ root :/bin/bash 11:operator:x:11:0:operator:/ root :/sbin/nologin 搜索不带关键词‘nologin’的行,输出行号 [root@wangshaojun ~]# cg -vn 'nologin' 1.txt 1:root:x:0:0:root:/root:/bin/bash 6:sync:x:5:0:sync:/sbin:/bin/sync 7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 8:halt:x:7:0:halt:/sbin:/sbin/halt 26:wangshaojun:x:500:500::/home/wangshaojun:/bin/bash 搜索出包含数字的行 [root@wangshaojun ~]# cg '[0-9]' 1.txt root:x: 0 : 0 :root:/root:/bin/bash bin:x: 1 : 1 :bin:/bin:/sbin/nologin daemon:x: 2 : 2 :daemon:/sbin:/sbin/nologin ....

shell入门-sed-2替换功能

故事扮演 提交于 2020-03-14 11:27:24
sed的替换功能和vim语法挺像的 把1到10行的nologin替换成login [root@wangshaojun ~]# sed '1,10s/nologin/login/g' 1.txt root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/login daemon:x:2:2:daemon:/sbin:/sbin/login .... vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin $ 把1到10行的/sbin/nologin改成login [root@wangshaojun ~]# sed '1,10s/\/sbin\/nologin/login/g' 1.txt [root@wangshaojun ~]# sed '1,10s#/sbin/nologin#login#g' 1.txt [root@wangshaojun ~]# sed '1,10s@/sbin/nologin@login@g' 1.txt

编写Shell脚本的最佳实践

为君一笑 提交于 2020-03-14 03:43:10
from http://kb.cnblogs.com/page/574767/ 前言   由于工作需要,最近重新开始拾掇shell脚本。虽然绝大部分命令自己平时也经常使用,但是在写成脚本的时候总觉得写的很难看。而且当我在看其他人写的脚本的时候,总觉得难以阅读。毕竟shell脚本这个东西不算是正经的编程语言,他更像是一个工具,用来杂糅不同的程序供我们调用。因此很多人在写的时候也是想到哪里写到哪里,基本上都像是一段超长的main函数,不忍直视。同时,由于历史原因,shell有很多不同的版本,而且也有很多有相同功能的命令需要我们进行取舍,以至于代码的规范很难统一。   考虑到上面的这些原因,我查阅了一些相关的文档,发现这些问题其实很多人都考虑过,而且也形成了一些不错的文章,但是还是有点零散。因此我就在这里把这些文章稍微整理了一下,作为以后我自己写脚本的技术规范。   代码风格规范   开头有“蛇棒”   所谓shebang其实就是在很多脚本的第一行出现的以”#!”开头的注释,他指明了当我们没有指定解释器的时候默认的解释器,一般可能是下面这样: #!/bin/bash   当然,解释器有很多种,除了bash之外,我们可以用下面的命令查看本机支持的解释器: $ cat /etc/shells #/etc/shells: valid login shells /bin/sh /bin/dash

centos7安装activemq

纵然是瞬间 提交于 2020-03-14 02:20:46
activemq下载地址,http://activemq.apache.org/download.html,下载后解压,进入bin,直接运行 activemq start bin/activemq start INFO: Loading '/usr/local/activemq/bin/env' INFO: Using java '/usr/local/jdk8/bin/java' INFO: Starting - inspect logfiles specified in logging.properties and log4j.properties to get details INFO: pidfile created : '/usr/local/activemq/data/activemq.pid' (pid '3880') 默认端口是61616,可以查看端口有没被占用 [root@localhost init.d]# netstat -an|grep 61616 tcp6 0 0 :::61616 :::* LISTEN 端口61616加入防火墙,后台管理端口8161也加入防火墙 firewall-cmd --zone=public --add-port=61616/tcp --permanent firewall-cmd --zone=public --add-port

Shell脚本之awk详解

三世轮回 提交于 2020-03-13 14:08:18
一.基本介绍 1.awk: awk是一个强大的文本分析工具,在对文本文件的处理以及生成报表,awk是无可替代的。awk认为文本文件都是结构化的,它将每一个输入行定义为一个记录,行中的每个字符串定义为一个域(段),域和域之间使用分割符分割。 2.功能:流控制、数学运算、进程控制、内置的变量和函数、循环和判断 3.工作原理: awk 会把每行进行一个拆分,用相应的命令对拆分出来的“段”进行处理。 (1)行工作模式,读入文件的每一行,会把一行的内容,存到$0里 (2)使用内置的变量FS(段的分隔符,默认用的是空白字符),分割这一行,把分割出来的每个段存到相应的变量$(1-100) (3)输出的时候按照内置变量OFS(out FS),输出 (4)读入下一行继续操作 简单实例 [root@tx3 ~]# echo "this is a book" > awk.txt [root@tx3 ~]# awk '{print $2,$1,$3,$4}' awk.txt is this a book 4. Awk常用内置变量表: 1 $0 当前记录(作为单个变量) 2 $1~$n 当前记录的第n个字段,字段间由FS分隔 3 FS 输入字段分隔符 默认是空格 4 NF 当前记录中的字段个数,就是有多少列 5 NR 已经读出的记录数,就是行号,从1开始 6 RS 输入的记录他隔符默 认为换行符 7 OFS

Installing OpenJDK Manually

*爱你&永不变心* 提交于 2020-03-13 13:45:29
lwk@qwfys:~$ wget https://download.java.net/java/GA/jdk11/28/GPL/openjdk-11+28_linux-x64_bin.tar.gz -O /tmp/openjdk-11+28_linux-x64_bin.tar.gz lwk@qwfys:~$ sudo tar xfvz /tmp/openjdk-11+28_linux-x64_bin.tar.gz --directory /usr/lib/jvm lwk@qwfys:~$ rm -f /tmp/openjdk-11+28_linux-x64_bin.tar.gz lwk@qwfys:~$ sudo sh -c 'for bin in /usr/lib/jvm/jdk-11/bin/*; do update-alternatives --install /usr/bin/$(basename $bin) $(basename $bin) $bin 100; done' lwk@qwfys:~$ sudo sh -c 'for bin in /usr/lib/jvm/jdk-11/bin/*; do update-alternatives --set $(basename $bin) $bin; done' 来源: oschina 链接: https://my

SHELL基础语法

时光怂恿深爱的人放手 提交于 2020-03-13 11:37:11
Shell 脚本的第一行必须是如下格式: v #!/bin/sh 符号 #! 用来指定该脚本文件的解析程序。在上面 例子中使用 /bin/sh 来解析该脚本。当编辑好脚本 后,如果要执行该脚本,还必须使其具有可执行属性。 chmod +x filename 在 shell 编程中, 所有的变量都由字符串组成 , 并且不需要预先对变量进行声明 , 例 s1: #!/bin/sh #set variable a a="hello world" # print a echo "A is:" echo $a 有时候变量名很容易与其他文字混淆,比如: S13: num=2 echo "this is the $numnd“ 这并不会打印出 "this is the 2nd" ,而仅仅打印 "thisis the " ,因为 shell 会去搜索变量 numnd 的值,但是 这个变量时没有值的。可以使用花括号来告诉 shell 我 们要打印的是 num 变量: num=2 echo "this is the ${num}nd" 这将打印: this is the 2nd 默认变量 $# : 传入脚本的命令行参数个数 v $* : 所有命令行参数值,在各个参数值之间 留有空格 v $0 : 命令本身( shell 文件名) v $1 : 第一个命令行参数 v $2 : 第二个命令行参数 S2:

在centos中使用rpm安装包安装jenkins

半世苍凉 提交于 2020-03-13 10:08:31
jenkins下载:http://pkg.jenkins-ci.org/redhat/ 下载rpm包到本地 在linux下使用rpm包安装命令: sudo rpm -ih jenkins-1.562-1.1.noarch.rpm [root@bogon Desktop]# sudo rpm -ih jenkins-2.9-1.1.noarch.rpm warning: jenkins-2.9-1.1.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID d50582e6: NOKEY ########################################### [100%] ########################################### [100%] 自动安装完成之后: /usr/lib/jenkins/jenkins.war WAR包 /etc/sysconfig/jenkins 配置文件 /var/lib/jenkins/ 默认的JENKINS_HOME目录 /var/log/jenkins/jenkins.log Jenkins日志文件 安装完成之后启动jenkins 启动命令: sudo service jenkins start [root@bogon jenkins]# sudo

JDK替换掉系统自带的gij编译工具

孤者浪人 提交于 2020-03-13 10:04:46
解决办法: 在终端里面依次输入以下两句话 alternatives --install /usr/bin/java java /usr/java/jdk1.6.0_11/bin/java 300 alternatives --install /usr/bin/javac javac /usr/java/jdk1.6.0_11/bin/javac 30 上面两条命令中红色部分为你新安装的 JDK 的路径,可以按照你安装的位置自行修改。 好了,现在已经成功一半了,继续 ..... 最重要的一步:在终端里面执行 alternatives --config java 命令,你会看到如下结果: ==================================================================== 共有 2 个程序提供 “java” 。 选择 命令 ----------------------------------------------- * 1 /usr/lib/jvm/jre-1.4.2-gcj/bin/java + 2 /opt/jdk1.5/bin/java 按 Enter 来保存当前选择 [+] ,或键入选择号码: 2 有两个 java 版本,系统会提示让你选择当前要使用的版本,只要选择你要使用版本的对应序号,然后回车就大功告成了。 最后