問題
希望給透過 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
通常沒有指定任何值)
參考
- bash - Can I pass arguments to an alias command? - Ask Ubuntu