Alias

如何在 KornShell 中創建一個接受參數的別名

  • March 24, 2013

我正在嘗試創建一個別名,當給定一些參數時,它將查找包含參數作為模式的文件夾。讓別名為gohf

現在,我將使用這個別名gohf <some-pattern>,例如,例如。gohf testing. 現在這應該尋找一個名稱中包含“testing”的文件夾,並在最後一步將我帶到該文件夾。

以下是我能想到的。

alias gohf='cd `find . -type d | grep testing`';

當模式總是“測試”時,上述別名有效。我該如何修改,以便如果別名用作 say gohf game,那麼別名應該將我帶到其名稱中包含遊戲的文件夾。

注意

外殼:ksh

我假設我輸入的每個模式只有一個文件夾。

正如 manatwork 在評論中所說,您應該使用函式來更好地處理參數。

gohf(){
 cd $(find . -type d -iname "$1" | sed 1q)
}

無需將 to 的結果find傳輸grep為使用標誌-name-iname執行相同的操作。然後我們將整個事情通過管道傳輸到,sed以便我們只cd在有多個“命中”的情況下到達第一個“命中”。

如果您希望能夠處理多個find“命中”,您應該執行以下操作:

gohf(){
 select dir in $(find . -name "$1" -type d)
 do
   cd $dir
   break
 done
}

引用自:https://unix.stackexchange.com/questions/62288