前言
平時開發(fā)中遇到這樣那樣的命令需要記下來,一般做法是這樣。
- 新建記事本
- 將需要記下的關鍵命令保存。
- 每次需要使用時,粘貼復制即可。
好像沒什么毛??!直到遇到了 Cmder。。。
當看到同事分析問題時在 Cmder 里命令快捷鍵刷刷一頓操作,覺得挺厲害滴。感覺這同事技術好牛,快捷鍵用這么好。后來才知道是 Cmder 用的溜,給人感覺很厲害。從某種意義上說,Cmder 簡直是技術人裝逼必備神器。
本文不打算講解 Cmder 的安裝和配置過程??勺孕胁殚?,不清楚也可留言。這里重點說說 Cmder 最吸引功能: 自定義命令別名
講解自定義命令別名之前,先簡單介紹下 Cmder。
什么是 Cmder
一句話概括:作者出于 windows 上好的命令行終端太少而創(chuàng)建的 Cmder。
Cmder 是 windows 上一款命令行終端工具。
Cmder 特色:
- 可設置命令別名
- 豐富的顏色主題(Solarized、Twilight、Ubuntu、xterm、Monokai,甚至接受自定)、可定制字體
- 支持 tab 分頁、同屏多端口(支持水平分割、垂直分割)
- 支持自定 terminal,無論是 CMD、PowerShell、bash 都可以,還可以注入環(huán)境變量
- 集成了 git
- 完全便攜可通過 U 盤或者云端攜帶。保持你的設置別名和歷史記錄,再也不會看丑陋的 windows 提示符了。
Cmder 特色總結:設置命令別名,配置好看主題,支持多開,自定義終端環(huán)境,集成 git 和方便攜帶。
自定義命令別名
別名定義
很長的命令可以用很簡單幾個字母表示。如下,只要在 Cmder 中敲 gl 就可代替后面一連串命令。
gl=git log --oneline --all --graph --decorate $*
命令范圍
也許大多數(shù)人概念中,既然 Cmder 是 windows 平臺工具,那么支持命令當然是 windows 平臺相關命令。
其實 Cmder 可表示命令范圍很廣,任何添加到系統(tǒng)環(huán)境變量中的工具,其相關命令都可執(zhí)行。
如下圖中,windows 系統(tǒng)環(huán)境變量中配置了 svn 和 jdk 。則 java 和 svn 相關命令默認都可以在 Cmder 命令行中可執(zhí)行。
若目標工具未配置在系統(tǒng)環(huán)境變量中則不能直接在 Cmder 中默認使用,需在 Cmder 中手動轉到相關目錄下執(zhí)行。
一般開發(fā)類軟件比如 python、java、git 環(huán)境配置時都需要添加到系統(tǒng)環(huán)境變量中。
如何添加別名
步驟一: Cmder 安裝目錄下打開此文件
步驟二:按如下格式添加 ① 表示自定義別名 ② 表示需配置的原始命令。
步驟三:保存修改,關閉 Cmder 客戶端后再打開即可生效自定義別名命令。
效果展示
Git 場景
列舉兩個相關場景
一次性提交給多人評審代碼
gpushr = git push origin HEAD:refs/for/master%r=alice@example.com,r=bob@example.com
這樣在 Cmder 中直接敲 gpushr 就行了,當然這個 gpushr 是我自己取的,您可以選擇自己的別名,一個字母都行。
常規(guī)命令快捷鍵
gl=git log --oneline --all --graph --decorate $*
gp=git pull
gs=git status
gdb=git branch -D $*
效果如下:
關于命令行中的 $*
表示當前位置是一個變量,由外部傳入。
如下操作含義:
- 查看當前目錄下分支
- 創(chuàng)建 test 分支(當然此操作也可以別名控制)
- 列出所有分支名稱
- 上次指定分支 test
這里 gdb=git branch -D $* 而test 通過 $*傳入命令中 最終 gdb test = git branch -D test。
就問你 6 不 6。
這些自定義命令只有你自己知道,別人看不懂,學會之后人家眼里盡是你的牛逼。
如何運行腳本
有人說我得了懶癌。每次切換到 python 腳本目錄再運行很麻煩。想在 Cmder 中用別名運行一個 python 腳本,
可以的,你想得到,Cmder 就可以幫你做到。
舉個例子:
熟悉安卓開發(fā)同學都知道,每次 logcat 打印進程信息,其他進程日志會擾亂當前調試進程,只想看到當前進程日志,怎么辦呢?可以如下操作:
步驟一:可在 Cmder 安裝目錄下新建 script 文件夾放入目標 python 腳本
其中 logcatPkg_27.py 可以幫你過濾其他進程日志,只聚焦當前進程日志。
步驟二: 命令中通過%CMDER_ROOT%\script 指定到目標腳本。
如:執(zhí)行 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)
步驟三:執(zhí)行自定義 python 命令即可
如圖中,指定一個包名參數(shù),python 腳本就會找到對應包名的 uid ,然后打印所有相關進程信息。
Cmder 別名優(yōu)勢
有杠精會說,git 支持別名啊,Cmder別名多此一舉了,本身.gitconfig 里就支持別名操作,難道不知道?如下
$ cat .gitconfig
[alias]
co = checkout
ci = commit
br = branch
st = status
[user]
name = Your Name
email = your@email.com
需要說明的是,這種別名每次使用時都需要帶上 git,才能真正執(zhí)行,比如上述中執(zhí)行 co 需要寫成 git co 才可執(zhí)行。
與 Cmder 對比很容易看成 Cmder 別名優(yōu)勢:文章來源:http://www.zghlxwxcb.cn/news/detail-642514.html
- 讓別名更簡潔,
- 支持通過$*傳入自定義變量更加靈活,
- 支持其他工具的自定義命令。
總結
本文介紹了 Cmder 命令行終端工具的特點和使用方法,重點講解了如何自定義命令別名。通過 Git 別名配置和腳本別名配置,展示了 Cmder 別名的強大之處。最后,通過與 Git 別名對比,進一步展示了 Cmder 的優(yōu)勢。Cmder 自定義別名可以讓命令更簡潔、更靈活,提高開發(fā)效率。?文章來源地址http://www.zghlxwxcb.cn/news/detail-642514.html
到了這里,關于Cmder:從此告別記事本記命令的日子的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!