August
24th,
2018
其實這篇不僅僅可以用在 Docker,而是適用於各種長指令的情境,這裡的情境是使用 Docker 對遠端伺服器上的 Docker 做指令操作時,會透或 -H
的參數指定遠端伺服器,而這個參數值會讓指令變得很常,不好打之外又不好看,透過 DosKey 來簡化操作指令。
例如要執行像這樣的指令:
docker -H=docker.server.com logs --tail 100 WebApp
這指令是要顯示遠端 docker.server.com
伺服器的 Docker 裡面的 WebApp 容器最後 100 行的 log,原本簡單的指令因為要加上 -H
變得要打很多字,而且變得很長,此時我們可以寫一個 cmd 指令檔如下:
;= @echo off
;= rem Call DOSKEY and use this file as the macrofile
;= %SystemRoot%\system32\doskey /listsize=1000 /macrofile=%0%
;= rem In batch mode, jump to the end of the file
;= goto:eof
;= Add aliases below here
remote-docker=docker -H=docker.server.com $*
假設這個指令檔叫做 docker-alias.cmd
,在終端機中執行完此指令檔後,我們的指令就可以改成如下:
remote-docker logs --tail 100 WebApp
是不是變得易讀又簡單了。
DosKey 指令介紹
透過呼叫 DosKey 來編輯終端機命令列,或者建立巨集。
指令詳解:
DOSKEY [/REINSTALL] [/LISTSIZE=size] [/MACROS[:ALL | :exename]]
[/HISTORY] [/INSERT | /OVERSTRIKE] [/EXENAME=exename] [/MACROFILE=filename]
[macroname=[text]]
參數 | 說明 |
---|---|
/REINSTALL |
安裝另一份 Doskey |
/LISTSIZE=size |
設定命令歷程緩衝區的大小 |
/MACROS |
顯示所有的 Doskey 巨集 |
/MACROS:ALL |
顯示所有執行檔中含有 Doskey 巨集的 Doskey 巨集 |
/MACROS:exename |
顯示指定的執行檔中的所有 Doskey 巨集 |
/HISTORY |
顯示存在記憶體中的所有命令 |
/INSERT |
指定您所鍵入的新文字插入在舊的文字中 |
/OVERSTRIKE |
指定您所鍵入的新文字覆蓋舊的文字 |
/EXENAME=exename |
指定執行檔 |
/MACROFILE=filename |
指定要安裝的巨集檔案 |
macroname |
為您建立的巨集指定名稱 |
text |
指定您要記錄的命令 |
啟動 DosKey.exe 後,可以使用下列操作:
- 向上與向下鍵叫回以前的指令
ESC
清除命令列F7
顯示命令歷程ALT
+F7
清除命令列歷程F8
尋找命令歷程F9
以號碼選擇命令ALT
+F10
清除巨集定義
以下是在 Doskey 巨集定義中的特殊碼:
$T
命令分隔字元。允許在一個巨集中使用多個命令。$1
-$9
批次檔參數。相當於批次檔中的%1
到%9
。$*
這個符號代表在命令列中巨集名稱後的所有文字。
參考資料: