Ajuda a escrever a função bash como um alias de uma linha

5

Como escrevo isto como um alias?

p() {
    DIR=~/projects/$@
    pushd "$DIR"
}

Isso é o máximo que eu consegui, mas é stdin de piping para pushd ao invés de xargs:

alias p="xargs printf ~/projects/%s | pushd"

Provavelmente é melhor como uma função, mas eu sinto que gostaria de aprender alguma coisa sabendo como escrevê-la em uma linha e acertar as coisas.

Obrigado!

    
por Raine 23.04.2014 / 21:26

1 resposta

8

Como os comentários do @AndreasWiese, você não pode fazer isso com um alias. Os aliases adicionam argumentos separados por espaços, portanto, você não pode uni-los (de uma maneira simples) ao comando com alias.

Um comentário sobre sua função: Por que você está usando $@ ? Você deve usar $1 . Se você chamar sua função com vários argumentos ( p a b c ), provavelmente obterá um erro ( b: command not found ) um diretório desconhecido.

    
por 23.04.2014 / 21:52

Tags