Chcę napisać analogiczny Ubuntu do „pliku wsadowego” (skrypt powłoki). Ale nie wiem, jak użyć polecenia, aby skrypt mógł być uruchomiony. Nie wiem też, gdzie go używać.chmod +x filename
permissions
scripts
chmod
executable
execute-command
użytkownik265696
źródło
źródło
chmod
tak naprawdę nie dotyczy tych systemów operacyjnych, a „plik wsadowy” był przerażający . OP tutaj (ostatnio widziany w 2014 r.) Chciał napisać i uruchomić coś podobnego do pliku wsadowego. W przeciwieństwie do systemów operacyjnych uniksopodobnych użytkownicy Windows (i DOS) nie muszą używać niczego takiego,chmod +x
aby to zrobić, aby mogli uruchamiać skrypty w taki sam sposób, jak uruchamiają pliki binarne. Zredagowałem trochę, aby wyjaśnić pytanie, i głosuję za ponownym otwarciem.Odpowiedzi:
W skrócie:
chmod +x
na pliku (twoim skrypcie) oznacza tylko, że sprawisz, że będzie on wykonywalny. Kliknij skrypt prawym przyciskiem myszy i wybierz Właściwości -> Uprawnienia -> Zezwalaj na uruchamianie pliku jako programu , pozostawiając dokładnie taki sam wynik jak polecenie w terminalu.Jeśli plik, na którym chcesz zmienić uprawnienia, znajduje się w katalogu systemowym, może być konieczne
root
, aby tak było: (bądź ostrożny, używającsudo
polecenia)Nie jest też jasne, co dokładnie chcesz zarchiwizować tutaj. Edytuj swoje pytanie i podaj więcej szczegółów na temat rzeczywistego problemu!
Możesz również odnieść się do tego pytania, aby uzyskać więcej informacji: chmod u + x 'versus' chmod + x
W długim:
Wpisz
man chmod
w oknie terminala ( Ctrl+ Alt+ T), a otrzymasz następujące dane wyjściowe:NAZWA: chmod - zmień bity trybu pliku
STRESZCZENIE
OPIS
SETUID I SETGID BITS
OPCJE
źródło
chmod u+x
sprawi, że będzie wykonywalny tylko dla ciebiePo pierwsze, twój skrypt musi zadeklarować, którego interpretatora użyć. Robisz to w pierwszym wierszu pliku. Jeśli jest to skrypt powłoki, powinien to być
#!/bin/sh
lub#!/bin/bash
.Oto skrypt, który zapisuje twoją nazwę użytkownika: echo-whoami.sh
#!/bin/sh echo $(whoami)
Aby to zrobić, użyj
chmod +x echo-whoami.sh
. Następnie możesz uruchomić go za pomocą./echo-whoami.sh
.źródło
Plik wsadowy i skrypt powłoki to dwa terminy, które w praktyce oznaczają to samo w systemie Linux. Jednak termin skrypt jest znacznie częściej używany .
Najprostszy plik skryptu powłoki zawiera tylko polecenia , które należy wpisać w wierszu poleceń (to znaczy interpreter poleceń Bash). Teoretycznie możesz nawet zastąpić tłumacza dowolnym językiem, który ci się podoba (i mieć tłumacza). Mówiąc dokładniej, sugeruje się, aby zacząć od pierwszego wiersza
#!/bin/sh
(jeśli nie chcesz maksymalnej przenośności ze starszymi systemami)lub
#!/bin/bash
(jeśli potrzebujesz dodatkowych funkcji, prawdopodobnie dzisiaj Cię to nie obchodzi)Po tym wierszu wprowadź polecenia, po jednym w każdym wierszu. Istnieje wiele dodatkowych konstrukcji wykraczających poza zakres tych pytań, patrz
man bash
lub http://www.tldp.org/LDP/Bash-Beginners-Guide/Bash-Beginners-Guide.pdf (dla początkujących) lub http: // www .tldp.org / LDP / abs / abs-guide.pdf (w przypadku bardziej zaawansowanych pytań).Aby faktycznie uruchomić skrypt, istnieją dwa wymagania: po pierwsze, proces interpretera musi odczytać plik , a po drugie sprawdza, czy jest on oznaczony jako wykonywalny . Ze względów wygody przydatna jest także możliwość pisania do skryptu (aby można było wprowadzać zmiany lub poprawki, powinny być).
Zakładając ponadto, że chcesz, aby członkowie zespołu i inni mogli także uruchamiać (i widzieć) twój skrypt, ale nie chcesz, aby oni nim manipulowali, połączenie
a+x
lub+x
, jaka
jest to ustawienie domyślne),a+r
lub+r
, jaka
to ponownie jest domyślne),u=w
)są zwykle rozsądnymi wartościami uprawnień do plików. Możesz wpisać pojedyncze akcje połączone, oddzielone przecinkiem.
Chociaż ten „język akcji” jest bardzo fascynujący (zauważ różnicę między operatorem
+
a=
operatorem, które dają różne wyniki w zależności od ustawienia uprawnień przed ich zmianą), są one żmudne w pisaniu.Ponieważ wszystkie akcje tworzą maski bitowe, które są stosowane wewnętrznie, możesz także wpisać maski bitowe (zobacz
man chmod
szczegóły) również bezpośrednio.W przypadku shellscript chmod 755 myscript.sh ma sens w co najmniej 95% wszystkich przypadków.
źródło