Diferença entre e comercial (&) antes ou depois dos argumentos do comando

1

Eu sou um usuário do Windows e estou usando o Cygwin como meu terminal. Para executar o notepad ++ do terminal, adicionei estas linhas ao ~ / .bash_profile:

npp () {
    /cygdrive/d/Notepad++/notepad++.exe $(cygpath -w -- "$@")
    }

funcionou, então eu precisava de uma maneira de iniciá-lo no plano de fundo para que eu pudesse abrir uma instância do npp ++ sem interromper o fluxo do meu terminal. Isso funcionou:

npp foo &

Mas eu não queria introduzir esse e comercial manualmente, então eu tentei adicionar este alias para ~ / .bash_profile:

alias npp="npp &"

E agora:

npp foo

Funciona em segundo plano.

O problema é que com os comandos gnu / linux você precisa escrever "e" comercial após os argumentos, se não, não funcionará.

isso funciona:

ls directory &

Isso não acontece:

ls & directory

Então, eu gostaria de saber o que estou perdendo aqui, porque:

npp foo

Realmente funciona em segundo plano quando eu defino

alias npp="npp &"

E isso não acontece quando eu comento.

    
por adriloma 13.03.2016 / 11:43

1 resposta

0

O comando a seguir está iniciando em segundo plano o executável ls passando directory como seu argumento único, é o que você deseja fazer:

ls directory &

Esse está lançando ls em segundo plano sem nenhum argumento e, em seguida, está (tentando) lançar directory como um comando em primeiro plano, não é isso que você deseja fazer:

ls & directory

Usar um alias não altera esse comportamento, a menos que cygwin sh tenha um recurso específico que não conheço, o que duvido muito.

    
por 13.03.2016 / 11:44