alias para criar um novo diretório e ir para ele [duplicado]

0

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 criado com sucesso, mas quando eu quero 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
    
por Galaxy 22.09.2016 / 01:47

1 resposta

0

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

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

Exemplo:

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

Notas:

  1. A opção -p para mkdir diz para criar diretórios-pai ausentes, se necessário. No exemplo acima, dir1 não existia, mas mkdir -p dir1/dir2 criou dir1 e dir2 .

  2. Como usamos o operador de shell && , o comando cd será executado apenas se o comando mkdir for bem-sucedido.

  3. Os aliases são úteis em casos muito simples em que uma cadeia fixa pode ser substituída por uma palavra. Os aliases não processam argumentos.

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

por 22.09.2016 / 01:49