łą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

Odpowiedzi:


31

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

sudo touch .htaccess && sudo chmod 766 .htaccess


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

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


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.