常用命令

shell

1
2
3
4
5
6
7
8
9
10
11
12
13
14
scp复制多个文件,并且不需要输入yes
scp -o "StrictHostKeyChecking no" 20150603.tar.gz 20150627.tar.gz 20150705.tar.gz user@host:/home/users/log/20150715/`hostname`

for i in `seq -f %02g 0 23`;do file="log/pay.log.20150731"$i; echo $file;done

查看svn密码~/.subversion/auth/svn.simple/48eed6299865c0af1dac26d1a6d79efa

mutt发邮件mutt -e "my_hdr content-type:text/html" -s "subject" "user@baidu.com" < mail.html

列出文件中排名前10的行及数量 sort file | uniq -c | sort -k 1 -n -r | head -10

格式化json输出`cat /tmp/json |python -m json.tool`

输出文件指定行cat filename| head -n 3000 | tail -n +1000(显示1000行到3000行),cat filename | tail -n +3000 | head -n 1000(从第3000行开始,显示1000行。即显示3000~3999行)

sed

1
sed -i "s/old/new/g" `grep -rl  '../../static/' *` sed批量替换多个文件的内容

golang

1
2
3
4
5
6
编译时支持GDB调试:
1传递参数-ldflags "-s",忽略debug的打印信息
2传递-gcflags "-N -l" 参数,这样可以忽略Go内部做的一些优化,聚合变量和函数等优化,这样对于GDB调试来说非常困难,所以在编译的时候加入这两个参数避免这些优化
3编译为静态程序CGO_ENABLED="0" go build hello.go

kill -3 <pid>发送SIGQUIT信号,会将正在运行的goroutine的调用栈输出

gdb

1
2
3
4
5
6
7
8
9
gdb在文件上加断点时避免每次使用很长的完整路径,可使用dir
(gdb) dir /home/yourihua/workplace/rhino/src/github.com/robfig/revel/
Source directories searched: /home/yourihua/workplace/rhino/src/github.com/robfig/revel:$cdir:$cwd
(gdb) b revel.go:86
Breakpoint 2 at 0x44ef60: file /home/yourihua/workplace/rhino/src/github.com/robfig/revel/revel.go, line 86.

打印vector前N个元素print *(myVector._M_impl._M_start)@N

设置调试程序的参数(gdb) set args arg1 arg2 ...

git

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
git diff  查看尚未暂存的文件更新了哪些部分

git diff filename 查看尚未暂存的某个文件更新了哪些

git diff –cached 查看已经暂存起来的文件和上次提交的版本之间的差异

git diff –cached filename 查看已经暂存起来的某个文件和上次提交的版本之间的差异

git diff ffd98b291e0caa6c33575c1ef465eae661ce40c9 b8e7b00c02b95b320f14b625663fdecf2d63e74c 查看某两个版本之间的差异

git diff ffd98b291e0caa6c33575c1ef465eae661ce40c9:filename b8e7b00c02b95b320f14b625663fdecf2d63e74c:filename 查看某两个版本的某个文件之间的差异

git log <commit-id> --stat 查看指定commit修改的哪些文件

git checkout -t origin/2.0.0 将本地分支切换为远程分支

git config --global core.excludesfile ~/.gitignore 全局忽略

git log --pretty=format:"%h - %an, %ar : %s" 输出commtid - author - commit time - commit msg

git show <commitid> <file> 查看某次commit对文件的修改

git update-index --assume-unchanged your_file_path 不想继续追踪某个文件

git update-index --no-assume-unchanged your_file_path 如果想再次继续跟踪某个文件

git co -b release-2.0.1 upstream/release-2.0.1 将远程分支checkout到本地

git cherry-pick <commit-id> 将某个commit应用到当前分支

vim

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
:w !sudo tee % 保存时取得sudo权限

加入行号 :'<,'>s/BIT_MASK_\zs\d*\ze/\=line(".") - line("'<") + 1,解释:
'<,'> 我们所选中的区域 (:help '<,:help '> )
s 在选中的区域中进行替换 (:help :s )
\zs 指明匹配由此开始 (:help /\zs )
\d* 查找任意位数的数字 (:help /\d )
\ze 指明匹配到此为止 (:help /\ze )
\= 指明后面是一个表达式 (:help :s\= )
line(".") 当前光标所在行的行号 (:help line() )
line("'<") 我们所选区域中第一行的行号 (:help line() )
当”:s”命令的替换字符串是以”\=”开头时,表明使用一个表达式计算的结果进行替换

去除重复的行
1.先排序:sort
2.然后不要同时排序:sor ur /^/

fiddler

1
bpafter <part_url>:URL中含有part_url时中断,可修改响应然后返回给浏览器

redis

1
cat <file_name> | redis-cli --pipe 一次执行多条redis命令(比如导入大量数据)

vs code

1
2
settings.json
"editor.renderWhitespace":true // 显示空白字符m