Kombinieren von Befehlen auf dem Terminal unter Mac OS X

18

Ich möchte Folgendes in eine Zeile im Terminal schreiben oder wenn es einen kürzeren Weg gibt, eine Datei zu erstellen und die Berechtigungen festzulegen, kommentieren Sie dies bitte.

sudo touch .htaccess
sudo chmod 766 .htaccess

Sehr geschätzt

Derren
quelle

Antworten:

31

Verwenden Sie '&&', um den zweiten Befehl bedingt auszuführen, wenn der erste erfolgreich ist.

sudo touch .htaccess && sudo chmod 766 .htaccess

Besenfresser
quelle
2
Ich bevorzuge diese Lösung aus zwei Gründen: 1. &&ist im Allgemeinen besser als ;anzuhalten, wenn der erste Befehl fehlschlägt, 2. ist es im Allgemeinen besser, nur das spezifische Programm auszuführen, das benötigt wird sudo, anstatt zu versuchen, sie in einem einzigen sudoAufruf zu kombinieren und auszuführen mehr Code mit erhöhten Rechten als nötig.
Chris Seite
Was mache scp [email protected]:file1 && scp [email protected]:file2 && scp [email protected]:file3ich, wenn ich ein Passwort für meinen SSH-Schlüssel festgelegt habe und mich ständig nach dem Passwort fragt? Gibt es eine Möglichkeit, es zu kombinieren?
Akshay Khale
2

Nein ist es nicht.

Sie können diese beiden Befehle nur in einem kombinieren sudo :

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

Eine andere Lösung (ohne einen externen Anruf, aber auch mit zwei Befehlen):

sudo sh -c 'umask 011 && touch .htaccess'
Igor Chubin
quelle
1
Gute Vorschläge, aber ich würde diese überarbeiten, um sie &&stattdessen zu verwenden ;. Außerdem würde ich im Allgemeinen nur zwei sudoBefehle verwenden, da es übertrieben und riskanter ist, eine ganze Shell mit erhöhten Berechtigungen auszuführen, anstatt nur die genauen Programme, die mit ihnen ausgeführt werden müssen (in diesem Fall touch und chmod).
Chris Seite
Ja, Sie haben Recht, es wäre besser
Igor Chubin
1

Mit Semikolons können Sie mehrere Befehle in eine einzelne Zeile einfügen:

sudo touch .htaccess; sudo chmod 766 .htaccess

Vickash
quelle
1
Das ist ein guter Vorschlag, obwohl es eine gute Idee, in die Gewohnheit, zu verwenden , &&anstatt ;wenn voneinander abhängige Befehle ausführen , so dass er stoppt , wenn ein Befehl fehlschlägt.
Chris Seite
0

Trennen Sie die Befehle mit einem Semikolon. (;)

Beispiel

echo firstname; echo lastname;
Chetan Laddha
quelle