combinando comandos no terminal no Mac OS X


18

Gostaria de escrever o seguinte em uma linha no terminal ou, se houver uma maneira mais curta de criar um arquivo e definir as permissões, faça um comentário.

sudo touch .htaccess
sudo chmod 766 .htaccess

Muito apreciado

Respostas:


31

Use '&&' para executar condicionalmente o segundo comando, se o primeiro for bem-sucedido.

sudo touch .htaccess && sudo chmod 766 .htaccess


2
Prefiro esta solução por dois motivos: 1. &&geralmente é melhor do ;que parar, se o primeiro comando falhar; 2. geralmente é melhor executar apenas o programa específico necessário sudo, em vez de tentar combiná-los em uma única sudochamada e execução. mais código com privilégios elevados do que o necessário.
31512 Chris Página

E se eu quiser fazer scp admin@host.com:file1 && scp admin@host.com:file2 && scp admin@host.com:file3e tiver definido a senha na minha chave SSH, ela está me pedindo senha o tempo todo, existe uma maneira de combiná-la ???
Akshay Khale 05/12/19

2

Não não é.

A única coisa que você pode fazer é combinar esses dois comandos em um sudo:

sudo sh -c 'touch .htaccess && chmod 766 .htaccess'

Outra solução (sem uma ligação externa, mas também com dois comandos):

sudo sh -c 'umask 011 && touch .htaccess'

1
Boas sugestões, mas eu as revisaria para usar em &&vez de ;, no entanto. Além disso, em geral, eu usaria apenas dois sudocomandos, porque é um exagero e mais arriscado executar um shell inteiro com privilégios elevados, em vez de apenas os programas exatos que precisam ser executados com eles (neste caso, touch e chmod).
31512 Chris Página

Sim, você está certo, seria melhor
Igor Chubin

1

O ponto e vírgula permitirá que você ajuste vários comandos em uma única linha como esta:

sudo touch .htaccess; sudo chmod 766 .htaccess


1
Essa é uma boa sugestão, embora seja uma boa idéia adquirir o hábito de usar, em &&vez de ;executar comandos interdependentes, para que pare se um comando falhar.
31412 Chris Page

0

separe os comandos com ponto e vírgula. (;)

Exemplo

echo firstname; echo lastname;
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.