1

~/.bash_aliases ファイルに次の関数があります

mycd() {
  dir=$(cat)
  echo "$dir"
  cd "$dir"
}
alias c=mycd

gotoD() {
  find -name $1 -type $2 | awk '{ print $0 }' | sort -k2 | head -1 | c
}
alias goto=gotoD

タイピングできるようになりたい

goto directory_name d

関数にディレクトリを検索させ、最も近いディレクトリに cd します 問題は、ディレクトリへの見つかったパスが mycd に入りますが、実際にディレクトリを変更することができず、エラーなしで単純に同じディレクトリに残ることです。

どんな助けでも大歓迎です。

ありがとう

4

2 に答える 2

0

適切な Bash オプションを設定します: cdable_vars

あなたはおそらく set するための正しいshoptオプションを探していますcdable_varsマニュアルページには次のように書かれています:

cdable_vars

これが設定されている場合、ディレクトリではない cd 組み込みコマンドへの引数は、値が変更先のディレクトリである変数の名前であると見なされます。

これにより、ソリューションが簡素化されます。例えば:

shopt -s cdable_vars
goto=/etc
cd goto

ただし、静的ディレクトリを goto に割り当てる代わりに、スクリプト、関数、またはパイプラインを使用してディレクトリ名をgotoに割り当てることができます。

于 2013-04-21T14:25:47.643 に答える