Alias ou função adequadamente definida em vez de 'sudo nemo.'

0

OS: Linux Mint 18.x Cinnamon 64 bits

Digamos que eu queira executar nemo , o gerenciador de arquivos padrão no Cinnamon, com% normalsudo e no diretório de trabalho atual:

sudo nemo .

Problemas:

  1. Ele mostra diferentes erros menores que eu não me importo, como:

    (nemo:21081): Gtk-WARNING **: Failed to register client: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.SessionManager was not provided by any .service files
    
  2. Depois de fechá-lo, demora exatamente 30 segundos para o gnome-terminal devolver o controle para mim.

O objetivo é definir um bash alias ou function , que não teria esses dois ou outros aspectos negativos.

Além disso:

  1. Eu gostaria que ele desse o controle de volta imediatamente, para que eu pudesse trabalhar com o Nemo e o Terminal independentemente.

  2. Eu gostaria de poder executá-lo como é para o diretório de trabalho ou dar a ele algum diretório como argumento.

por Vlastimil 03.11.2017 / 14:13

1 resposta

0

Do meu ponto de vista, o método mais eficaz é:

  1. Use um Subshell , ou seja, ( e ) no início e o fim dos comandos reais.

  2. Conte com o comando & no final.

  3. Como o estamos executando como um processo em segundo plano, normal sudo não funcionaria, então temos que usar o equivalente gráfico, gksudo .

  4. IMHO isso não é possível com alias , precisamos definir um function , porque precisamos verificar se o argumento foi dado e agir de acordo.

  5. O redirecionamento de qualquer saída para o buraco negro ( > /dev/null 2>&1 ) é um bom hábito meu. Na verdade, não fazendo nada em tal caso como este.

A função abaixo atende às minhas expectativas, sinta-se à vontade para adicionar suas soluções.

Solução de trabalho no Linux Mint 18.x

function sunemo {
    if [ -z "$1" ]
    then
        (gksudo nemo .    > /dev/null 2>&1 &)
    else
        (gksudo nemo "$1" > /dev/null 2>&1 &)
    fi
}

Como você provavelmente notou, no Linux o Mint 19.x gksudo foi removido.

Solução de trabalho no Linux Mint 19.x

function sunemo {
    if [ -z "$1" ]
    then
        (nemo "admin://$PWD" > /dev/null 2>&1 &)
    else
        (nemo "admin://$1"   > /dev/null 2>&1 &)
    fi
}
    
por 03.11.2017 / 14:13