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

Derren
fonte

Respostas:

31

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

sudo touch .htaccess && sudo chmod 766 .htaccess

vassoura
fonte
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 [email protected]:file1 && scp [email protected]:file2 && scp [email protected]: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'
Igor Chubin
fonte
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

Vickash
fonte
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;
Chetan Laddha
fonte