前言

平时开发中遇到这样那样的命令须要记下来,个别做法是这样。

  1. 新建记事本
  2. 将须要记下的要害命令保留。
  3. 每次须要应用时,粘贴复制即可。

如同没什么故障!直到遇到了 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 pullgs=git statusgdb=git branch -D $*

成果如下:

对于命令行中的 $*

示意以后地位是一个变量,由内部传入。

如下操作含意:

  1. 查看当前目录下分支
  2. 创立 test 分支(当然此操作也能够别名管制)
  3. 列出所有分支名称
  4. 上次指定分支 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 osimport syspackageName=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 别名劣势:

  1. 让别名更简洁,
  2. 反对通过&dollar;*传入自定义变量更加灵便,
  3. 反对其余工具的自定义命令。

总结

本文介绍了 Cmder 命令行终端工具的特点和应用办法,重点解说了如何自定义命令别名。通过 Git 别名配置和脚本别名配置,展现了 Cmder 别名的弱小之处。最初,通过与 Git 别名比照,进一步展现了 Cmder 的劣势。Cmder 自定义别名能够让命令更简洁、更灵便,进步开发效率。

❤️本文由公众号编程黑板报 原创,关注我,获取我的最新文章~❤️