combinando comandi sul terminale su Mac OS X


18

Vorrei scrivere quanto segue su una riga del terminale o se esiste un modo più breve per creare un file e impostare le autorizzazioni, si prega di fare un commento.

sudo touch .htaccess
sudo chmod 766 .htaccess

Molto apprezzato

Risposte:


31

Utilizzare '&&' per eseguire in modo condizionale il secondo comando se il primo ha esito positivo.

sudo touch .htaccess && sudo chmod 766 .htaccess


2
Preferisco questa soluzione per due motivi: 1. &&è generalmente migliore di ;così che si interrompe se il primo comando fallisce, 2. è generalmente meglio eseguire solo il programma specifico necessario sudo, piuttosto che cercare di combinarli in un'unica sudochiamata ed esecuzione più codice con privilegi elevati rispetto al necessario.
Chris Page

Cosa succede se voglio fare scp admin@host.com:file1 && scp admin@host.com:file2 && scp admin@host.com:file3e ho impostato la password sulla mia chiave SSH, mi chiede sempre la password, c'è un modo per combinarla ???
Akshay Khale il

2

No non lo è.

L'unica cosa che puoi fare, puoi combinare questi due comandi in uno sudo:

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

Un'altra soluzione (senza una chiamata esterna, ma anche con due comandi):

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

1
Buoni suggerimenti, ma vorrei rivederli da usare &&invece di ;, però. Inoltre, in generale userei solo due sudocomandi, perché è eccessivo e rischioso eseguire un'intera shell con privilegi elevati, piuttosto che solo i programmi esatti che devono essere eseguiti con loro (in questo caso, toccare e chmod).
Chris Page

Sì, hai ragione, sarebbe meglio
Igor Chubin,

1

I punti e virgola ti permetteranno di adattare più comandi su una singola riga come questa:

sudo touch .htaccess; sudo chmod 766 .htaccess


1
Questo è un buon suggerimento, anche se è una buona idea prendere l'abitudine di usare &&invece di ;quando si eseguono comandi interdipendenti in modo che si fermi se un comando fallisce.
Chris Page

0

separare i comandi con punto e virgola. (;)

Esempio

echo firstname; echo lastname;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.