terminal -e com vários comandos

1

Eu tenho uma máquina Arch Linux com Openbox, e quero executar uma atualização no meu script de auto-inicialização (bash) - então eu adicionei o seguinte comando ao meu início automático: rxvt -e sudo pacman -Syu & (ou seja, abra rxvt terminal e execute o comando de atualização padrão para o gerenciador de pacotes do Archlinux, pacman ).

No entanto, às vezes o banco de dados é bloqueado por outro pacman processo, e então o comando falha e apenas fecha rxvt sem fazer nada - então eu queria remover o bloqueio primeiro usando rxvt -e sudo rm /var/lib/pacman/db.lck && sudo pacman -Syu & (remover o bloqueio pacman e depois atualizar). Isso não funciona, na verdade, apenas o primeiro comando é executado na instância rxvt .

Existe alguma maneira de acertar (executando dois comandos em um terminal aberto com um sinal -e )? Eu sei que eu poderia abrir dois terminais separados, cada um executando um comando, mas isso seria realmente confuso na minha opinião. Alternativamente, se houver outra forma mais simples de garantir que o bloqueio não esteja lá, também está tudo bem para mim (embora eu prefira no mesmo terminal para que eu possa ver a saída do rm claramente)

    
por Odedi 09.08.2016 / 22:22

1 resposta

1

Use aspas para tornar isso um único comando:

rxvt -e  "sudo rm /var/lib/pacman/db.lck && sudo pacman -Syu" &

Alguns terminais precisam ser envolvidos em um comando shell, por exemplo,

rxvt -e sh -c "sudo rm -f /var/lib/pacman/db.lck && sudo pacman -Syu" &

O sinal -f ignora o arquivo se não está lá e evita um erro

    
por 09.08.2016 / 22:33

Tags