alias para criar um novo diretório e ir até ele

alias para criar um novo diretório e ir até ele

Então aqui eu criei, ou pelo menos tentei criar um alias para um comando que aceita um argumento de linha de comando, cria um novo diretório com esse nome e vai até ele.

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

O alias foi criado com sucesso, mas quando desejo executar o comando com um argumento de linha de comando, recebo esta mensagem de erro.

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

Responder1

Você precisa de uma função, não de um alias. Tentar:

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

Exemplo:

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

Notas:

  1. A -popção mkdirdiz para criar diretórios pais ausentes, se necessário. No exemplo acima, dir1não existia, mas mkdir -p dir1/dir2criou ambos dir1e dir2.

  2. Como usamos o operador shell &&, o cdcomando só será executado se mkdirfor bem-sucedido.

  3. Aliases são úteis em casos muito simples onde uma string fixa pode ser substituída por uma palavra. Aliases não processam argumentos.

  4. Como estamos usando uma função shell no lugar de um alias, podemos referenciar os argumentos, como, neste caso, $1de acordo com nossas necessidades.

informação relacionada