wie wechsle ich in das Verzeichnis ODER in das Verzeichnis, in dem sich die Datei befindet?

wie wechsle ich in das Verzeichnis ODER in das Verzeichnis, in dem sich die Datei befindet?

Wenn ich das mache cd "user/Dropbox/foo.txt", bekomme ich -bash: cd: user/Dropbox/foo.txt: Not a directory. Aber meine Absicht ist in diesem Fall immer die gleiche: Ich möchte cdin das Verzeichnis, in dem sich die Datei befindet.

Ich habe Folgendes versucht:

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

Dies funktioniert jedoch nicht, da, wenn $1 ein Verzeichnis ist, dirname "$1"das übergeordnete Verzeichnis und nicht das Verzeichnis selbst zurückgegeben wird.

Wie kann ich einen Befehl erstellen, der in das Verzeichnis selbst wechselt, wenn es $1sich um ein Verzeichnis handelt, bzw. in das Verzeichnis, in dem sich die Datei befindet, wenn es $1sich um eine Datei handelt?

Antwort1

Ich denke, Sie möchten zunächst $1 für eine Datei testen:

wenn test -f "$1"; dann cd dirname ... sonst cd "$1" fi

verwandte Informationen