Como combinar vários comandos no terminal?


25

Eu tenho os seguintes comandos.

cd import
zcat urls1.sql.gz | mysql -u root -p urls
cd /var/www/project1/
nano 1.php

A partir de agora eu estou executando um por um.

Existe uma maneira de combinar esses comandos em uma linha?


3
Você fez alguma pesquisa para esta pergunta?
don.joey

Essa não foi a minha pergunta. Apenas meio minuto de pesquisa no Google teria lhe dado a resposta. Por isso, fiquei me perguntando o que você já havia encontrado, se é que havia alguma coisa.
don.joey

O que faz você pensar que eu diminuí a votação da sua pergunta? Eu vou negligenciar sua raiva. Como observação lateral, a pergunta "qual é o melhor: usar ;ou &&executar vários comandos em uma linha" é muito melhor, tem mais pesquisas e provavelmente teria atraído muitos votos positivos.
don.joey

Existe uma variante mais genérica dessa pergunta disponível em askubuntu.com/questions/334994/… . Ele lida exatamente com a pergunta que mencionei no comentário anterior.
don.joey

Não se preocupe Giri. A essência da questão é interessante. Fiz o esforço de fazer uma variante genérica.
don.joey

Respostas:


33

Sim, separe com um ponto e vírgula da seguinte forma:

dir; ls -l

A maioria dos lanugauges / shells usa o ponto-e-vírgula para indicar o final de um comando e começar de novo enquanto avalia da esquerda para a direita.

Ou como o @RobieBasak recomenda, use && em vez de; para se proteger contra acidentes de codificação.

dir && ls -l

23
É uma boa ideia usar em &&vez de ;. Isso garante que os comandos subseqüentes sejam executados apenas se os comandos anteriores não falharem. Isso evita algumas consequências embaraçosas. Por exemplo: cd /somewhere_else; rm -Rf *poderia fazer algo desastroso se /somewhere_elsenão existir ou você escrever errado; cd /somewhere_else && rm -Rf *protege você disso.
precisa saber é o seguinte

2
A solução '&&' é tão boa que deve ser a primeira recomendação nesta resposta. Edite sua resposta e promova a melhor resposta para o primeiro lugar.
Kerem Baydoğan

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.