vim-调用awk对列求和
单列求和调用awk进行求和,下面这段可以看做是:
%: 表示全文
!: 感叹号是执行命令
awk: 最简单的awk操作
平时用awk也要注意,可以不写BEGIN,但是要写END。
1:%!awk '{print; sum+=$1}END{print sum}'
vim-quickfix窗口
vim quickfixvim 自带quickfix功能,很多插件也会利用这个窗口,把错误信息在这个窗口上显示。命令:
123456:help quickfix# 打开 quickfix:copen# 关闭 quickfix:cclose
效果:
vim-go quickfixvim-go 也是使用的 quickfix 输出,命令:
1GoLint
coc 调用需要依赖fzf,在普通模式下执行:
按住 空格不放 + a,调用
总结quickfix窗口,是个很实用的vim内置工具,开发过程中很常用,自带的quickfix窗口其实功能还是有点欠缺,最好是加上一些相关插件,用起来更舒服。
shell 删除目录下备份目录数量
前言经常需要通过脚本来控制系统目录的里备份文件数量。不可能手动来经常查看,总是忘记。通过脚本定期自己查看目录里的文件数据,删除时间较早的目录。
实现那么就要设置几个条件:
允许存在几个目录
超过了怎么删除
怎么判断目录下有多少个目录?用ls就可以。
那多出来的怎么删除?遍历删,直到没有为止
完整代码如下:
1234567891011#!/bin/bashdirCount=5# 查看当前目录数currentDirCount=`ls -l | grep "^d" | wc -l`# 遍历删,直到没有为止while [ $currentDirCount -gt $dirCount ]do rm -rf `ls -1|head -n 1` currentDirCount=`ls -l | grep "^d" | wc -l`done
过滤目录,d 表示目录
grep "^d"
制造一些测试数据,然后执行上面的脚本验证。
1mkdir test1 test2 test3
最后一个问题,什么时候来执行呢?这个就看具体的策略 ...
telnet工具使用
最近刚装的机器,发现没有telnet,手动搞了一把,顺便做下记录。
查看telnet server是否安装
rpm -qa | grep telnet-server
如果没有,则安装
yum install telnet-server -y
开启telnet服务
chkconfig telnet on
启动telnet服务
service xinetd reload
手动方式启动服务编辑telent的配置文件/etc/xinetd.d/telnet 如下:(设置disable = no,也就是开启telnet服务)
重启
service xinetd restart
shell--解决数组拼接变成一行
问题碰到了一个奇怪的问题,脚本在执行推送数据任务的时候,总是会有两个节点是失败的,确认环境都是相关的,有可能是脚本有毛病,加了堆日志后发现确实有问题。因为之前修改数组拼接的方法。
出现问题的shell123456789101112131415161718192021222324#!/usr/bin/bashdevNet=(10.40.100.11410.40.100.115)testNet=(#10.40.100.11110.40.100.110)testFn() { local nodes=("$@") for node in "${nodes[@]}"; do echo "[info]: restart node: $node" done}# 就因为用 " " 包起来了所以就出问题了,把两行当成一行处理allNode=("${devNet[@]} ${testNet[@]}")testFn & ...
shell--ssh解析本地变量到远程失败
问题很多问题都是由于双眼号引起的,但是shell标准确很喜欢让开发者加上双眼号。脚本通过ssh远程操作其它相器,正常情况下脚本会将我本机的脚本变量带到远程机器上,这个脚本一直远行正常。然后看到一个shell的变量使用规范,要在大部分重要的变量是加上又眼号,我就这么干了,然后就出问题了。
正常场景我在本机:192.168.1.100上执行脚本,并登陆:192.168.1.200上操作一下,正常应该打印出:test-abcd,但是由于变量失效,则打印为空。
123456789101112131415161718192021222324#!/bin/bashnodes(192.168.1.101192.168.1.102192.168.1.200)myVar="test-abcd"startNodes() { local nodes=("$@") for node in "${nodes[@]}"; do { echo "[info]: start node: $ ...
Centos yum 使用
简述最早使用linux是在高三时,买了两张盗版的linux安装盘,安装的RedHat什么版本记不清楚了。那时候安装是需要选择精简安装和完整安装,如果选了精简安装,很多应用就没有了。所以那时很苦恼,全装占磁盘,不全安装,要学习某个应用,又得重新拿B盘安装,我对装应用的印相一直停留在那个时候。
直到大学接触发了yum
yum是一个用于管理rpm包的后台程序,用python写成,可以非常方便的解决rpm的依赖关系。在建立好yum服务器后,yum客户端可以通过 http、ftp方式获得软件包,并使用方便的命令直接管理、更新所有的rpm包,甚至包括kernel的更新。它也可以理解为红旗环境下的apt管理工具。
yum search 搜索搜索需要的应用包。
1yum search httpd
yum list 查询资源库中所有的可安装包yum list 这是一个功能很全的查询工具,可以查询各种状态
1yum list
模糊查询1234yum list java*# 也可以使用正则yum list <正则>
yum list updates 查询已安装可更新的包123456# ...
linux-内核版本说明
说明最近查看 Linux core 的版本,发现这个版本号有点复杂,稍微查了一下。
例如:
2.6.18-92.el5
这里以点.作为分格符,分别是:
主版本.次版本.释出版本-修改版本
1.主、次版本为奇数:发展中版本(development)如 2.5.xx,这种核心版本主要用在测试与发展新功能,所以通常这种版本仅有核心开发工程师会使用。 如果有新增的核心程序代码,会加到这种版本当中,等到众多工程师测试没问题后,才加入下一版的稳定核心中;
2.主、次版本为偶数:稳定版本(stable)如 2.6.xx,等到核心功能发展成熟后会加到这类的版本中,主要用在一般家庭计算机以及企业版本中。 重点在于提供使用者一个相对稳定的 Linux 作业环境平台。
相关链接https://www.kernel.org/
shell 实现一个下载脚本
前言在写复杂脚本时,往往需要复用下载这个操作,刚好碰到这个问题,就把下载功能抽成一个函数,拿来复用。
实现实现就比较简单了,直接上代码,这段代码复制就可以直接使用。功能上判断一下当前系统中使用的的wget还是curl,选择其中一个工具进行下载。
12345678910111213141516171819202122#!/bin/bashdownload() { local url=$1 local file_name=$2 if type wget >/dev/null 2>&1; then wget --no-check-certificate -q $url elif type curl >/dev/null 2>&1; then echo "curl -OLJ $url" curl -OLJ $url else echo 'info: no exists wget or curl, make sure the system can use the "wget ...
shell 判断字符串
前言变量一定要用 "" 包起来,否则容易出问问题= 和 == 都能用,但是有差异== 支持模糊匹配
判断字符串长度主要参数:
-z 长度为: 0 返回 true-n 长度不为: 0 返回 true
1234567891011121314151617#!/bin/bashstr1=str2=""str3="1234"if [ -z "$str1" ]; then echo '1 -z: ' $str1fiif [ -z "$str2" ]; then echo '2 -z: ' $str2fiif [ -n $"str3" ]; then echo '3 -n' $str3fi
结果:
1 -z:2 -z:3 -n 1234
判断两个字符串是否相等格式:string1 = string2
1234567#!/bin/bashstr='test_val'if [ "$str& ...