前言
平时开发中遇到这样那样的命令须要记下来,个别做法是这样。
- 新建记事本
- 将须要记下的要害命令保留。
- 每次须要应用时,粘贴复制即可。
如同没什么故障!直到遇到了 Cmder。。。
当看到共事剖析问题时在 Cmder 里命令快捷键刷刷一顿操作,感觉挺厉害滴。感觉这共事技术好牛,快捷键用这么好。起初才晓得是 Cmder 用的溜,给人感觉很厉害。从某种意义上说,Cmder 几乎是技术人装逼必备神器。
本文不打算解说 Cmder 的装置和配置过程。可自行查阅,不分明也可留言。这里重点说说 Cmder 最吸引性能: 自定义命令别名
解说自定义命令别名之前,先简略介绍下 Cmder。
什么是 Cmder
一句话概括:作者出于 windows 上好的命令行终端太少而创立的 Cmder。
Cmder 是 windows 上一款命令行终端工具。
Cmder 特色:
- 可设置命令别名
- 丰盛的色彩主题(Solarized、Twilight、Ubuntu、xterm、Monokai,甚至承受自定)、可定制字体
- 反对 tab 分页、同屏多端口(反对程度宰割、垂直宰割)
- 反对自定 terminal,无论是 CMD、PowerShell、bash 都能够,还能够注入环境变量
- 集成了 git
- 齐全便携可通过 U 盘或者云端携带。放弃你的设置别名和历史记录,再也不会看俊俏的 windows 提示符了。
Cmder 特色总结:设置命令别名,配置难看主题,反对多开,自定义终端环境,集成 git 和不便携带。
自定义命令别名
别名定义
很长的命令能够用很简略几个字母示意。如下,只有在 Cmder 中敲 gl 就可代替前面一连串命令。
gl=git log --oneline --all --graph --decorate $*
命令范畴
兴许大多数人概念中,既然 Cmder 是 windows 平台工具,那么反对命令当然是 windows 平台相干命令。
其实 Cmder 可表示命令范畴很广,任何增加到零碎环境变量中的工具,其相干命令都可执行。
如下图中,windows 零碎环境变量中配置了 svn 和 jdk。则 java 和 svn 相干命令默认都能够在 Cmder 命令行中可执行。
若指标工具未配置在零碎环境变量中则不能间接在 Cmder 中默认应用,需在 Cmder 中手动转到相干目录下执行。
个别开发类软件比方 python、java、git 环境配置时都须要增加到零碎环境变量中。
如何增加别名
步骤一: Cmder 装置目录下关上此文件
步骤二:按如下格局增加 ① 示意自定义别名 ② 示意需配置的原始命令。
步骤三:保留批改,敞开 Cmder 客户端后再关上即可失效自定义别名命令。
成果展现
Git 场景
列举两个相干场景
一次性提交给多人评审代码
gpushr = git push origin HEAD:refs/for/master%r=alice@example.com,r=bob@example.com
这样在 Cmder 中间接敲 gpushr 就行了,当然这个 gpushr 是我本人取的,您能够抉择本人的别名,一个字母都行。
惯例命令快捷键
gl=git log --oneline --all --graph --decorate $*
gp=git pull
gs=git status
gdb=git branch -D $*
成果如下:
对于命令行中的 $*
示意以后地位是一个变量,由内部传入。
如下操作含意:
- 查看当前目录下分支
- 创立 test 分支(当然此操作也能够别名管制)
- 列出所有分支名称
- 上次指定分支 test
这里 gdb=git branch -D $* 而 test 通过 $* 传入命令中 最终 gdb test = git branch -D test。
就问你 6 不 6。
这些自定义命令只有你本人晓得,他人看不懂,学会之后人家眼里尽是你的牛逼。
如何运行脚本
有人说我得了懒癌。每次切换到 python 脚本目录再运行很麻烦。想在 Cmder 中用别名运行一个 python 脚本,
能够的,你想得到,Cmder 就能够帮你做到。
举个例子:
相熟安卓开发同学都晓得,每次 logcat 打印过程信息,其余过程日志会扰乱以后调试过程,只想看到以后过程日志,怎么办呢?能够如下操作:
步骤一:可在 Cmder 装置目录下新建 script 文件夹放入指标 python 脚本
其中 logcatPkg_27.py 能够帮你过滤其余过程日志,只聚焦以后过程日志。
步骤二: 命令中通过 %CMDER_ROOT%\script 指定到指标脚本。
如:执行 logcatPkg_27.py 脚本并在 $* 处传入关注过程包名即可。
logcatp=python "%CMDER_ROOT%\script\logcatPkg_27.py" $*
logcatPkg_27.py 代码如下:
#!/usr/bin/env python
#coding:utf-8
#This script is aimed to grep logs by application(User should input a packageName and then we look up for the process ids then separate logs by process ids).
import os
import sys
packageName=str(sys.argv[1])
def getDeviceId():
devices = []
command = "adb devices -l | sed'1d'| awk'{print $1}'"
result = os.popen(command)
deviceId = result.readline().strip()
if deviceId != "":
devices.append(deviceId)
while (deviceId != ""):
deviceId = result.readline().strip()
if deviceId != "":
devices.append(deviceId)
return devices;
def printPakcageLog(device, packageName):
# print device, packageName
print("Got device:"+device)
command = "adb -s %s shell ps | grep %s | awk'{print $2}'"%(device, packageName)
# print command
p = os.popen(command)
##for some applications,there are multiple processes,so we should get all the process id
pid = p.readline().strip()
filters = pid
while(pid != ""):
pid = p.readline().strip()
if (pid != ''):
filters = filters + "|" + pid
#print 'command = %s;filters=%s'%(command, filters)
if (filters != '') :
cmd = 'adb -s %s logcat -v time | grep --color=always -E"%s" '%(device, filters)
os.system(cmd)
devices = getDeviceId();
devicesNum = len(devices);
if devicesNum < 1:
print("Device not found.")
elif devicesNum == 1:
device = devices[0]
printPakcageLog(device, packageName)
else:
print("Please chose a dvice, input the index of the device:")
for i in xrange(0, devicesNum):
print(str(i) + "\t" + devices[i])
index = raw_input("")
printPakcageLog(devices[int(index)], packageName)
步骤三:执行自定义 python 命令即可
如图中,指定一个包名参数,python 脚本就会找到对应包名的 uid,而后打印所有相干过程信息。
Cmder 别名劣势
有杠精会说,git 那个别名多此一举了,自身.gitconfig 里就反对别名操作,难道不晓得?如下
$ cat .gitconfig
[alias]
co = checkout
ci = commit
br = branch
st = status
[user]
name = Your Name
email = your@email.com
须要阐明的是,这种别名每次应用时都须要带上 git,能力真正执行,比方上述中执行 co 须要写成 git co 才可执行。
与 Cmder 比照很容易看成 Cmder 别名劣势:
- 让别名更简洁,
- 反对通过 $* 传入自定义变量更加灵便,
- 反对其余工具的自定义命令。
总结
本文介绍了 Cmder 命令行终端工具的特点和应用办法,重点解说了如何自定义命令别名。通过 Git 别名配置和脚本别名配置,展现了 Cmder 别名的弱小之处。最初,通过与 Git 别名比照,进一步展现了 Cmder 的劣势。Cmder 自定义别名能够让命令更简洁、更灵便,进步开发效率。
❤️本文由公众号 编程黑板报 原创,关注我,获取我的最新文章~❤️