Execute o terminador no diretório necessário e, em seguida, execute o comando necessário


9

Quero abrir o Terminator em um diretório específico, por exemplo /home/downloads/, e depois executar um comando.

Eu fiz a primeira parte com esse "comando personalizado": O cd /home/downloads; bash Terminator agora começa neste diretório, mas como posso fazer a segunda parte?

Agora que terminator foi iniciado no diretório de downloads, eu quero executar qualquer comando eu quero, por exemplo, lsou rakede comando ou usar alguns aliases como comandos. Como posso fazer isso?

Pressiono o botão direito do mouse no terminador e escolho Parâmetros, depois Layouts e adiciono texto na seção de comando Personalizado.

Tudo isso deve ser realizado automaticamente após o início do terminador.


Qual comando você deseja executar? Apenas corra. Deseja que isso aconteça automaticamente sempre que você abrir o terminator? Por favor edite sua pergunta e i) esclarecer o que você quer fazer e ii) nos dizer exatamente como você configurar este "comando personalizado", foi nas opções do terminator?
terdon

Sim, eu quero que o primeiro e o segundo comando sejam executados automaticamente depois que o terminador for executado, mas agora eu sei apenas como executar o primeiro comando e funcionou, mas não sei como executar o segundo comando. O primeiro comando é: "cd" para qualquer catálogo e o segundo comando deve ser o que eu quiser, neste catálogo ou não. Eu edito minha pergunta. Desculpe pela minha linguagem feia.
Asq

Respostas:


4

Execute cd /home/downloads; exec bashcomo o comando personalizado. (O execcomponente interno garante que bashele será filho do emulador de terminal; sem ele, pode acabar sendo neto.) Você pode executar terminator -e 'cd /home/downloads; exec bash'na linha de comando.

Você não pode usar aliases no comando personalizado porque seus aliases são definidos por ~/.bashrc, mas esse arquivo é carregado apenas por shells interativos, não pelo shell de script usado como cola aqui entre o emulador de terminal e o shell de script. Se você quiser usar aliases, precisará carregá-los explicitamente. Se você os mantiver em um arquivo separado, isso seria algo como

. ~/.bash_aliases; cd /home/downloads; exec bash

ou na linha de comando

terminator -x bash -c '. ~/.bash_aliases; cd /home/downloads; exec bash'

Se seus aliases estiverem ativados ~/.bashrc, use . ~/.bashrc, mas tenha cuidado, pois pode haver coisas .bashrcque causem erros, porque o shell não é interativo. Se isso acontecer, a solução mais fácil é dividir seus aliases (e funções e qualquer outra configuração que você queira usar no código de cola) em um arquivo separado e usá-lo .para incluí-los .bashrc.


3

Eu tive o mesmo problema para ativar ambientes virtuais com o Terminator .

O truque é fazer tudo com apenas comando "one": bash. Aproveitando sua -iopção (interativa) e usando um costume --rcfileno qual PROMPT_COMMANDestá definido como o que queremos executar. O resultado seria assim:

command = "bash --rcfile <(cat ${HOME}/.bashrc; echo 'export PROMPT_COMMAND="your commands; go here; unset PROMPT_COMMAND"') -i"

Simplesmente substitua your commands; go here;pelos seus comandos reais. Veja esta resposta para uma explicação .


Alguma idéia de por que o comando especificado não pode ser encerrado com ctrl + c?
Flowkap

2

Basta adicionar o outro comando da mesma maneira que você adicionou o primeiro. Por exemplo, para executar ls:

cd /home/downloads; ls; bash

Você pode adicionar isso à opção "comando" do seu perfil:

insira a descrição da imagem aqui

O motivo que você não entende rakeé que ele não está no caminho padrão. Para usá-lo, você precisa especificar o caminho. Então, primeiro execute este comando no seu terminal:

type rake

Isso retornará algo como /foo/bin/rake. Esse é o caminho que você precisa. Pegue-o e adicione-o ao comando Personalizado acima:

cd /home/downloads; /foo/bin/rake; bash

Isso não funcionará para aliases. Os aliases são configurados pelo seu shell e não estarão disponíveis aqui. Uma solução alternativa é usar scripts. Portanto, se você tiver um alias como este:

alias foo="command1 argument2"

Crie um script, chame-o foo.she salve-o /home/youruser/bincom este conteúdo:

#!/usr/bin/env bash
command1 argument2

E torne-o executável:

chmod a+x /home/username/bin/foo.sh

Em seguida, na seção "Comando personalizado", use:

cd /home/downloads; /home/username/bin/foo.sh; bash

Sim, eu sei disso e o comando "ls" funciona, mas 1. por exemplo, o comando "rake" não funciona e o terminal mostra erro: "/ bin / bash: rake: comando não encontrado" 2. Eu tenho alguns apelidos e, para exemplo "cd / home / downloads; 'aliasname'; bash" também não funciona, o terminal mostra o mesmo erro
Asq

@ Asq bem, sim, é por isso que eu pedi para você nos dizer qual comando você deseja executar. Edite sua pergunta e dê exemplos específicos. Os aliases não funcionam, você pode esquecer isso, mas rakedeve se usar o caminho completo /path/to/rake.
terdon

Preciso editar minha pergunta principal? E o que você quer dizer com "se você usar o caminho completo / caminho / para / rake"? Eu cd para o diretório onde eu sempre uso ancinho e do trabalho, mas "cd / path / to / ancinho; ancinho; bash" não funciona
ASQ

@Asq sim, edite sua pergunta original. Não cd /path/to/rake; rake; bashfaça /path/to/rake; rake; bash.
terdon

:( eu uso o comando rake quando eu estou no diretório / home / 123. Eu adiciono agora no comando personalizado isso: "/ home / 123; rake; bash", mas o console me mostra 2 erros: 1. / bin / bash: / home / 123: Este é um catálogo 2. / bin / bash: rake: command not found
Asq

1

Se você clicar com o botão direito do mouse em uma janela aberta do Terminator, poderá escolher "Preferências". Escolha o "Perfil" e, a partir daí, a guia "Comando". Há uma caixa de seleção intitulada "Executar um comando personalizado em vez do meu shell".

Eu acredito que é isso que você está procurando.


1

Apenas não use ' command =' para alterar o diretório. Use-o para o seu comando real!

Ao editar .config/terminator/config, basta especificar

  • ' directory = <dir>' quando você desejar que o terminal faça cd automaticamente em um determinado diretório, ou
  • ' command = <cmd>; <your_shell>' quando você deseja executar um comando personalizado, e não simplesmente alterar o diretório

Por exemplo:

  • Se você deseja apenas que o terminal entre em CD <dir>na inicialização, especifique 'directory' e deixe 'command' vazio:

    [[terminal7]]]
    directory = /home/dan/src/wmc
    order = 1
    parent = child3
    profile = default
    type = Terminal
    uuid = ebbe5595-06be-43ff-b7ce-4534aa6bb7f8
  • Se você deseja executar apenas um comando personalizado, especifique apenas o comando:

    [[terminal7]]]
    command = /home/dan/mine/my-custom-command
    order = 1
    parent = child3
    profile = default
    type = Terminal
    uuid = ebbe5595-06be-43ff-b7ce-4534aa6bb7f8
  • Se você deseja que ambos cdem em DIR e executem o comando:

    [[terminal7]]]
    directory = /home/dan/dl-dir
    command = /home/dan/mine/my-custom-command-to-run-in-dlDIR
    order = 1
    parent = child3
    profile = default
    type = Terminal
    uuid = ebbe5595-06be-43ff-b7ce-4534aa6bb7f8
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.