Wie überprüft man die Größe eines Verzeichnisses, das vom Benutzer als Argument angegeben wurde?

Wie überprüft man die Größe eines Verzeichnisses, das vom Benutzer als Argument angegeben wurde?

Ich möchte die Größe eines vom Benutzer als Argument angegebenen Verzeichnisses erhalten. Beispiel:

read -p "Enter the directory" target

du -k $target

Wenn der Benutzer den Pfad so eingibt ~/Documents/dir, erhalte ich die Fehlermeldung:du: cannot access '~/Documents/dir': No such file or directory

Wenn ich den Befehl hingegen wie folgt eingebe:

du -k ~/Documents/dir

Ich erhalte die gewünschte Ausgabe.

Warum kann ich keine Variablen zusammen mit dem du-Befehl verwenden?

Antwort1

Das ~wird weder erweitert, nachdem es über die Shell eingelesen wurde, noch wenn es in den duBefehl eingefügt wird. Sie können bash mit dem folgenden Code dazu zwingen, die Erweiterung durchzuführen:

read -p "Enter the directory" target
target=${target/#\~/$HOME}
du -k "${target}"

Dies ${target/#\~/$HOME}ist der wichtige Teil. Er wird ~durch den Inhalt der HOMEUmgebungsvariablen ersetzt.

verwandte Informationen