Alias cd e ls com suporte a espaços e argumentos

5

Então eu comecei com this discussão, e basicamente faz exatamente o que eu quero.

No entanto, a solução para preservar o espaço em branco do diretório usando aspas falha ao usar argumentos, por exemplo, %código%. Alguma idéia para preservar o espaço em branco e permitir bandeiras de opções?

Esta é a função que estou usando no momento.

function cd {
    new_directory="$*";
    if [ $# -eq 0 ]; then 
        new_directory=${HOME};
    fi;
    builtin cd "${new_directory}" && ls;
}

Por exemplo, com o acima, cd -P dir se torna cd -P My\ Documents/ , o que obviamente falha.

    
por Jon 21.08.2013 / 00:38

1 resposta

5

Quando você escreve $* , você perdeu: isso apaga a distinção entre espaços em um argumento e espaços para separar argumentos. Use "$@" , que se expande para uma palavra por argumento.

function cd {
  builtin cd "$@" && ls
}
    
por Gilles 21.08.2013 / 00:58