Alias, um ein neues Verzeichnis zu erstellen und dorthin zu gehen

Alias, um ein neues Verzeichnis zu erstellen und dorthin zu gehen

Also habe ich hier einen Alias ​​für einen Befehl erstellt oder zumindest versucht, einen zu erstellen, der ein Befehlszeilenargument akzeptiert, ein neues Verzeichnis mit diesem Namen erstellt und dorthin geht.

alias newfolder='mkdir $2 ; cd "$(history | tail -2 | awk '\''NR == 1'\'' | awk '\''{print $3}'\'')"'

Der Alias ​​wurde erfolgreich erstellt, aber wenn ich den Befehl mit einem Befehlszeilenargument ausführen möchte, erhalte ich diese Fehlermeldung.

username:~/workspace (master) $ newfolder a
mkdir: missing operand
Try 'mkdir --help' for more information.
bash: cd: newfolder='mkdir: No such file or directory

Antwort1

Sie benötigen eine Funktion, keinen Alias. Versuchen Sie:

newfolder() { mkdir -p "$1" && cd "$1"; }

Beispiel:

$ pwd
/tmp
$ newfolder dir1/dir2
$ pwd
/tmp/dir1/dir2

Anmerkungen:

  1. Die -pOption bis mkdirweist das Programm an, fehlende übergeordnete Verzeichnisse bei Bedarf zu erstellen. Im obigen Beispiel dir1existierte nicht, aber sowohl als mkdir -p dir1/dir2auch wurden erstellt .dir1dir2

  2. Da wir den Shell-Operator verwenden &&, cdwird der Befehl nur ausgeführt, wenn er mkdirerfolgreich war.

  3. Aliase sind in sehr einfachen Fällen nützlich, in denen ein Wort durch eine feste Zeichenfolge ersetzt werden kann. Aliase verarbeiten keine Argumente.

  4. Da wir anstelle eines Alias ​​eine Shell-Funktion verwenden, können wir $1je nach Bedarf auf die Argumente verweisen, wie in diesem Fall beispielsweise .

verwandte Informationen