Linux Shell基线配置相关操作

一、输入解析类

1.1 echo解析tab和换行

问题描述:echo默认是原样输出字符串,并不解析\t和\n等反斜杠字符,如下图所示。我们希望echo能解析\t和\n等字符。

处理办法:可以使用-e指示echo识别反斜杠。

1.2 cat将变量写入文件

问题描述:我们经常需要将变量写到配置文件,比如将java相关的几个变量写到~/.profile,追加多行cat是最方便的但cat默认会在插入时解析变量,如下图所示。我们希望就是原样写入而不自动解析变量。

处理办法:可通过给EOF加上单引号来指示cat不要解析变量。

参考:https://blog.csdn.net/u010154760/article/details/45955797

扫描二维码关注公众号,回复: 4760618 查看本文章

二、输出查找类

2.1 grep查找进程并过滤查找命令本身

问题描述:我们经常使用ps -ef | grep something的语句去查找进程(以便进一步获取pid等),但此时grep本身也会被打印出来,如下图所示。我们希望grep语句本身也被过滤掉。

处理办法:使用grep -v grep将grep语句去掉

2.2 grep打印匹配行的前后几行

问题描述:我们使用grep查找时默认只打印匹配行,这种实现是合理的,但有时候匹配行与前后部份是强关联的我们也想获取。

处理办法:我们可以使用-A num指示打印匹配行的后几行,使用-B num指示打印匹配行的前几行。

2.3 sed去除块注释

问题描述:在读取tomcat等配置文件时,如果只是直接grep那查找出的内容可能其实是在块注释之中,该项配置其实并不生效。我们希望能先将配置文件中先将所有注释先去除掉。

处理办法:此时可以使用sed '/regex/d'删除单行注释,使用sed '/star_line_regex/,/end_line_regex/d'来删除掉块注释。具体到tomcat如下

cat tomcat-users.xml |sed '/<!--.*-->/d' | sed '/<!--/,/-->/d'

参考:https://askubuntu.com/questions/525974/how-to-remove-comments-from-an-xml-file

三、其他查找

3.1 获取tomcat版本号

问题描述:tomcat的版本号并不在响应的Server头中,只显示在默认的index.jsp和默认的错误页面中,此时可以通过curl获取其版本号(判断tomcat有没有设置隐藏版本号)。但如果默认index.jsp被删除且自定义了错误页面我们该如何通过shell获取到tomcat的版本号呢。

处理办法:此时我们还有三种办法可以获取到版本号。

第一种,解压$CATALINA_HOME/lib/catalina.jar,到org\apache\catalina\util\ServerInfo.properties文件中查看版本号。这理论上对服务没有影响,但动服务器文件的做法并不是很好。

第二种,使用java -cp $CATALINA_HOME/lib/catalina.jar org.apache.catalina.util.ServerInfo使用查看版本号。但查找版本号的服务并不一定是运行tomcat的前户,其环境变量中并不一定有java。

第三种,运行$CATALINA_HOME/bin/version.sh获取版本信息。

参考:https://community.rsa.com/docs/DOC-81702

猜你喜欢

转载自www.cnblogs.com/lsdb/p/10213076.html