Como posso transformar o comportamento de 'gedit something & disown' no comportamento padrão ao chamar gedit a partir da linha de comando?

3

Quando eu gedit arquivos da linha de comando, ele sempre está bloqueando o terminal e estou cansado de comandar explicitamente um processo separado para ele.

Eu tentei apelidar gedit como algo como gedit $* & disown , mas essa não é a sintaxe correta ou você não pode sobrecarregar comandos binários executáveis com aliases (tentei usar isso em uma função .bash_aliases,

alias gedit=editorz

function editorz()
{
  gedit $* & disown
}

), mas não é necessário.

Então, como eu faço o comando gedit test.txt não bloquear a janela do terminal de origem?

    
por Kzqai 18.01.2011 / 19:56

4 respostas

6

Isso deve funcionar: você tem certeza de que seu .bash_aliases é lido? (Não é um arquivo padrão, mas pode ser originado pelo seu ~/.bashrc . Se você está confuso sobre .bashrc e .bash_profile , consulte Diferença entre .bashrc e .bash_profile .)

Há um bug em sua função: deve ser

editorz () {
  gedit "$@" & disown
}

Sua versão não funciona em nomes de arquivos que contenham espaços ou curingas de shell. A palavra-chave function é opcional.

Você pode chamar a função gedit (e dispensar o alias completamente), mas você precisa dizer ao shell que a chamada dentro da função é para o comando e não para a função:

gedit () {
  command gedit "$@" & disown
}

Note que se você acidentalmente iniciou o gedit em primeiro plano (ou seja, bloqueando seu terminal), você pode colocá-lo em segundo plano pressionando Ctrl + Z no terminal e inserindo o comando bg .

    
por 18.01.2011 / 22:14
1

Certifique-se de que function editorz() esteja definido antes do alias.

Eu tentei a sua abordagem e funcionou sem problemas.

    
por 18.01.2011 / 21:10
1

Abrir gedit da pasta Utilitários (em vez de um terminal) resolve o problema para mim

    
por 05.08.2011 / 06:14
-2

adicione o seguinte apelido:

alias gedit='gedit -b'

a opção -b significa executar em segundo plano

    
por 03.04.2015 / 11:07