Alias para abrir vários arquivos de texto em diretórios diferentes do terminal

0

Depois de horas pesquisando e tentando diferentes plugins de gedit eu não consegui adicionar um protetor de sessão ao gedit para abrir alguns arquivos no Ubuntu 14.04 (veja aqui ).

Então, estou tentando criar um alias permanente do bash, editando ~/.bashrc para adicioná-lo.

O alias é:

alias a="
         cd /home/konstantinosubuntu/Desktop/abc && gedit test1.c
      && cd /home/konstantinosubuntu/Desktop/xyz && gedit test2.c"

Depois, uso . ~/.bashrc para recarregar as alterações que fiz nos aliases. Mas este alias só abre o primeiro arquivo (aqui, test1.c) e se eu trocar as linhas 2 e 3 ele abre test2.c. Isso significa que não há problema com o caminho. Em vez disso, o erro que recebo está no segundo && , que é bash: erro de sintaxe próximo do token inesperado '& amp; & amp;' . Por que esse erro está aparecendo? Qual alias devo usar para abrir vários arquivos de uma só vez?

    
por mgus 16.08.2014 / 17:08

1 resposta

0

Sobre como escrever esse alias:

O alias não precisa abrir os arquivos separadamente - gedit pode receber vários arquivos.

alias a="gedit ~/Desktop/abc/test1.c ~/Desktop/xyz/test2.c"

Isso também substitui o caminho do seu diretório home por ~ . Se ele funcionar para outros usuários, use ~konstantinosubuntu em vez de ~ .

Para tornar o comando independente do terminal, para que ele continue em execução se você fechar o terminal, você pode adicionar & para executá-lo em segundo plano e nohup para que ele não saia quando o terminal for fechado:

alias a="nohup gedit ~/Desktop/abc/test1.c ~/Desktop/xyz/test2.c &"


Na sintaxe do seu exemplo:

O problema com o && é que o && precisa ser colocado no final da linha anterior. Caso contrário, o fim da linha é apenas o fim do comando - não há problema até agora - e o início da próxima linha tem um "& amp; & amp;" isso não faz sentido neste lugar.

alias a="
         cd /home/konstantinosubuntu/Desktop/abc && gedit test1.c &&
         cd /home/konstantinosubuntu/Desktop/xyz && gedit test2.c"

Como alternativa, todo o pseudônimo poderia ser colocado em uma linha. Ou, muito semelhante, uma continuação de linha com \ no final da linha poderia ser usada. Isso seria escrevê-lo como duas linhas, mas executá-lo como uma linha, logicamente.

Você observa em seus comentários que o primeiro gedit precisa ser fechado antes do segundo arquivo ser aberto e que você não deseja isso. O comando gedit file.txt executa gedit em primeiro plano se for a primeira instância. Se gedit já estiver em execução, ele abrirá uma nova guia nessa instância e sairá. Para fazer com que o alias abra ambos os arquivos no gedit ao mesmo tempo, execute a primeira instância em segundo plano com & . Isso não funciona junto com && , que precisa ser removido:

alias a="
         cd /home/konstantinosubuntu/Desktop/abc && gedit test1.c &
         cd /home/konstantinosubuntu/Desktop/xyz && gedit test2.c"

(Interessante como é diferente apenas por um caractere, mas com significado muito diferente.)

Caso pretenda ter vários diretórios de trabalho atuais associados de alguma forma com a execução de gedit usando os comandos cd , isso não funcionará. Um processo tem exatamente um diretório de trabalho atual. Será o primeiro da instância gedit aqui.


Só para ficar claro depois de discutir esses exemplos, acho melhor usar algo como na primeira seção, abrindo um gedit com vários arquivos de uma só vez.

    
por Volker Siegel 16.08.2014 / 18:27