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

Antworten:


31

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

sudo touch .htaccess && sudo chmod 766 .htaccess


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 admin@host.com:file1 && scp admin@host.com:file2 && scp admin@host.com: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'

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


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;
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.