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.