給alias命令新增引數支援

kingron發表於2024-06-14

問題

希望給透過 alias 定義的命令加上引數的支援。


解決方案

如果只是想將引數用作命令的後面部分,比如 ll 命令,那麼無需任何額外的操作:

alias ll='ls -al'
ll ~

如果想將引數用作拼成命令的一部分,則可以將命令轉為自定義函式來實現,比如,想要給 django 專案生成遷移檔案,而且自定義遷移檔名稱,但是每次都需要先 cd 到專案目錄,然後執行 makemigrate 命令,比較麻煩,可以轉為使用 alias 將這些操作改為一個命令:

# 原來的操作
cd djangoproject
python manage.py makemigrations model --empty --name data_xxx


# 使用 alias 的操作
alias migratedata='migrate(){ cd djangoproject;python manage.py makemigrations model --empty --name data_$1;};migrate'
migratedata xxx

因為 alias 本身並不支援直接傳參,因此這裡使用了將命令封裝到一個函式 migrate,然後透過執行函式以接收引數。


擴充套件

如果不透過函式接收引數 $1$1 會使用 shell 的引數(就像引入其他環境變數一樣,但是 $1 通常沒有指定任何值)


參考

  1. bash - Can I pass arguments to an alias command? - Ask Ubuntu

相關文章