Cmder: 懶癌必備!從此告別記事本記命令的日子

来源:https://www.cnblogs.com/programmingBB/archive/2023/04/20/17335454.html
-Advertisement-
Play Games

前言 平時開發中遇到這樣那樣的命令需要記下來,一般做法是這樣。 新建記事本 將需要記下的關鍵命令保存。 每次需要使用時,粘貼複製即可。 好像沒什麼毛病!直到遇到了 Cmder。。。 當看到同事分析問題時在 Cmder 里命令快捷鍵刷刷一頓操作,覺得挺厲害滴。感覺這同事技術好牛,快捷鍵用這麼好。後來才 ...


前言

平時開發中遇到這樣那樣的命令需要記下來,一般做法是這樣。

  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%[email protected],[email protected]

這樣在 Cmder 中直接敲 gpushr 就行了,當然這個 gpushr 是我自己取的,您可以選擇自己的別名,一個字母都行。

常規命令快捷鍵

gl=git log --oneline --all --graph --decorate  $*
gp=git pull
gs=git status
gdb=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 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 支持別名啊,Cmder別名多此一舉了,本身.gitconfig 里就支持別名操作,難道不知道?如下

$ cat .gitconfig
[alias]
    co = checkout
    ci = commit
    br = branch
    st = status
[user]
    name = Your Name
    email = [email protected]

需要說明的是,這種別名每次使用時都需要帶上 git,才能真正執行,比如上述中執行 co 需要寫成 git co 才可執行。

與 Cmder 對比很容易看成 Cmder 別名優勢:

  1. 讓別名更簡潔,
  2. 支持通過$*傳入自定義變數更加靈活,
  3. 支持其他工具的自定義命令。

總結

本文介紹了 Cmder 命令行終端工具的特點和使用方法,重點講解瞭如何自定義命令別名。通過 Git 別名配置和腳本別名配置,展示了 Cmder 別名的強大之處。最後,通過與 Git 別名對比,進一步展示了 Cmder 的優勢。Cmder 自定義別名可以讓命令更簡潔、更靈活,提高開發效率。

❤️本文由公眾號編程黑板報 原創,關註我,獲取我的最新文章~❤️


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • MySQL 中的集群部署方案 前言 MySQL Replication InnoDB Cluster InnoDB ClusterSet InnoDB ReplicaSet MMM MHA Galera Cluster MySQL Cluster MySQL Fabric 參考 MySQL 中的集群 ...
  • 本文分享自天翼雲開發者社區《創建本地yum倉庫》,作者: zzzzgj; 背景 有的部署環境不通外網,但希望繼續使用yum命令下載依賴包而不修改部署腳本邏輯。因此記錄一個本地repo的建立方法。 1、獲取依賴包 # 如在通網的機器上下載openssl-devel所有依賴yumdownloader - ...
  • 我們很高興向大家宣佈,2023年4月14日,Taier 正式發佈 1.4 版本。自2022年2月份 Taier 正式開源以來,收到了很多開發者和行業用戶的積極評價,在諸多生產環境中已得到充分應用。Taier 1.4版本正是吸收了各類實踐經驗及大家的建議,進行了此次迭代優化。 本次更新不僅包含了性能優 ...
  • 摘要:目前TopSQL功能被用戶廣泛使用,是性能定位、劣化分析、審計回溯等重要的基石,為用戶提供覆蓋記憶體、耗時、IO、網路、空間等多方面的監控能力。 本文分享自華為雲社區《GaussDB(DWS)監控工具指南(一)作業級監控TopSQL》,作者:幕後小黑爪 。 1、引言: 監控系統是智能化管理和自動 ...
  • 摘要:近日,中國電子學會科學技術獎勵大會頒發了2021-2022年度中國電子學會科學技術獎獲獎項目,華為雲主導的“GaussDB智能雲原生分散式資料庫”項目榮獲“科技進步一等獎”。 本文分享自華為雲社區《再獲殊榮!華為雲GaussDB喜提“科技進步一等獎”》,作者:GaussDB 資料庫 。 近日, ...
  • Redis是基於記憶體存儲的資料庫,如果遇到服務重啟或者崩潰,記憶體中的數據將會被清空。所以為了確保數據安全性和可靠性,我們需要將記憶體中的數據持久化到磁碟上。 持久化不僅可以防止由於系統故障、重啟或者其他原因導致的數據丟失。還可以用於備份、數據恢復和遷移等操作。 ...
  • 背景介紹 最近學習OpenHarmony應用開發, SDK版本是3.2.9.2 Beta4,IDE版本是3.1.0.200。參考官方文檔,做了個Demo應用,調試、運行非常順利。啟動應用後,狀態欄和導航欄占用的高度過高,顯得很奇怪,嘗試修改一下系統應用。 摸石頭過河 因為沒做過移動端開發,最初以為狀 ...
  • HUAWEI Wear Engine面向手機和穿戴設備的應用與服務開發者,提供華為穿戴設備開放能力。 開發者通過調用Wear Engine開放能力,可以實現手機上的生態應用與服務給華為穿戴設備發消息、發通知、傳輸數據,並獲取穿戴設備狀態、讀取感測器數據等,也可以實現華為穿戴設備上的生態應用與服務給手 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...