alias para crear un nuevo directorio e ir a él

alias para crear un nuevo directorio e ir a él

Así que aquí he creado, o al menos he intentado crear, un alias para un comando que acepta un argumento de línea de comando, crea un nuevo directorio con ese nombre y va a él.

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

El alias se creó correctamente, pero cuando quiero ejecutar el comando con un argumento de línea de comandos, aparece este mensaje de error.

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

Respuesta1

Necesitas una función, no un alias. Intentar:

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

Ejemplo:

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

Notas:

  1. La -popción mkdirle indica que cree directorios principales faltantes si es necesario. En el ejemplo anterior, dir1no existía pero mkdir -p dir1/dir2creó ambos dir1y dir2.

  2. Debido a que usamos el operador de shell &&, el cdcomando solo se ejecutará si el mkdircomando se realizó correctamente.

  3. Los alias son útiles en casos muy simples en los que se puede sustituir una palabra por una cadena fija. Los alias no procesan argumentos.

  4. Debido a que estamos usando una función de shell en lugar de un alias, podemos hacer referencia a los argumentos, como, en este caso, $1según nuestras necesidades.

información relacionada