
脚本&工具
文章平均质量分 54
脚本包括Windows, Macos,Linux常用的shell命令以及相关知识
工具包括IDEA,nginx配置等介绍和说明
好吃吗
离管理层还差两级 https://github.com/xhd2015
展开
-
qemu: aarch64 + ubuntu image
qemu + aarch64 + ubuntu原创 2022-07-10 17:38:44 · 1268 阅读 · 0 评论 -
关于bash quote的认识
问题的背景:参数注入在shell中,我们希望将参数传递给子命令,如下面的例子:假设我们有一个http服务,它接受一个cmd参数,并将其传递给bash -c执行:// curl 'localhost:8080/demo?cmd=echo hello'handler(req,res){ const cmd = req.query.cmd; const process = child_process.exec(`bash -c "${cmd}"`); // ... }显然原创 2022-01-02 21:43:06 · 1743 阅读 · 0 评论 -
nc: netcat网络工具
功能端口监听端口扫描nc -z -v site.comssh ProxyCommand基本选项-p source_port 源端口当使用-l时,-p和命令行端口参数具有相同的作用。如果同时给定,-p具有更高的优先级-n 禁用DNS查找,即将参数当作IP地址-e /bin/bash 连接成功之后执行bash-x host:port 代理主机-X 4|5|connect proxy的协议,4表示SOCKS4,5表示SOCKS5,connect表示http隧道-u 使用U原创 2021-12-20 23:03:00 · 977 阅读 · 0 评论 -
文件同步(mutagen.io + rsync)
模型: 公司 <=> 虚拟机(VPN) <=> Home在这种模型中,白天在公司,使用公司的Mac;晚上回家,使用家中的笔记本。为了同步两边的代码,使用下面的安全模型:# 注意:使用rsync同步时,每个目录都要以/结尾# 公司 <=> 虚拟机 rsync同步到 ~/company-backedecho "syncing company to VM"rsync -r ~/company-backed/ user@devhost_rsync:/ho原创 2021-12-20 21:35:50 · 678 阅读 · 1 评论 -
homebrew的基本结构和扩展使用
开发手册https://docs.brew.sh/Formula-Cookbook#homebrew-terminologyhomebrew cheat sheet概念摘要:brew config 列出当前homebrew的配置brew ls 查看已经symkink的包brew edit git 编辑git的安装规则homebrew所有的包(称为Keg)安装到Cellar目录中,Cellar目录如:/home/cat/homebrew/Cellar.配置展示:$ brew c原创 2021-11-28 14:20:53 · 808 阅读 · 0 评论 -
【shell】vimdiff和git mergetool
关于git mergetool使用说明https://vim.fandom.com/wiki/A_better_Vimdiff_Git_mergetool当使用git mergetool --tool=vimdiff file时,会使用4个文件打开vim,并设置diff模式,如下如下图所示,上面3个窗口,第1个是本地的分支,第3个是合入的分支,第2个是本地分支和合入分支的公共祖先分支。最下面的文件则是当前的文件状态。...原创 2021-08-09 14:29:27 · 586 阅读 · 0 评论 -
git命令(rev-list, rev-parse, log)
rev-parse用来处理git目录相关的操作,如果只有一个参数,就会显示这个分支的CommitIDgit rev-parse HEAD # 730fd0265e818fc24bf8455a1d4845431bfa743cgit rev-prase 730fd0265e818fc24bf8455a1d4845431bfa743c # 730fd0265e818fc24bf8455a1d4845431bfa743cgit rev-parse --short HEAD # 730fd02与文件相关的原创 2020-11-07 22:30:04 · 1924 阅读 · 1 评论 -
【bosun】查询表达式
表达式文档https://bosun.org/expressionsseriesSet的理解可以将其结构看成:seriesSet = { "group0":{ time0: num0, time1:num1, .... }, "group1":{ time0: num0, time1:num1, .... }}每个seriesSet由多个组构成,每个组由时间和值映射的序列构成。group的原创 2020-11-05 18:52:26 · 3562 阅读 · 0 评论 -
redis安装和使用
安装https://redis.io/download下载redis源码,然后进行安装:wget https://download.redis.io/releases/redis-6.0.9.tar.gztar xzf redis-6.0.9.tar.gzcd redis-6.0.9make配置和启动redis使用redis.conf作为配置文件,参考https://redis.io/topics/config下面给出一个简单的配置:bind 0.0.0.0port 6379#原创 2020-11-05 00:22:37 · 159 阅读 · 0 评论 -
【脚本】MySQL安装和使用
安装过程参考Install MySQL on Linuxmysql installation:更新源sudo apt update安装MySQL,然后设置root密码关于root用户的密码,可以在后面的步骤中进行重置更新/etc/mysql/mysql.conf.d/mysql.conf,将bind改成0.0.0.0这一步是为了允许从所有IP登录mysql,而不仅仅是localhost使用root用户登录,并创建用户CREATE USER 'user'@'loc原创 2020-11-03 15:40:35 · 275 阅读 · 0 评论 -
【脚本】ssh的原理
交互流程如何登录一个ssh server?使用生成的ssh key pairclient需要生成密钥对,然后通过ssh-copy-id -i id.pub user@host将公钥加入到目标服务器的~/.ssh/authorized_keys中,完整过程如下:ssh-keygen -t rsa -f ~/.ssh/idssh-copy-id -i ~/.ssh/id.pub user@host然后,还需要在~/.ssh/config中配置私钥映射:Host host User us原创 2020-11-02 16:23:34 · 108 阅读 · 0 评论 -
【shell】短命令:shortpath,swd和sync-profiles
shortpath将当前路径简化为变量,比如,假如定义了GOPATH=~/gopath, W=$GOPATH/src/github.com/me/work,下面的代码定制PS1展示缩短的变量shortpath () { p=${PWD/#'/Users/me'/'~'} p=${p/#'~/gopath'/'$GOPATH'} p=${p/#'$GOPATH/src/github.com/me/work'/'$W'} echo "$p"}parse_git_br原创 2020-10-21 13:34:34 · 293 阅读 · 0 评论 -
【shell】终端的各种使用特性
ssh登录并执行初始命令(cat tty+ script命令实现)-q 不要打印Script started…, Script end…的信息下面这条命令:可以保证在登录了远程shell的情况下,首先执行一段自定义命令,然后保持输入输出不关闭echo 'echo yes' |cat - /dev/tty |script /dev/null ssh $D其核心就是中间的cat命令使用了 /dev/tty来保证输入不关闭,从而保证不会发送EOF导致远程关闭script配合ssh使用用来避免ssh原创 2020-10-21 11:40:38 · 220 阅读 · 0 评论 -
【shell】vim专家指南
几个移动命令的具体区别^ 第一个非空字符0 第一个字符g_ 最后一个非空字符g0 屏幕的第一个字符g^ 屏幕的第一个非空字符f<char> char的第一个,right方向F<char> char的第一个,left方向t,T 类似,但是字符会放在char的前面(相对左右方向前面) , 注意fFtT不会跨行; 重复fFtT命令, 重复fFtT命令,相反方向:[count]% 进入文件的百分比wWbB backward, wordeE forwar原创 2020-06-29 13:53:44 · 463 阅读 · 0 评论 -
【shell】密码自动输入
使用Script来构造一个伪终端echo -ne 'Password\n' | sleep 3| script typescript ssh usr@host:port; rm typescript原创 2020-06-27 00:40:58 · 883 阅读 · 0 评论 -
git例子
Example取消提交git reset HEAD go.sum go.mod获取commit msg%s = messagegit log --format=%s -n 1 HEAD原创 2020-06-25 12:02:43 · 184 阅读 · 0 评论 -
【工具】yylex和ANTLR
何时应当创建一个DSL?毫无疑问,当你需要解析一些语法结构,比如SQL语句。yylexhttps://www.gnu.org/software/bison/manual/html_node/Lexical.htmlyylex通常是作为bison的一部分输入bisonBISONStandfordbison gammmar.ygammar.y会生成garmmar.tab.c, 注意,目录名会被忽略掉。如果使用c++,则后缀应当是.ypp.为了兼容性,定义yacc通常唤起bison -y。原创 2020-06-25 08:54:55 · 1614 阅读 · 0 评论 -
【shell】find
关于FindUtils - gnuFindFiles - gnu原创 2020-06-20 16:51:35 · 341 阅读 · 0 评论 -
【shell】基于脚本的http服务器
关于在远程机器上执行一些脚本的能力是必须的,而我们通常又不具备这样的能力。基于ruby实现一个简单的脚本运行Code#!/usr/bin/env rubyrequire 'webrick'require 'open3'root = ENV["ROOT"]if root==nil || root.empty? root="."end# Root is consantRoot=File.expand_path(root)$stdout << "using root:原创 2020-06-20 14:27:10 · 615 阅读 · 0 评论 -
【shell】终端, tmux,screen, iterm2
关于终端终端如何与shell交互iTerm2原创 2020-06-17 11:23:25 · 369 阅读 · 0 评论 -
【shell】shell index
Indexexec Using execstring manipulation Manuplating Stringstool managementbrewterminaliterm2readline 【shell】readline交互completion Appendix J. An Introduction to Programmable Completion , GNU Programmable Completionvimrubygrepfindgetoptcomple原创 2020-06-17 00:31:44 · 982 阅读 · 0 评论 -
【shell】readline交互
Introhttps://www.gnu.org/software/bash/manual/html_node/Readline-Interaction.htmlreadline允许你在不变更大部分输入的情况下,对自己的输入做改动。Mac上设置基本上,把所有系统定义的ctrl-的快捷键替换掉,保证ctrl可用iterm2将option设置为meta基本移动c-b c-f 按字符移动 (在mac上是ctrl)c-d 删除字符c-_ undoc-x c-u undo 相原创 2020-06-17 00:00:55 · 458 阅读 · 0 评论 -
【Linux】WPA Supplicant
About原创 2019-12-29 23:50:56 · 84 阅读 · 0 评论 -
后台任务: systemctl, systemd
/etc/init.d开机启动ssh服务:sudo systemctl enable ssh.socket原创 2019-12-29 23:38:56 · 238 阅读 · 1 评论 -
【脚本】shell指南
字符串: ${a=default} 获取并设置变量a的默认值${a+alt_value} 如果a设置了,使用alt_value;否则放回null ; :+ 则当a已经设置,但是是null时,仍然使用null值参数替换(Parameter Substitution)变量形式变量未声明变量已声明,值为null变量不为null说明${a-default...原创 2020-05-03 00:01:14 · 317 阅读 · 0 评论 -
【脚本】nginx配置概览
静态文件配置root指令:配置uri查找的根目录基本配置语法:location URI { root PATH_TO_ROOT}如果URI以/结尾,则认为这是个目录,因此可以返回一批文件。...原创 2019-12-23 12:27:44 · 154 阅读 · 0 评论 -
homebrew的基本使用
概念formula和caskformula是一个ruby脚本,可以是一个.rb文件,也可以是一个链接,还可以是通常的形式:定义在homebrew/core中的名称映射的ruby脚本,短名称或者全称。formula的全称: USER/USER/USER/REPO/$FORMULA如果省略USER/USER/USER/REPO, 默认从homebrew/core中拉取homebrew/cor...原创 2020-05-02 17:58:49 · 501 阅读 · 0 评论 -
【脚本工具】命令行参数解析工具
基本模型命令行参数有下面几个通常的规则:1.单个短线开头(-, hyphen)用于表示短选项,一般而言短选项是长选项的缩写。如-h.2.两个短线开头用于表示长选项,如–help3.每个选项可接受0到多个参数,0个参数: -h 表示显示帮助信息; 1个参数: -f FILE 表示指定文件路径;2个参数: --arg a 1 表示指定arg参数4.多个无参短选项参数可以合并,并可以一个任意参...原创 2019-12-30 09:38:41 · 319 阅读 · 0 评论 -
【脚本工具】计算某天所在的Week of Year
Week of Year定义对于中国人的习惯来说, 一年的第一天所在的周是该年的第一个周,第二个周则是第一个周之后的周一到周日,第三个周则是第二个周之后的周一到周日,依次类推。该年的最后一天所在的周记为该年最后一周。现有的计算方法经过测试,发现格林尼治日历计算Week of Year有两个差异1.每周的起始是周日而不是周一 2.一年的最后一周是一年中最后一个不跨年的周,即除非最后一天恰好是...原创 2019-11-10 14:44:09 · 459 阅读 · 0 评论 -
【脚本】计算上班时间的算法
上班时间所谓上班时间是指从上班到下班的时间里,能够被算作工时的那部分时间总和。算法从上班到下班之间至少有一个时间段是不算工作时间的,即中午的休息时间,一般是12:00-14:00,如果晚上有加班,则傍晚的16:00-19:00也不算工作时间。而上班时间可以从一天之中的任何时段开始,需要根据不同的上下班情况来累积上班时间。设定A为按起始顺序排序的、且任意两个区间没有时间交集的非工作时间段列...原创 2019-11-07 01:12:01 · 1085 阅读 · 0 评论 -
【脚本工具】使用sql操作json
工具界面工具说明示例代码from MDNvar db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);var msg;db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log)'); ...原创 2019-11-02 05:21:10 · 172 阅读 · 0 评论 -
【脚本工具】Dubbo调用工具
Dubbo直接调用原创 2019-10-30 01:32:47 · 417 阅读 · 0 评论 -
【脚本工具】基于HTML的API请求定制工具
背景键入命令行是大多数人使用脚本必备的一个技能,但是你有没有想过,命令行提供的各种便利有其上限:你必须自己键入自己想要的参数,并且必须在行上进行编辑。基于HTML的API请求定制工具解决的就是这个问题,它允许图形化地查看参数说明,键入参数值,并进行请求。设计思路可用的成品...原创 2019-10-30 01:29:49 · 166 阅读 · 0 评论 -
【脚本工具】json操作工具
JSON生成使用jq操作JSON使用SQL操作JSON命令行可提供快速查阅能力,1.如果JSON行数少于10000行(或者其他插入在0.1s)以内的数据,可以不需要创建文件进行查询 2.指定类型。...原创 2019-10-30 01:26:32 · 446 阅读 · 0 评论