łączenie poleceń w terminalu w systemie Mac OS X

18

Chciałbym napisać następujące w jednym wierszu w terminalu lub jeśli istnieje krótszy sposób na utworzenie pliku i ustawienie uprawnień, proszę o komentarz.

sudo touch .htaccess
sudo chmod 766 .htaccess

Bardzo mile widziane

Derren
źródło

Odpowiedzi:

31

Użyj „&&”, aby warunkowo uruchomić drugie polecenie, jeśli pierwsze się powiedzie.

sudo touch .htaccess && sudo chmod 766 .htaccess

broomdodger
źródło
2
Wolę to rozwiązanie z dwóch powodów: 1. &&jest ogólnie lepsze niż ;zatrzymywanie się, jeśli pierwsze polecenie się nie powiedzie, 2. ogólnie lepiej jest uruchamiać tylko potrzebny program sudo, niż próbować połączyć je w jedno sudowywołanie i uruchomić więcej kodu z podwyższonymi uprawnieniami niż to konieczne.
Chris Page
Co jeśli chcę to zrobić scp [email protected]:file1 && scp [email protected]:file2 && scp [email protected]:file3i ustawiłem hasło do mojego klucza SSH, to ciągle pyta mnie o hasło, czy istnieje sposób, aby je połączyć?
Akshay Khale,
2

Nie, nie jest.

Jedyne, co możesz zrobić, możesz połączyć te dwa polecenia w jednym sudo:

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

Inne rozwiązanie (bez jednego połączenia zewnętrznego, ale także z dwoma poleceniami):

sudo sh -c 'umask 011 && touch .htaccess'
Igor Chubin
źródło
1
Dobre sugestie, ale skorygowałbym je, aby użyć &&zamiast ;. Poza tym generalnie użyłbym dwóch sudopoleceń, ponieważ uruchamianie całej powłoki z podwyższonymi uprawnieniami jest nadmierniejsze i bardziej ryzykowne, niż tylko dokładne programy, które muszą z nimi działać (w tym przypadku touch i chmod).
Chris Page
Tak, masz rację, byłoby lepiej
Igor Chubin
1

Średniki pozwolą ci zmieścić wiele poleceń w jednym wierszu w następujący sposób:

sudo touch .htaccess; sudo chmod 766 .htaccess

Vickash
źródło
1
To dobra sugestia, choć warto przyzwyczaić się do używania &&zamiast ;uruchamiania poleceń współzależnych, aby przestało działać w przypadku niepowodzenia polecenia.
Chris Page
0

rozdziel polecenia średnikiem. (;)

Przykład

echo firstname; echo lastname;
Chetan Laddha
źródło