ファイルを含むディレクトリにCDを移動するにはどうすればよいですか? [コピー]

ファイルを含むディレクトリにCDを移動するにはどうすればよいですか? [コピー]

私がそうすれば私cd "user/Dropbox/foo.txt"はそれを知ることができます-bash: cd: user/Dropbox/foo.txt: Not a directory。しかし、この場合、私の意図は常に同じです。cdファイルがあるディレクトリにアクセスしたいです。

私はこれを試しました:

function smartcd
{
    dirname=$(dirname "$1");
    cd $dirname;
}

ただし、$ 1がディレクトリの場合、dirname "$1"ディレクトリ自体ではなく親ディレクトリが返されるため機能しません。

$1ディレクトリの場合はディレクトリ自体でcds、$1ファイルの場合はファイルがあるディレクトリにcdsするコマンドを作成するにはどうすればよいですか。

答え1

私の考えでは、あなたがしたいのは、最初にファイルの$ 1をテストすることです。

if test -f "$1";その後、cd dirname ... else cd "$1" fi

関連情報