フォルダまでBash CD

フォルダまでBash CD

私は一緒に働く多くの人と同じように、Magentoでたくさんのことをしています。

CD../../../../../../

ルート "httpdocs"フォルダからいくつかのディレクトリのみを検索するために、次の擬似コードに従うスクリプトを作成しました。

while lowest level directory != httpdocs
    cd ../
end while;

簡単に見えます。現在の作業ディレクトリの最後の部分がhttpdocsであることを確認するためにgrepを実行し、そうでない場合はtrueになるまで1つ上のレベルに進む必要があるとします。

私はこれのためにbashを学ぶことを考えています。すでに似たようなものがあるようで構文が私を無限に混乱させます。

ベストアンサー1

upto.bashrcは、名前に基づいて現在のパスのすべてのディレクトリに移動できる関数を呼び出します。

upto ()
{
    if [ -z "$1" ]; then
        return
    fi
    local upto=$1
    cd "${PWD/\/$upto\/*//$upto}"
}

また、タブをクリックすると、有効なディレクトリ名と完了が表示されるように機能が完了しました。

_upto()
{
    local cur=${COMP_WORDS[COMP_CWORD]}
    local d=${PWD//\//\ }
    COMPREPLY=( $( compgen -W "$d" -- "$cur" ) )
}
complete -F _upto upto

jdまた、現在のディレクトリの下の任意のディレクトリに移動できる別の機能があります。

jd(){
    if [ -z "$1" ]; then
        echo "Usage: jd [directory]";
        return 1
    else
        cd **"/$1"
    fi
}

例:

[/www/public_html/animals/hippopotamus/habitat/swamps/images] $ upto h[TAB][TAB]
habitat       hippopotamus
[/www/public_html/animals/hippopotamus/habitat/swamps/images] $ upto hippopotamus
[/www/public_html/animals/hippopotamus] $ jd images
[/www/public_html/animals/hippopotamus/habitat/swamps/images] $ 

おすすめ記事