Bash
如何在命令執行時設置別名?
我希望其他開發人員有一些方便的方法。因此我想給他們一個腳本,它會自動設置一個別名。
例如,命令
grunt compileModule:[modulename]
應該將別名設置cprev
為這個確切的命令。設置別名後該命令仍應執行!由於我們通常在同一個模組上工作多天,別名也應該在
~/.bashrc
文件中獲得一個條目(這是主要的“功能”,所以每當他們關閉 bash 時,他們不需要在重新輸入時輸入整個命令)現在有很多關於
history
以及如何查找最後執行的命令等的文章,但我無法找到如何“連接”所有資訊以產生我需要的資訊。我正在考慮為
grunt
.就像是
alias grunt='~/myScriptForAliasHistory.sh;grunt $1';
那合適嗎?
編輯
為了更清楚地說明這一點:
原來的命令是
grunt compileModule:[name]
修改後它應該像這樣工作。
它應該只做一個額外的步驟,所以你可以呼叫相同的函式
cprev
以及(使用相同的參數)
工作流程可能如下所示:
- 開發人員開始開發新模組。為了編譯它,他寫道
grunt compileModule:[name]
。- 同一個開發人員需要重新啟動他的 bash/pc/console。現在他不想再次編寫整個命令,而只想輸入
cprev
(然後執行grunt compileModule:[name]
)- 第二天他開始處理模組
[anothername]
,所以他執行grunt compileModule:[anothername]
- 如果他現在重新啟動,命令
cprev
將執行grunt compileModule:[anothername]
換句話說:無論何時被呼叫,它都應該用它自己的目前呼叫參數
grunt compileModule
覆蓋別名。cprev
使用歷史擴展 with
!
將在沒有別名或函式的情況下執行此操作:$ grunt compileModule:[something] $ # other things $ !grunt
最後一個
!grunt
將導致 shell 在命令行歷史中查找以字元串開頭的最後一個命令grunt
並執行它。在
bash
:
!string
參考歷史列表中目前位置之前的最新命令,以
string
.如果 shell 具有持久的歷史記錄(通常通過設置啟用
HISTFILE
),那麼這也將在連續的 shell 會話中工作,並且根據 shell,它甚至可以在並發會話中工作。