Konfiguracja sprzętu i oprogramowania

Wybór skryptów powłoki na każdą okazję. Jak stworzyć własny skrypt (skrypt skryptowy) w Linuksie Gotowe skrypty w powłoce Linux

W społeczeństwie administratorów systemów i zwykłych użytkowników Linuksa bardzo często słynną praktyką jest pisanie skryptów Bash w celu ułatwienia i uproszczenia realizacji określonych celów w system operacyjny Linuks. W tym artykule przyjrzymy się pisaniu skryptów w Bash, przyjrzymy się podstawowym operatorom, a także temu, jak działają, że tak powiem, skrypty bash od podstaw. Mówiąc najprościej, kiedyś napisałeś kolejność zdarzeń, które należy wykonać, pomalowałeś dane i tak dalej, a następnie łatwo i prosto napisałeś jedno małe polecenie i wszystkie procedury są wykonywane w razie potrzeby.

Można pójść jeszcze dalej i zaplanować automatyczne wykonanie script-a. Jeśli jesteś już bardziej doświadczonym użytkownikiem, najprawdopodobniej dość często robisz różne rzeczy za pośrednictwem terminala. To tylko przykład, a takich działań jest wiele, nawet tworzenie kopii zapasowych i przesyłanie skopiowanych plików na zdalny serwer. Często zdarzają się zadania, dla których trzeba kolejno wykonać kilka poleceń, na przykład, aby zaktualizować system, należy najpierw zaktualizować repozytoria, a dopiero potem pobrać nowe wersje pakietów.

Jest to taka powłoka poleceń, w której masz możliwość wydawania różnych poleceń, które zaczną działać z dużą prędkością i będą owocnie wdrażane różne prace. Absolutnie cała moc systemu operacyjnego Linux polega na korzystaniu z terminala. Dlatego, aby nie wpisywać kilka razy tych samych poleceń, możesz użyć skryptów. Jest to bardzo wygodne, po prostu łączysz kilka poleceń, które mają jakiś efekt, a następnie wykonujesz je za pomocą tego samego polecenia lub nawet skrótu. Dla systemu operacyjnego Linux stworzono wiele skryptów, które są wykonywane w różnych powłokach poleceń. Cóż, w zasadzie, oczywiście już to rozumiesz.

System operacyjny traktuje jako wykonywalne tylko te pliki, którym przypisano cechę wykonywalności. I już tłumacz wymawia wiersz po wierszu i wykonuje wszystkie dyrektywy obecne w pliku. Ale jeśli jest dla nich ustawiona charakterystyka wykonalności, to wyspecjalizowana program komputerowy- tłumacz, w szczególności powłoka bash. Możemy go uruchomić jak każdy inny program za pomocą serwera terminali lub możemy uruchomić powłokę i powiedzieć jej, który plik ma wykonać.

W tym przypadku nie potrzebujesz nawet flagi pliku wykonywalnego. Zamiast tego używane są sygnatury początku pliku i specjalne flagi. Mamy kilka różnych metod wykonania skryptu — inkluzji w systemie operacyjnym Linux. W systemie Linux rozszerzenie pliku praktycznie nie jest używane do określania jego typu na poziomie systemu. Menedżerowie plików mogą to zrobić, ale nie zawsze. System operacyjny traktuje jako wykonywalne tylko te pliki, którym przypisano cechę wykonywalności. Są to zwykłe pliki zawierające tekst.

Skrypty Bash dla Linuksa dla opornych

Konstrukcję basha można opisać w 7 zobowiązaniach o podobnym typie: „wywołanie powłoki – treść skryptu basha – koniec skryptu”. Skrypty pisane są przy pomocy różnych edytorów tekstu, są przechowywane jako tekstowe dane komputerowe. Ale żeby było wygodniej, przechowuję je razem z rozszerzeniem „*.sh”. Ale spójrzmy na to wszystko pod kątem konkretnego celu. Istnieje zastosowanie, które należy uruchomić z dość dużym zestawem cech. Często będziesz musiał zacząć i za każdym razem jesteś zbyt leniwy, aby wprowadzić te cechy. Aby być bardziej szczegółowym, zobaczmy, jak wygląda ten efekt:

/home/Admin/soft/sgconf/sgconf -s 10.10.10.1 -p 5555 -a Administrator -w 112233 -u użytkownik -c 100

W tym skrypcie-a użyjmy interpretera basha. Podstawowym procesem jest dla nas wezwanie tłumacza. Otwórz edytor tekstu i napisz kod.

Dodajmy tę operację, biorąc pod uwagę wprowadzone zmienne:

/home/Admin/soft/sgconf/sgconf -s 10.10.10.1 -p 5555 -a Administrator -w 112233 -u $użytkownik -c $gotówka

Tekst, który wprowadzimy do dzienników, będzie wyglądał następująco: text = „Saldo użytkownika „użytkownik” zostało uzupełnione rublami „gotówką” na czas”

Argument tekstowy zmienia się w zależności od zmiennych użytkownika, gotówki i czasu

if [ -e /home/Admin/scripts/sgconf/sgconf.log] then echo text >> /home/Admin/scripts/sgconf/sgconf.log else echo text > /home/Admin/scripts/sgconf/sgconf.logfi

Teraz, gdy musimy wpłacić komuś pieniądze, uruchamiamy skrypt poleceniem „sh sgconf.sh”, wpisujemy nazwę wpłacającego i kwotę wpłaty. Bez długich kolejek, bez bólu głowy przy ciągłym wprowadzaniu tych samych wartości.

Utwórz skrypt bash w systemie operacyjnym Linux

Aby napisać pomysłowy skrypt basha, musimy wykonać takie zwykłe procedury. Utwórz pusty plik w linii poleceń Linuksa (dla przykładu nazywamy go firstscript) i otwórz go do edycji w swoim ulubionym Edytor tekstu(vi/vim, nano, gedit itd.). Aby opracować scenariusz, nie będziesz potrzebować dużego stresu, ale aby nakreślić scenariusz (program), będziesz musiał przestudiować różną literaturę pomocniczą. Opiszemy najbardziej podstawowe skrypty, więc zacznijmy, ale jeśli nie wiesz, czym jest terminal i jak go używać, to jesteś tutaj. Na samym początku, aby napisać basha, musimy utworzyć katalog dla naszych skryptów i plik, w którym będziemy wszystko pisać, w tym celu otwieramy terminal i tworzymy katalog.

Przejdź do nowo utworzonego katalogu

I utwórz plik

sudo geditscript.sh

W moim przykładzie utworzę skrypt aktualizacji systemu, zapiszę go do tego pliku. otworzymy edytor tekstu gedit, bardziej lubię vima, ale nie będzie to dla ciebie ogólnie akceptowane, więc pokażę to na standardowym.

sudo apt aktualizacja; sudo apt pełna aktualizacja;

Spraw, aby plik skryptu był wykonywalny (jeśli jeszcze nie jest). Uruchamianie skryptów sh z wiersza poleceń jest łatwe. Uruchom skrypt bash linux.

chmod +x skrypt.sh

Uruchom skrypt, po prostu określając ścieżkę do niego:

ścieżka/do/skryptu.sh

Jeśli skrypt znajduje się w bieżącym katalogu, musisz podać ./ przed nazwą pliku skryptu:

Czasami do uruchomienia skryptu wymagane są uprawnienia administratora, a następnie po prostu wpisz polecenie sudo przed skryptem:

sudo./script.shsudo ścieżka/do/script.sh

Oczywiście możesz uruchomić skrypt bezpośrednio przepisując interpreter: sh, bash i inne:

bash skrypt.shsh ścieżka/do/skrypt.sh

Jak widać, uruchamianie skryptu sh w systemie Linux jest dość częstym zadaniem, nawet jeśli nie znasz jeszcze terminala. Istnieje naprawdę wiele skryptów, a niektóre z nich możesz potrzebować wykonać. W tym przewodniku omówiliśmy kilka przydatnych skryptów bash dla systemu Linux, których można używać podczas korzystania z systemu operacyjnego Linux. W tym artykule przyjrzeliśmy się przydatnym skryptom bash dla Linuksa, których możesz użyć podczas pracy z systemem. Niektóre z nich składają się z kilku linii, kilka jest umieszczonych na jednej linii. Istnieją zarówno pomniejsze fragmenty, których można użyć w swoich skryptach, jak i pełnoprawne skrypty dialogowe do pracy z nimi za pośrednictwem konsoli.

Konsola Linuksa to narzędzie, które pozwala wykonywać takie manipulacje, których nie pozwala wiersz poleceń w systemie Windows, konsola Linuksa jest znakiem rozpoznawczym systemu UNIX. Dziś materiał nie jest o tym, jak pisać scenariusze, nie, nie nauczę Cię jak, co i dlaczego. Rozważymy mały wybór przydatne skrypty, którego możesz codziennie używać do rozwiązywania różnego rodzaju problemów, na przykład przeglądania pogody z kilkudniowym wyprzedzeniem, skryptów dla serwera WWW w jednej linii, pisania bota dla Twittera i skryptu do automatycznego uruchamiania dowolnego klienta torrent.

Ten materiał nie jest napisany po to, abyś angażował się w szamanizm, w żadnym wypadku nie zachęcam cię do siedzenia w konsoli i wpisywania setek znaków, aby wykonać pewne czynności, które możesz wykonać w interfejsie graficznym, po prostu najeżdżając myszką na element, który chcesz potrzebować. Ale jest jedna rzecz, ale nie zawsze interfejs graficzny jest najlepszym rozwiązaniem, często do rozwiązywania wielu problemów konsola i skrypty radzą sobie z zadaniem znacznie lepiej niż aplikacje z interfejsem graficznym, dlatego nie należy zapominać o skryptach, ponieważ one rozwiązują wiele rutynowych prac lepiej niż te graficzne. Warto też dodać, że dowolne DE pozwala stworzyć ikonę dla swoich skryptów, klikając na którą można je łatwo uruchomić bez otwierania konsoli.

Zacznijmy od prostych przykładów

Poniższe polecenie pokaże ci twój zewnętrzny adres IP - jest to idealne rozwiązanie, jeśli uzyskujesz dostęp do sieci za pomocą routera. To polecenie wywołuje serwer ifconfig.co, który zwraca adres IP w jednym wierszu bez dodatkowych, niepotrzebnych bazgrołów.

Zwiń ifconfig.com

Tak, to nie jest skrypt, to małe polecenie, ale jeśli chcesz zamienić to polecenie w skrypt, wystarczy je umieścić plik tekstowy, w końcu otrzymujemy mały skrypt bash:

#!/bin/bash curl ifconfig.co

Zapisz skrypt w katalogu ~/bin i nadaj uprawnienia do wykonania:

Chmod +x ~/bin/yourip.sh

Prawie gotowe, możesz wykonać skrypt z wiersza poleceń za pomocą polecenia yourip.sh.

C ip skończony, zobaczmy pogodę z konsoli.

#!/bin/sh curl -4 wttr.in/Kijów

Ten skrypt pozwala uzyskać prognozę pogody na cztery dni, w tym przypadku pogodę dla miasta Kijów.

#!/bin/sh dig +short txt $1.wp.dg.cx

Powyżej widać przykład, jak można uzyskać krótki opis cokolwiek na Wikipedii, w naszym przypadku używamy zapytania DNS zamiast serwera WWW. Serwer WWW za pośrednictwem konsoli jest również bardzo łatwy do utworzenia:

#!/bin/sh while (nc -l 80< file.html >:) ; robić: ; gotowy

Powyższy skrypt jest oparty na narzędziu netcat (nc), często nazywanym szwajcarskim scyzorykiem, ponieważ umożliwia wykonywanie wielu sztuczek związanych z operacjami sieciowymi. Skrypt jest prosty, uruchamia pętlę wykonującą polecenie nc, już nasłuchuje na porcie 80 i w odpowiedzi na żądanie daje plik.html, wysyłając przekazane żądanie donikąd (symbol oznacza noop, czyli pustą operację).

Za pomocą prostych skryptów i poleceń możesz słuchać radia internetowego:

#!/bin/sh mpv --volume=50 -playlist ~/16bit.fm_128.m3u

Oczywiście wcześniej należy pobrać playlistę radiową w formacie M3U ze strony internetowej stacji radiowej. Jeśli uruchomisz MPlayera używając argumentu -input-ipc-server=/tmp/mpvsocket, można nim sterować zapisując polecenia do pliku. Na przykład dostosuj głośność:

echo "głośność +10" | socat - /tmp/mpvsocket

Tworzymy dwa skrypty: pierwszy uruchamiający i drugi zatrzymujący radio (w którym napiszemy linijkę killall mpv), następnie wieszamy go razem na pulpicie ustawiając skróty klawiszowe DE do sterowania odtwarzaniem. I gotowe, masz odtwarzacz, za pomocą którego możesz słuchać radia internetowego.

Daliśmy się ponieść działaniom sieciowym, przejdźmy do lokalnych.

#!/bin/sh tar -czf "../$(PWD##*/).tar.gz" .

Ten skrypt tworzy archiwum tar.gz dla bieżącego katalogu. Szczególną uwagę należy zwrócić na konstrukcję $(PWD##*/), która pobiera całą ścieżkę do bieżącego katalogu (zmienna $PWD), następnie usuwa pierwszą część aż do ostatniego ukośnika, pozostawiając tylko nazwę katalogu i dodanie rozszerzenie tar.gz do niego. Jeśli chcesz dowiedzieć się więcej o takich konstrukcjach, możesz je przeczytać, wpisując w konsoli man bash.

#!/bin/sh podczas gdy prawda; wykonaj inotifywait -r -e ZMIEŃ KATALOG && TWOJE_POLECENIE gotowe

Powyższy skrypt uruchamia polecenie w odpowiedzi na zmianę plików w katalogu. Możesz go używać do różnych celów, np automatyczny start odtwarzacz podczas zapisywania plików MP3. Lub, jako przykład, wyświetl powiadomienie na pulpicie za pomocą polecenia notify-send:

Powiadom-wyślij „Plik został zmieniony”

Pulpit

Poniżej zobaczysz przykład skryptu ładującego losowe tapety zamieszczone na kanale reddit z tapetami:

#!/bin/bash wget -O - http://www.reddit.com/r/wallpaper |\ grep -Eo "http://i.imgur.com[^&]+jpg" |\ shuf -n 1 |\ xargs wget -O background.jpg feh --bg-fill background.jpg

Wszystko działa całkiem prosto. Korzystając z narzędzia wget, skrypt pobiera stronę www.reddit.com/r/wallpaper, następnie przekazuje ją do grep, który już szuka linków do imgur, i wybiera losowy za pomocą shuf, pobiera go za pomocą wget i ustawia jako tapetę na pulpicie za pomocą polecenia feh (jest to miniaturowa przeglądarka obrazów, którą należy najpierw zainstalować). Możesz dodać ten skrypt do zwykłego pliku tekstowego, jak opisałem powyżej, zapisać go w formacie sh, uczynić go wykonywalnym, dodać do niego ikonę i uruchomić go z pulpitu po kliknięciu, a tapeta się zmieni.

#!/bin/sh state=`synclient | grep Touchpad wyłączony | wytnij -d "=" -f 2` jeśli [ $stan = "1" ]; następnie synclient TouchpadOff=0 inaczej synclient TouchpadOff=1 fi

Powyższy skrypt służy do włączania i wyłączania touchpada laptopa: włącz, jeśli jest wyłączony i odwrotnie. Do poprawnego działania wykorzystuje narzędzie synclient, które pozwala kontrolować touchpady, które są w większości produkowane przez Synaptics, to jest 90%, a może nawet więcej. Po uruchomieniu narzędzie wyświetla wiele informacji, a także wiersz TouchpadOff = 1, jeśli jest włączony, i TouchpadOff = 2, jeśli jest wyłączony. Skrypt odczyta te wartości i w zależności od stanu touchpada włączy go lub wyłączy.

!#/bin/bash mpv tv:// -frames 3 -vo jpeg mv 00000003.jpg foto.jpg rm -f 0000*.jpg

Korzystając z powyższego skryptu, możesz zrobić zdjęcie za pomocą kamery internetowej. Skrypt wykorzystuje odtwarzacz wideo mpv, który zapisuje pierwsze trzy klatki zrobione przez kamerę do plików formacie JPEG o nazwach 0000000.jpg, 00000002.jpg, 00000003.jpg itd., trzeci obraz zostaje przemianowany na photo.jpg, a pozostałe są usuwane. Do czego służą trzy strzały? Są potrzebne tylko po to, aby aparat miał czas na inicjalizację, jeśli użyjesz pierwszych dwóch ujęć, to zwykle otrzymasz czarny obraz. Zdarzają się też incydenty z pozycjonowaniem, zdjęcie może być do góry nogami; aby tego uniknąć, mpv należy uruchomić z flagą -vf flip:

Mpv tv:// -klatki 3 -vf flip -vo jpeg

Możesz użyć tego samego polecenia, aby utworzyć kamerę bezpieczeństwa, która robi zdjęcia tylko wtedy, gdy użytkownik dotyka myszy:

#!/bin/bash, gdy prawda; wykonaj sudo cat /dev/input/mouse0 | read -n1 mpv tv:// -frames 3 -vo jpeg mv 00000003.jpg `date +%F-%H-%M`.jpg rm -f 0000*.jpg sleep 10 gotowe

Powyższy skrypt wykorzystuje nieskończoną pętlę, pobierając dane z /dev/input/mouse0. Jeśli są dane, to mysz została przesunięta lub naciśnięto jeden z jej przycisków. Następnie mpv jest używany do tworzenia trzech migawek, trzecia migawka otrzymuje nazwę bieżącej daty, a pierwsze dwie są usuwane.

Jeśli chcesz nagrać cały film z kamery internetowej, możesz użyć takiego skryptu jako przykładu:

#!/bin/bash mencoder tv:// -tv driver=v4l2:width=800:height=600:device=/dev/video0:fps=30:outfmt=yuy2:forceaudio:alsa:adevice=hw.2, 0 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1800 -ffourcc xvid -oac mp3lame -lameopts cbr=128 -o video.avi

W rezultacie otrzymasz plik o nazwie video.avi w formacie MPEG4, 1800 bitrate oraz plik audio MP3 o 128 bitrate.

#!/bin/bash ffmpeg -f x11grab -r 25 -s 1366x768 -i:0.0 screencast.mpg

Korzystając z powyższego skryptu, możesz nagrać pełny screencast. 1366×768 to rozdzielczość pulpitu, możesz ją dostosować do siebie. Aby zrobić zrzut ekranu pojedynczego okna, możesz użyć polecenia importowania:

Importuj zrzut ekranu.png

Jeśli uruchomisz powyższe polecenie, ikona kursora myszy zmieni się w krzyżyk, za pomocą którego możesz wybrać obszar ekranu, tak jak podczas robienia zrzutów ekranu za pomocą aplikacji lub rozszerzeń innych firm. Jeśli powiesisz to polecenie na jednym ze skrótów klawiszowych, otrzymasz prawie idealny system do tworzenia zrzutów ekranu, a ta kombinacja nie zje twojego Baran co czyni go ogromnym plusem.

Możesz także dostosować monitor zewnętrzny za pomocą konsoli:

#!/bin/sh if [ -z "1 $" ]; następnie wyjdź z fi, jeśli [ $1 == "off" ]; następnie xrandr --output VGA-0 --off xrandr -s 0 else if [ $1 == "on"]; następnie xrandr --output LVDS --auto --primary --output VGA-0 --auto --left-of LVDS xrandr --newmode "1920x1080" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync xrandr -- addmode VGA-0 1920x1080 xrandr --wyjście VGA-0 --mode 1920x1080 fi xrandr --dpi 96

Ten skrypt opiera się na nazwie głównego monitora LVDS i zewnętrznego monitora o nazwie VGA-0. Jest to standardowa sytuacja dla wszystkich laptopów; jeśli nie jesteś pewien, możesz to sprawdzić, uruchamiając komendę xrandr: podczas przekazywania argumentu do skryptu wyłączony wyłącza zewnętrzny monitor, argument na, z kolei zawiera go, umieszczając go po lewej stronie głównego (argument -na lewo od LVDS w pierwszej drużynie). Po skrypcie tworzy nową konfigurację dla monitora z rozdzielczością 1920 x 1080 i aktywuje go. I na koniec skrypt ustawia domyślną wartość DPI - bo po podłączeniu monitora o innej rozdzielczości często się zawiesza.

W większości przypadków polecenia xrandr-nowy tryb... oraz xrandr -tryb dodawania... nie są potrzebne, ponieważ Xorg uzyska konfigurację monitora i rozdzielczość za pomocą EDID. Czasami jednak tak się nie dzieje, a ciąg konfiguracyjny podany po argumencie -nowy tryb, musisz wygenerować go samodzielnie za pomocą narzędzia cvt:

Cvt 1920 1080

Za pomocą narzędzia cvt można generować niestandardowe rozdzielczości, które nie są obsługiwane przez domyślny monitor.

Wyszukiwanie w Google z wiersza poleceń

Wróćmy do usługi sieciowe. Jak uzyskać pierwsze 10 wyników wyszukiwania w Google? Zobacz skrypt poniżej:

#!/bin/bash Q=" " URL="https://www.google.de/search?tbs=li:1&q=" AGENT="Mozilla/4.0" strumień=$(curl -A "$AGENT" -skLm 10 "$(GOOG_URL)$(Q//\ /+)" | grep -oP "\/url\?q=.+?&" | sed "s|/url?q=||; s| &||") echo -e "$(strumień//\%/\x)"

Ten skrypt wysyła żądanie do Google za pomocą curl, zastępuje spacje w linia wyszukiwania na plusach. Następnie linki pojawiają się w kodzie HTML odpowiedzi

Przykład usługi YouTube:

#!/bin/bash mpv -fs -quiet `youtube-dl -g "$1"`

Skrypt z powyższego przykładu odtwarza wideo o identyfikatorze podanym w argumencie za pomocą odtwarzacza mpv. Najpierw musisz zainstalować youtube-dl.

Kilka przykładów pracy z Twitterem. Poniżej zobaczysz pełnoprawny skrypt bota, który przyjmuje polecenie jako dane wejściowe, wykonuje je za pomocą interpretera poleceń i wysyła wynik do określonego użytkownika.

#!/bin/bash USER="Twój nick" gdy prawda; wykonaj CMD=`echo "/dma +1" | skrypt ttytter | sed "s/\[.*\]\ //" if [ $CMD != $OLD_CMD ]; następnie REPL=`$CMD` echo "/dm $USER $(REPL:0:140)" | ttytter -script CMD = $OLD_COMD fi sleep 60 gotowe

Skrypt używa klient konsoli ttytter, odczytując z pętli ostatnią wartość komunikatu bezpośredniego, po czym sprawdza, czy to polecenie zostało wykonane, jeśli nie, wykonuje je i wysyła do wskazanego użytkownika ze zmienną USER, przycinając je do 140 znaków.

Aby wszystko działało, musisz zainstalować narzędzie ttytter, uruchomić je, a następnie skopiować wygenerowany link z konsoli i wkleić go do pasek adresu przeglądarkę, przekaż potwierdzenie, zgódź się, po otrzymaniu klucza uwierzytelniającego skopiuj go i wklej w konsoli w ttytter. Oczywiście przed tym wszystkim pożądane jest dodanie osobnego użytkownika i zalogowanie się na jego konto.

Możesz użyć Twittera nie tylko do stworzenia bota, ale także do monitorowania maszyny. Poniższy skrypt wysyła wiadomość do feeda z informacjami o stanie maszyny (nazwa hosta, uptime, obciążenie, wolna pamięć i obciążenie procesora):

#!/bin/bash HOST=`nazwa hosta -s` UP=`czas działania | cięcie -d" " -f4,5 | cut -d"," -f1` LOAD=`uptime | cut -d":" -f5,6` MEM=`ps aux | awk "( suma += 4 $); END ( print sum )"` CPU=`ps aux | awk "(suma += 3 $); END ( print sum )"` tweet="Host: $(HOST), uptime: $(UP), cpu: $(CPU)%, pamięć: $(MEM)%, śr.obciążenia $(LOAD)" if [ $(echo "$(tweet)" | wc -c) -gt 140 ]; następnie echo „FATAL: Tweet jest dłuższy niż 140 znaków!” wyjdź 1 fi echo $tweet | skrypt ttytter

Na koniec przyjrzymy się poniższemu skryptowi, ten skrypt służy do uruchamiania i zatrzymywania klienta torrent, gdy komputer jest bezczynny:

#!/bin/bash IDLE=600000 STOPCMD="zdalna-transmisja -S" STARTCMD="zdalna-transmisja -s" STOPPED="tak" gdy prawda; zrób if [ `xprintidle` -gt $IDLE ]; wtedy jeśli [ $STOPPED = "tak" ]; następnie $STARTCMD STOPPED="nie" fi inaczej if [ $STOPPED = "nie"]; następnie $STOPCMD STOPPED="yes" fi fi sleep 60 gotowe

Co minutę skrypt wchodzi w nieskończoną pętlę i sprawdza, ile czasu w milisekundach upłynęło od wykonania przez użytkownika ostatniej akcji (służy do tego xprintidle). Jeśli minęło 600 000 ms (dziesięć minut), skrypt wykonuje polecenie określone w zmiennej STARTCMD. W przeciwnym razie wykonywane jest polecenie STOPCMD, ale tylko wtedy, gdy przed nim wykonano polecenie STARTCMD. Jeśli wyjaśnisz zwykły język, nic nie robisz na komputerze przez dziesięć minut, po uruchomieniu STARTCMD, w naszym przypadku jest to polecenie, które rozpoczyna wszystkie pobieranie w Transmisji, jeśli nie, wszystkie pobieranie jest zawieszane. Nie podoba Ci się klient transmisji? Używamy poleceń dla Potopu, patrz poniżej:

STOPCMD="wstrzymanie konsoli potopu \*" STARTCMD="wznowienie konsoli potopu \*"

Wynik

Bez względu na to, jak prosty jest interfejs graficzny w systemie Linux i bez względu na to, ile jest funkcji, wciąż istnieją zadania, które są wygodniejsze do rozwiązania za pomocą terminala. Po pierwsze dlatego, że jest szybszy, a po drugie nie wszystkie maszyny mają interfejs graficzny, np. na serwerach wszystkie czynności wykonywane są przez terminal, aby zaoszczędzić zasoby obliczeniowe.

Jeśli jesteś już bardziej doświadczonym użytkownikiem, prawdopodobnie często występujesz różne zadania przez terminal. Często zdarzają się zadania, dla których trzeba kolejno wykonać kilka poleceń, na przykład, aby zaktualizować system, należy najpierw zaktualizować repozytoria, a dopiero potem pobrać nowe wersje pakietów. To tylko przykład, a takich działań jest wiele, nawet tworzenie kopii zapasowych i przesyłanie skopiowanych plików na zdalny serwer. Dlatego, aby nie wpisywać kilka razy tych samych poleceń, możesz użyć skryptów. W tym artykule przyjrzymy się pisaniu skryptów w Bash, przyjrzymy się podstawowym operatorom, a także temu, jak działają, że tak powiem, skrypty bash od podstaw.

Skrypt, lub jak to się nazywa również skrypt, to sekwencja poleceń, które kolejno są odczytywane i wykonywane przez program interpretera, w naszym przypadku jest to program wiersza poleceń - bash.

Skrypt to zwykły plik tekstowy zawierający listę zwykłych poleceń, które zwykle wprowadzamy ręcznie, a także program, który je wykona. Program ładujący, który wykona skrypt, nie wie, jak pracować ze zmiennymi środowiskowymi, dlatego musi podać dokładną ścieżkę do programu, który ma zostać uruchomiony. Następnie przekaże twój skrypt do tego programu i rozpocznie się wykonywanie.

Najprostszy przykład skryptu dla powłoki Bash:

!/bin/bash
echo "Witaj świecie"

Narzędzie echo wyświetla przekazany mu ciąg znaków jako parametr na ekranie. Pierwsza linia jest specjalna, określa program, który wykona polecenia. Ogólnie rzecz biorąc, możemy stworzyć skrypt w dowolnym innym języku programowania i określić żądany interpreter, na przykład w pythonie:

!/usr/bin/env python
print("Witaj świecie")

Lub w PHP:

!/usr/bin/env php
echo "Witaj świecie";

W pierwszym przypadku wskazaliśmy bezpośrednio program, który wykona polecenia, w kolejnych dwóch nie znamy dokładnego adresu programu, dlatego prosimy narzędzie env o wyszukanie go po nazwie i uruchomienie. To podejście jest stosowane w wielu skryptach. Ale to nie wszystko. W systemie Linux, aby system wykonał skrypt, musisz ustawić flagę wykonywalności pliku z nim.

Ta flaga nie zmienia niczego w samym pliku, tylko mówi systemowi, że to nie jest tylko plik tekstowy, ale program i należy go wykonać, otworzyć plik, znaleźć interpreter i wykonać. Jeśli żaden interpreter nie zostanie określony, domyślnie zostanie użyty interpreter użytkownika. Ale ponieważ nie wszyscy używają basha, musisz to wyraźnie określić.

Biegać:

chmod ugo+x plik_skryptu

Teraz uruchamiamy nasz mały pierwszy program:

./plik_skryptu

Wszystko działa poprawnie. Wiesz już, jak napisać mały skrypt, powiedzmy, do aktualizacji. Jak widać, skrypty zawierają te same polecenia, które są wykonywane w terminalu, są bardzo łatwe do napisania. Ale teraz trochę skomplikujemy zadanie. Ponieważ skrypt jest programem, musi samodzielnie podejmować pewne decyzje, przechowywać wyniki wykonania poleceń i wykonywać pętle. Wszystko to można zrobić za pomocą powłoki Bash. To prawda, że ​​\u200b\u200btutaj wszystko jest znacznie bardziej skomplikowane. Zacznijmy prosto.

Zmienne w skryptach

Pisanie skryptów w Bash rzadko kończy się bez przechowywania danych tymczasowych, co oznacza tworzenie zmiennych. Ani jeden język programowania nie może obejść się bez zmiennych, a także nasz prymitywny język powłoki.

Być może już wcześniej napotkałeś zmienne środowiskowe. Są to więc te same zmienne i działają w ten sam sposób.

Na przykład zadeklarujmy zmienną łańcuchową:

string="Witaj świecie"

Wartość naszego ciągu jest w cudzysłowach. Ale w rzeczywistości cytaty nie zawsze są potrzebne. Główna zasada bash jest tutaj zachowana - spacja jest znakiem specjalnym, separatorem, więc jeśli nie użyjesz cudzysłowów, świat będzie już uważany za osobne polecenie, z tego samego powodu nie stawiamy spacji przed i po równym znak.

Symbol $ służy do wyświetlania wartości zmiennej. Na przykład:

Zmodyfikujmy nasz skrypt:

!/bin/bash
string1="cześć"
string2=świat
string=$string1$string2
echo $string

I sprawdzamy:

Bash nie rozróżnia typów zmiennych tak, jak robią to języki wysoki poziom, podobnie jak C++, do zmiennej można przypisać zarówno liczbę, jak i ciąg znaków. Podobnie wszystko to będzie uważane za ciąg. Powłoka obsługuje tylko scalanie ciągów znaków, aby to zrobić, po prostu wpisz nazwy zmiennych w rzędzie:

!/bin/bash
string1="cześć"
string2=świat
string=$string1$string2\ i\ ja
string3=$string1$string2" i ja"
echo $string3

Sprawdzamy:

Pamiętaj, że, jak powiedziałem, cudzysłowy są opcjonalne, jeśli w łańcuchu nie ma znaków specjalnych. Przyjrzyj się bliżej obu sposobom scalania łańcuchów, rola cudzysłowów jest również pokazana tutaj. Jeśli potrzebujesz bardziej wyrafinowanych sposobów obsługi ciągów znaków lub działania arytmetyczne, nie jest to uwzględnione w możliwościach powłoki, używane są do tego zwykłe narzędzia.

Zmienne i dane wyjściowe poleceń

Zmienne nie byłyby tak przydatne, gdyby nie mogły przechowywać wyniku wykonywania narzędzi. W tym celu używana jest następująca składnia:

$(Komenda )

Dzięki tej konstrukcji dane wyjściowe polecenia zostaną przekierowane bezpośrednio do miejsca, z którego zostało wywołane, a nie na ekran. Na przykład narzędzie daty zwraca bieżącą datę. Te polecenia są równoważne:

Czy rozumiesz? Napiszmy skrypt, w którym wyświetli się hello world i data:

string1="witaj świecie"
string2=$(data)

string=$string1$string2

Teraz wiesz wystarczająco dużo o zmiennych i jesteś gotowy do stworzenia skryptu bash, ale czeka Cię jeszcze więcej. Następnie przyjrzymy się parametrom i strukturom kontrolnym. Przypomnę, że są to zwykłe polecenia basha i nie trzeba ich zapisywać w pliku, można je wykonać natychmiast w drodze.

Parametry skryptu

Nie zawsze jest możliwe utworzenie skryptu bash, który nie zależy od danych wprowadzanych przez użytkownika. W większości przypadków musisz zapytać użytkownika, jakie działanie ma podjąć lub jakiego pliku użyć. Wywołując skrypt możemy przekazać mu parametry. Wszystkie te parametry są dostępne jako zmienne nazwane liczbami.

Zmienna o nazwie 1 zawiera wartość pierwszego parametru, zmienną 2, drugiego i tak dalej. Ten skrypt bash wyświetli wartość pierwszego parametru:

!/bin/bash
powtórz $1

Konstrukcje kontrolne w skryptach

Tworzenie skryptu bash nie byłoby tak przydatne bez możliwości analizy pewnych czynników i wykonywania niezbędnych działań w odpowiedzi na nie. Jest to dość złożony temat, ale jest bardzo ważny przy tworzeniu skryptu bash.

W Bash istnieje polecenie sprawdzania warunków, którego składnia jest następująca:

jeśli warunek_polecenia
następnie
Komenda
w przeciwnym razie
Komenda
fi

To polecenie sprawdza kod wyjścia polecenia warunkowego, a jeśli 0 (sukces) następnie wykonuje polecenie lub kilka poleceń po słowie, to jeśli kod wyjścia wynosi 1, wykonywany jest blok else, fi oznacza zakończenie bloku polecenia.

Ponieważ jednak najczęściej interesuje nas nie kod powrotu polecenia, a porównanie ciągów znaków i liczb, wprowadzono polecenie [[, które umożliwia wykonanie różne porównania i wystawić kod powrotu w zależności od wyniku porównania. Jego składnia to:

[[ parametr1 parametr operatora2 ]]

Dla porównania używamy już znanych operatorów<,>,=,!= itd. Jeśli wyrażenie jest prawdziwe, polecenie zwróci 0, jeśli nie - 1. Możesz trochę przetestować jego zachowanie w terminalu. Kod powrotu ostatniego polecenia jest przechowywany w zmiennej $?:

Teraz, łącząc to wszystko, otrzymujemy skrypt z wyrażeniem warunkowym:

!/bin/bash
jeśli [[ $1 > 2 ]]
następnie
echo $1" jest większe niż 2"
w przeciwnym razie
echo $1" jest mniejsze niż 2 lub 2"
fi

Oczywiście ten projekt ma bardziej zaawansowane funkcje, ale omówienie ich w tym artykule jest zbyt skomplikowane. Może później o tym napiszę. Na razie przejdźmy do cykli.

Pętle w skryptach

Zaletą programów jest to, że możemy określić w kilku liniach, jakie akcje należy wykonać kilka razy. Na przykład możliwe jest pisanie skryptów bash, które składają się tylko z kilku linii, ale działają godzinami, analizując parametry i wykonując niezbędne akcje.

Najpierw rozważmy dla pętli. Oto jego składnia:

dla zmiennej na liście
robić
Komenda
gotowy

Iteruje po całej liście i po kolei przypisuje wartość z listy do zmiennej, po każdym przypisaniu wykonuje polecenia znajdujące się pomiędzy do i done.

Na przykład wykonajmy iterację po pięciu cyfrach:

dla indeksu w 1 2 3 4 5
robić
echo $indeks
gotowy

Lub możesz wyświetlić listę wszystkich plików w bieżącym katalogu:

dla pliku w $(ls -l); wykonaj echo „pliku $”; gotowy

Jak rozumiesz, możesz nie tylko wyświetlać nazwy, ale także wykonywać niezbędne czynności, co jest bardzo przydatne podczas tworzenia skryptu bash.

Druga pętla, której się przyjrzymy, to pętla while, która działa, gdy polecenie condition zwraca kod 0, sukces. Rozważ składnię:

podczas gdy warunek polecenia
robić
Komenda
gotowy

Rozważ przykład:

!/bin/bash
indeks=1
podczas gdy [[ $indeks< 5 ]]
robić
echo $indeks
niech „indeks=indeks+1”
gotowy

Jak widać wszystko jest zrobione, polecenie let po prostu wykonuje określoną operację matematyczną, w naszym przypadku zwiększa wartość zmiennej o jeden.

Chciałbym zauważyć jeszcze coś. Konstrukcje takie jak while, for, if są przeznaczone do zapisywania w wielu wierszach, a jeśli spróbujesz napisać je w jednym wierszu, pojawi się błąd. Niemniej jednak można w tym celu wstawić średnik „;” tam, gdzie powinien być podział wiersza. Na przykład poprzednia pętla mogła zostać wykonana jako pojedyncza linia:

indeks=1; podczas gdy [[ $indeks< 5 ]]; do echo $index; let "index=index+1"; done;

Wszystko jest bardzo proste, starałem się nie komplikować artykułu dodatkowymi terminami i funkcjami bash, tylko najbardziej podstawowymi. W niektórych przypadkach może być konieczne utworzenie GUI dla skryptu bash, a następnie możesz użyć programów takich jak zenity lub kdialog, za pomocą których bardzo wygodnie jest wyświetlać użytkownikowi komunikaty, a nawet prosić go o informacje.

Wyniki

Teraz rozumiesz podstawy skryptowania w Linuksie i możesz napisać skrypt, którego potrzebujesz, na przykład Kopia rezerwowa. Próbowałem spojrzeć na skrypty basha od podstaw. Dlatego nie uwzględniono wszystkich aspektów. Być może wrócimy do tego tematu w którymś z kolejnych artykułów.

Do napisanie prostego skryptu w bashu musimy wykonać następujące proste kroki:

Jak to wszystko działa:

Pierwsza linia naszego skryptu jest niezbędna do pomyślnego działania naszego skryptu.

druga linia tworzy katalog testdir

trzecia linia pozwala przejść do utworzonego katalogu testdir

Komenda dotykać następna linia tworzy trzy pliki

a ostatnia komenda w linii naszego skryptu pozwala na wyświetlenie zawartości bieżącego katalogu, w którym dzięki poprzedniej linii pojawiły się trzy puste pliki.

Jak widać, w naszym prosty skrypt wszystkie polecenia zaczynają się od Nowa linia. Każda linia po uruchomieniu skryptu sekwencyjnie wykonuje swoją pracę, wykonując określone czynności.

Jeśli codziennie uruchamiasz łańcuch identycznych poleceń (ze stałymi parametrami) w systemie Linux, sensowne może być napisanie tego samego prosty skrypt w bashu, co pozwoli Ci zaoszczędzić czas i zautomatyzować pracę.

Często zdarza się, że trzeba zautomatyzować jakąś czynność. Skrypty Bash zawsze przychodzą na ratunek!
Nie zapominaj, że aby skrypt mógł się uruchomić, musisz zmienić do niego prawa dostępu, dodając możliwość wykonania pliku.

1. Wejście-wyjście, przekierowanie

#!/bin/bash # Każdy skrypt powłoki zawsze zaczyna się od linii #!/bin/bash (lub #!/bin/sh) # Komentarze zawsze zaczynają się od # # Aby wyświetlić komunikat, użyj polecenia ECHO echo "cześć, world" # i to jest przykład sformatowanego wyjścia ...

prawie jak C printf "sformatowane wyjście dziesięć=%d string=%s float=%f hex_number=0x%X\n" 10 "string" 11.56 234 # przykład odczytu wejścia z klawiatury read A echo $A printf " po prostu wprowadzone słowo: %s\n" "$A" #przekierowanie, potoki, pobieranie wyjścia innego programu #przykład generowania 10-literowego hasła PASSWORD1=`cat /dev/urandom | tr -d -c ‘a-zA-Z0-9’ | złóż -w 10 | head -1` echo Password=$PASSWORD1 #quotes of the form " podaje wynik wyjścia na ekran tego, co jest w nich zawarte (tj. wyjście jest wynikiem operacji "backquotes" #w tym przypadku wynikiem jest wyjście potoku z wielu programów.

Ciekawe skrypty bash dla miłośników terminali Linux

#operacja | oznacza przenośnik. Tych. w naszym przykładzie: #cat /dev/urandom wyprowadza zawartość pliku /dev/urandom (specjalny plik do generowania liczb pseudolosowych) na stdout.#tr wykonuje translację, tj. zastępuje niektóre bajty innymi (jest to konieczne, aby uniknąć pojawienia się znaków niedrukowalnych w haśle) #fold dzieli to, co otrzymał na std.in na linie o długości 10 znaków i wypisuje na standardowe wyjście #head -1 drukuje pierwszy linii, co przyszło jej na standardowe wejście. # lub tak: PASSWORD2=`cat /dev/urandom | tr -dc _A-Z-a-z-0-9 | head -c10` echo Hasło=$HASŁO2

2. Operacje arytmetyczne, cykle o liczbę razy

#!/bin/bash A="10" B="5" C=`wyr $A + $B` printf "A=10 B=5 C=wyr \$A + \$B C=%d \n" "$C" # pętla i przykład I=0 while [ $I -lt 15 ] do printf "0x%02x " "$I" I=`expr $I + 1` done echo

3.Różne rodzaje kontroli

#!/bin/bash # przykład sprawdzania istnienia pliku # tworzenie pliku test1 dotyk test1 # sprawdzanie istnienia pliku test1 if [ -f test1] ; następnie echo „plik test1 istnieje” fi # sprawdź, czy plik test2 nie istnieje, jeśli! [-f test2]; następnie echo „plik test2 nie istnieje” fi # krótkie odniesienie do innych opcji poleceń # -d nazwa pliku katalog istnieje # -f nazwa pliku plik istnieje # -L nazwa pliku dowiązanie symboliczne istnieje # -r, -w, -x plik jest odczytywalny, zapisywalny lub do # -s nazwa pliku plik istnieje i ma niezerową długość # f1 -nt f2 f1 jest nowszy niż f2 # f1 -ot f2 f1 jest starszy niż f2

Tagi: bash, freebsd, powłoka

Napisz komentarz przez:

Jak napisać prosty skrypt w bashu

Jak uruchomić kilka poleceń sekwencyjnie lub wszystkie naraz? Jeśli musisz uruchomić kilka poleceń, symbol „ ; » zwany metaznakiem Składnia jest następująca polecenie1;polecenie2;polecenie3

Polecenia oddzielone „ ; » wykonywane są sekwencyjnie. Powłoka czeka na następne polecenie i powraca do wiersza poleceń po wykonaniu ostatniego polecenia.

Jednoczesne wykonywanie kilku poleceń

Aby uruchomić wiele poleceń jednocześnie, umieszczając ampersand „&” na końcu polecenia. Rozważmy na przykład początek skryptu kopii zapasowej:

# /root/ftpbackup.sh &

Twój terminal jest wolny do dalszego użytku, nie musisz czekać na zakończenie wykonywania skryptu /root/ftpbackup.sh!

Używanie wszystkiego razem

Możesz mieć tysiące plików *.bak. Ale wszystko, co musisz zrobić, to wymienić kategorie, które chcesz, i umieścić wszystko w /tmp/list:

# dla d w "/home/sales /home/dbs /data1"; znajdź $d -iname "*.bak" >> /tmp/list; gotowy &

Źródło

Nauka BASH (podstawy)

Data: 2012-12-10

Nauka pisania skryptów

W większości cały Linux składa się ze skryptów, więc po prostu konieczna jest znajomość tego języka.
Zasadniczo jest to po prostu zestaw poleceń Linuksa, połączonych za pomocą różnych konstrukcji w inteligentny i dobrze przemyślany kod.

Stwórzmy nasz pierwszy skrypt.
Aby to zrobić, po prostu otwórz edytor tekstu i wypełnij plik następującymi informacjami:

#!/bin/bash
który; data

Tutaj wszystko jest proste.
Zasadniczo znak krzyżyka (#) jest w większości przypadków traktowany jako początek komentarza, ale tutaj, zaczynając od pierwszego wiersza, mówi nam, że należy użyć interpretera basha.

1) Konieczne jest nadanie uprawnień do wykonania

chmod u+x bash1.sh

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/gra

I przenieś ten plik do jednego z katalogów, o ile oczywiście nie musisz odnosić się do niego po prostu z nazwy, a nie z nazwy pełne miejsce Lokalizacja.

Tutaj przyjrzeliśmy się, jak tworzony jest skrypt, a następnie jest kilka rzeczy do zrozumienia.

Za każdym razem, gdy piszemy skrypty, będziemy zajmować się zmiennymi, przekierowywać dane wejściowe i wyjściowe, pracować z potokami i wykonywać obliczenia matematyczne.

Zmienne

Aby zdefiniować nową zmienną, po prostu powiedz:

#!/bin/bash
F=Iwan
ja=Iwanow
O=Iwanowicz
#Wyświetlane z:
echo "FIO $F $I $O"

Wynik

sh bash2.sh
FIO Iwan Iwanow Iwanycz

Zobacz zmienne;
# ustawić

BASH=/bin/bash
HISTFILE=/root/.bash_history
HISTFILESIZE=500
ROZMIAR HISTORII=500
DOM=/root
SSH_CLIENT='192.168.200.3 9382 22'
SSH_CONNECTION='192.168.200.3 9382 192.168.200.252 22'

Istnieje inny bardzo interesujący i użyteczny sposób ustawiania zmiennej za pomocą ` `

#!/bin/bash
dzień=`data +%y%m%d`
# W przyszłości zmienną $day można wstawić do skryptu, na przykład kopii zapasowej

rsync -avz /root/data /root/backup.$day

W wyniku wykonania takiego skryptu pojawi się kopia zapasowa z określeniem daty utworzenia kopii zapasowej.

Przekierowanie wejścia i wyjścia.

> Przekieruj do pliku z całkowitym nadpisaniem zawartości pliku
>> Przekieruj, aby dołączyć do pliku na koniec istniejącej treści.
ls-al / > 123
I polecenie:
ls -al /home >> 123
Wyświetl listę wszystkich plików z katalogu głównego, a następnie dodaj zawartość katalogu domowego
to przekierowanie jest nazywane przekierowaniem wyjściowym
Przekierowanie wejścia — zawartość jest przekierowywana do polecenia.
sortować< sort.txt
Polecenie sort sortuje alfabetycznie, w wyniku czego losowo wypełniony plik sort.txt po przekierowaniu do programu sortującego zostanie posortowany alfabetycznie
sortować< sort.txt | more — а построение в канал отобразит отсортированные данные постранично
sortować< sort.txt | grep s | more — отсортирует и выведет все со знаком «S»

Kolejną przydatną rzeczą jest przekazywanie wyniku jednego polecenia do drugiego lub kilku.
Przykładem tego byłoby:

cat /var/log/maillog | grep zablokowany | jeszcze

1) kot - wyświetla cały plik dziennika
2) następnie ten plik dziennika jest przekazywany do przetworzenia do polecenia grep, które wyświetla się tylko z Zablokowane, ale ponieważ wiadomości o tym statusie jest dużo, konieczne jest przekazanie go do polecenia more
3) więcej - niezbędne do danych stronicowania

Taka sekwencja rozkazów nazywana jest transmisją w kanale, gdy dane z jednego rozkazu są przesyłane do przetwarzania do drugiego, a te do drugiego i tak dalej, aż przyjmą pożądaną postać.

Obliczenia matematyczne

Najłatwiejszym sposobem wykonywania działań matematycznych w systemie Linux jest użycie polecenia bc.
W takim przypadku nie należy ustawiać liczby miejsc po przecinku za pomocą skali

#!/bin/bash
var1=45
var2=22
var3=`echo "skala=3; $zmienna1/$zmienna2" | pne`
echo $var3

Plutonit.ru - Administracja, Konfiguracja Linuksa i Windowsa 2009 - 2018

Błąd bazy danych: Tabela „a111530_forumnew.rlf1_users” nie istnieje

Strona główna -> MojeLDP -> E-książki dla systemu operacyjnego Linux

Tworzenie i uruchamianie skryptu

Napisz scenariusz i wybierz dla niego nazwę

Skrypt powłoki to sekwencja poleceń, których można używać wielokrotnie. Ta sekwencja jest zwykle wykonywana przez wpisanie nazwy skryptu w wierszu poleceń. Ponadto z cronem możesz używać skryptów do automatyzacji zadań. Innym zastosowaniem skryptów jest procedura ładowania i zatrzymywania systemy UNIX gdy operacje demonów i usług są zdefiniowane w skryptach inicjujących.

Aby utworzyć skrypt powłoki, otwórz nowy pusty plik w edytorze. Możesz do tego użyć dowolnego edytora tekstu: krzepkość, emacs, edytuj, dtpad itp.; każdy zrobi. Możesz jednak wybrać bardziej zaawansowany edytor, taki jak krzepkość lub emacs, ponieważ takie edytory można skonfigurować tak, aby rozpoznawały składnię powłoki i Bash, i mogą być dobrą pomocą w zapobieganiu błędom często popełnianym przez początkujących, takim jak zapominanie o zamykaniu nawiasów i średników.

Polecenia systemu UNIX wpisz w nowym pustym pliku tak samo, jak w wierszu poleceń. Jak omówiono w poprzednim rozdziale (zobacz sekcję „Wykonywanie poleceń”), polecenia mogą być funkcjami powłoki, poleceniami wbudowanymi, poleceniami systemu UNIX lub innymi skryptami.

Wybierz nazwę mnemoniczną dla swojego skryptu, która powie Ci, co robi skrypt. Upewnij się, że nazwa skryptu nie powoduje konfliktu z istniejące zespoły. Aby uniknąć nieporozumień, nazwy skryptów często kończą się rozszerzeniem .sh. Jednak w systemie mogą znajdować się inne skrypty o tej samej nazwie, którą wybrałeś. Polecenia który, gdzie jest i inne, poszukaj informacji o już istniejących programach i plikach o tej nazwie:

which -a nazwa_skryptu gdzie jest nazwa_skryptu zlokalizuj nazwa_skryptu ( ok.trans.

Pisanie skryptów w systemie Linux (nauka na przykładach)

: zastąp nazwą swojego skryptu).

Skrypt skrypt1.sh

W tym przykładzie używamy polecenia Echo, wbudowany w Bash, który poinformuje użytkownika o tym, co należy zrobić przed wygenerowaniem danych wyjściowych. Zdecydowanie zaleca się, aby użytkownicy byli informowani o tym, co robi skrypt, aby użytkownicy nie denerwowali się na wypadek, gdyby wydawało im się, że scenariusz nic nie dał. Do tematu ostrzegania użytkowników wrócimy w rozdziale 8, „Pisanie skryptu interaktywnego”.

Ryc.2.1. Skrypt skrypt1.sh

Napisz taki sam skrypt dla siebie. Dobrym pomysłem byłoby utworzenie katalogu, w którym będą znajdować się twoje skrypty. Dodaj ten katalog do zawartości zmiennej:

export PATH="$PATH:~/skrypty"

Jeśli jesteś nowy w Bash, użyj edytora tekstu, który używa różnych kolorów dla różnych konstrukcji powłoki. Podświetlanie składni jest obsługiwane w krzepkość, gvim, (x)emacs, pisać i wielu innych edytorów, zapoznaj się z dokumentacją swojego ulubionego edytora.

Wykonanie skryptu

Aby skrypt mógł działać, musi mieć uprawnienia do uruchamiania dla odpowiednich użytkowników. Po ustawieniu uprawnień sprawdź, czy rzeczywiście ustawiłeś uprawnienia, których potrzebujesz. Po wykonaniu tej czynności skrypt można uruchomić tak, jak każde inne polecenie:

willy:~/scripts> chmod u+x script1.sh willy:~/scripts> ls -l script1.sh -rwxrw-r— 1 willy willy 456 24 grudnia 17:11 script1.sh willy:~> script1.sh skrypt zaczyna się teraz. Hej willi! Teraz przyniosę ci listę połączonych użytkowników: 15:38 do 18 dni, 5:37, 4 użytkowników, średnie obciążenie: 0,12, 0,22, 0,15 USER TTY OD [e-mail chroniony] BEZCZYNNY JCPU PCPU CO root tty2 - sobota 14:00 4:25m 0,24 s 0,05 s -bash willy: 0 - sobota 14:00? 0.00s? — Willy pts/3 — Sob 14:00 3:33m 36,39 s 36,39 s BitchX willy ir willy pts/2 — Sob 14:00 15:33 0,13 s 0,06 s /usr/bin/screen Ustawiam teraz dwie zmienne. To jest ciąg znaków: czarny A to jest liczba: 9 Oddaję ci teraz podpowiedź. willy:~/scripts> echo $COLOUR willy:~/scripts> echo $WARTOŚĆ willy:~/scripts>

To jest najbardziej zwykły sposób wykonaj skrypt. Preferowane jest wykonywanie takich skryptów w podpowłoce. Zmienne, funkcje i aliasy utworzone w tej podpowłoce są znane tylko tej konkretnej sesji bash w tej podpowłoce. Po wyjściu z tej powłoki i przejęciu kontroli przez powłokę nadrzędną wszystkie ustawienia zostaną wyczyszczone, a wszelkie zmiany dokonane w skrypcie w stanie powłoki zostaną zapomniane.

Jeśli nie określiłeś katalogów lub (bieżący katalog) w zmiennej, możesz aktywować skrypt w następujący sposób:

./nazwa_skryptu.sh

Możliwe jest również wykonanie skryptu w istniejącej powłoce, ale zwykle jest to wykonywane tylko wtedy, gdy chcesz uzyskać specjalne zdolności, na przykład, jeśli chcesz sprawdzić, czy skrypt działa z inną powłoką, lub wykonać śledzenie wsteczne w celu debugowania ( ok.trans.- zamiast tego podaj nazwę swojego skryptu):

rbash nazwa_skryptu.sh sh nazwa_skryptu.sh bash -x nazwa_skryptu.sh

Określona powłoka zostanie uruchomiona jako podpowłoka bieżącej powłoki i wykona skrypt. Dzieje się tak, gdy chcesz, aby skrypt był uruchamiany z określonymi parametrami lub pod pewnymi warunkami, które nie są określone w samym skrypcie.

Jeśli nie chcesz uruchamiać nowej powłoki, ale chcesz wykonać skrypt w bieżącej powłoce, użyj polecenia:

nazwa_skryptu źródłowego.sh

W takim przypadku skrypt nie wymaga uprawnień do wykonywania. Polecenia są wykonywane w kontekście bieżącej powłoki, więc wszelkie zmiany wprowadzone w środowisku pozostaną widoczne po zakończeniu wykonywania skryptu:

willy:~/scripts> source script1.sh --output pominięto willy:~/scripts> echo $WARTOŚĆ 9 willy:~/scripts>

Przede wszystkim zrozummy, co to jest scenariusz i po co to jest.

Scenariusz tłumaczone z angielskiego - scenariusz. Wszyscy oglądamy filmy, wielu z nas ogląda spektakle. Aby stworzyć film/spektakl, scenarzyści piszą dla nich scenariusze, na podstawie których aktorzy, scena po scenie, odgrywają swoje role na scenie, z której powstaje film/spektakl. Praca nad stworzeniem scenariusza jest dość żmudna, gdzie trzeba wziąć pod uwagę wszystko w najdrobniejszych szczegółach, aby w końcu artyści mogli zrealizować plan scenarzysty, a widz zobaczył całościowe dzieło.

Podobnie skrypty są pisane w celu wykonania listy zadań, które użytkownik tworzy (kod), aby ułatwić i przyspieszyć ich uruchamianie w systemie operacyjnym. Do pisania prostych skryptów nie jest konieczne posiadanie wykształcenia programistycznego.

Na początek stwórzmy najbardziej, co nie jest najprostsze powłoka skryptu aby zaktualizować system.

Wszystkie czynności wykonam z systemem ubuntu, ale dotyczą one również innych systemów. Linuks, wywodzący się z ubuntu. Do tego potrzebujemy: Edytor tekstu wypełnić go zadaniami niezbędnymi do stworzenia skryptu (kodu) i Terminal- aby wykonać utworzony skrypt. Te narzędzia są instalowane w dowolnej dystrybucji Linuks domyślny.

Więc otwórz edytor tekstu edytuj i wpisać w nim pierwsze wymagane znaki pod nazwą szulernia.
szulernia w programowaniu jest to ciąg dwóch znaków: krzyżyka i wykrzyknika ( #! ) na początku pliku skryptu. I dodaj do tych znaków bez spacji /bin/sz- interpreter, w którym skrypt zostanie wykonany. /bin/sz- to jest zazwyczaj Skorupa Bourne'a lub zgodny interpreter wiersza poleceń, który przechodzi "ścieżka/do/skryptu" jako pierwszy parametr.
Pierwsza wymagana linia skryptu będzie wyglądać następująco:

# Mój pierwszy skrypt aktualizacji Ubuntu

Znak krzyżyka (#) na samym początku linii mówi interpreterowi/terminalowi, że ta linia nie musi być odczytywana i wykonywana. Linia jest potrzebna w kodzie tego skryptu, aby sam twórca skryptu wiedział, co ma zamiar wykonać na tym fragmencie / scenie w kodzie, aby nie pomylić się w przyszłości, gdy będzie dużo takie linie. Takie ciągi ze znakiem funta nazywane są - skomentował .

Sudo trafna aktualizacja
sudo apt upgrade -y

-y na końcu drugiego polecenia wyjaśnia interpreterowi/terminalowi, że ta czynność/polecenie ma zostać wykonane automatycznie, bez dodatkowego potwierdzania przez użytkownika naciśnięcia klawisza Wejście. y- skrót od angielskiego tak, tj. tak.

To wszystko. Twój pierwszy skrypt został utworzony. Powinieneś mieć coś takiego jak na obrazku:


Pozostaje zapisać utworzony plik/skrypt i podać go Nazwa z obowiązkowym przedłużeniem na końcu - .cii. Rozbudowa .cii przypisany do pliku wykonywalnego.
dałem mu Nazwa - aktualizacja.sh, oszczędzając w folder domowy użytkownik:


Aby utworzony plik/skrypt był wykonywalny, musi mieć na to pozwolenie. Można to zrobić na dwa sposoby.

1. Uruchom następujące polecenie w terminalu:

sudo chmod +x aktualizacja.sh

2. Lub otwórz menedżera plików w folder domowy(gdzie zapisałeś utworzony skrypt), kliknij prawym przyciskiem myszy plik, w menu kontekstowe - Właściwości — uprawnienia i aktywuj przedmiot - Występ: Zezwalaj na uruchamianie pliku jako programu:


Aby wykonać stworzony skrypt należy otworzyć terminal (o czym pisałem na samym początku artykułu, że terminal jest niezbędnym atrybutem/narzędziem do wykonania skryptu), wpisać cii, nazwa skryptu oddzielona spacjami - aktualizacja.sh i naciśnij klawisz Wejście:


Lub w terminalu wpisz cii i przeciągnij z menedżer plików utworzony plik ze skryptem (również oddzielony spacją):


Po wyświetleniu ścieżki do pliku po poleceniu cii i spacji, po prostu naciśnij klawisz Wchodzić(Enter), aby przeprowadzić aktualizację systemu:


Teraz w każdej chwili możesz dokonać aktualizacji systemu stworzonej przez własny skrypt.

Tak, ktoś mógłby argumentować, że aktualizacja systemu nie jest trudna do wykonania przez wykonanie tych dwóch poleceń w terminalu, po co nadymać się i tworzyć jakieś skrypty? Zgadza się. Ale to jest przykład stworzenia prostego scenariusza, aby pokazać, że „nie bogowie palą garnki” 😃.

Nauczywszy się pisać i korzystać z najprostszych skryptów, możesz stworzyć skrypt konfiguracji systemu, aby w przypadku ponownej instalacji systemu mógł on skorzystać z utworzonego skryptu bez konieczności każdorazowego wyszukiwania w sieci witryn o podobnych ustawieniach.

Wielu z was najprawdopodobniej korzysta ze stron dostrajających system, takich jak te, które publikuję po następnym wydaniu. ubuntu - Ubuntu po instalacji lub podobne witryny. Otwórz jedną z tych witryn: następnie edytor tekstu, aby utworzyć skrypt.
Na przykład zrobiłem następujące puste miejsce.

W edytorze tekstu wprowadź pierwszy wymagany wiersz:

# Konfiguracja Ubuntu po instalacji
# Aktualizacja systemu

Oto polecenia aktualizacji systemu:

Sudo trafna aktualizacja
sudo apt upgrade -y

Wiersz opisu: Dodawanie repozytoriów:

# Dodawanie repozytoriów

I dodaj niezbędne repozytoria do dalszej instalacji oprogramowania:

sudo add-apt-repository "deb http://archive.canonical.com/ $(lsb_release -sc) partner" -y
sudo add-apt-repository ppa:atareao/telegram -y
sudo add-apt-repository ppa:atareao/atareao -y

sudo add-apt-repository ppa:nemh/systemback -y
sudo add-apt-repository ppa:gerardpuig/ppa -y
sudo add-apt-repository ppa: haecker-felix/gradio-daily -y

Po dodaniu niezbędnych repozytoriów (ponownie, możesz mieć własne repozytoria, mam przykład), musisz zaktualizować system:

Linia z opisem:

# Zaktualizuj system po podłączeniu repozytoriów

I polecenie wykonania:

Sudo trafna aktualizacja

Po dodaniu repozytoriów i aktualizacji systemu nadszedł czas na instalację oprogramowania:

# Instalowanie programów

Aby zainstalować programy, wystarczy raz wprowadzić polecenie sudo apt zainstaluj, a następnie, po spacji, dodaj do tego wiersza tyle programów, ile chcesz, najważniejsze jest to, aby były poprawnie skomponowane. Jeśli program składa się z kilku słów, jego polecenie musi być monolityczne, tj. wszystkie słowa muszą być wpisane przez myślnik, na przykład: narzędzie do poprawiania jedności:

sudo apt install my-weather-indicator telegram skype lm-sensors hddtemp psensor gdebi systemback unity-tweak-tool ubuntu-cleaner gradio -y

Instalowanie dodatkowych kodeków

# Multimedia i kodeki

sudo apt install ubuntu-restricted-extras -y

Zamknięcie z powodu awarii systemu

# Wyłącz raportowanie awarii systemu

sudo sed -i "s/enabled=1/enabled=0/g" "/etc/default/apport"

Cóż, może to wszystko. Ten wygenerowany plik skryptu powinien wyglądać tak:


Musisz go zapisać (kliknij przycisk Zapisać) i dać Nazwa z rozszerzeniem .cii. nazywałem go Instalacja\Ubuntu.sh(możesz nazwać to inaczej, ale zawsze z rozszerzeniem .sh):


Tworzymy skrypt wykonywalny:

sudo chmod +x Setup\ Ubuntu.sh

Aby wykonać wygenerowany skrypt, wpisz w terminalu cii oraz nazwę utworzonego skryptu, oddzieloną spacją, lub cii, spację i przeciągnij utworzony plik do terminala, jak wyjaśniono wcześniej w najprostszym skrypcie, i naciśnij klawisz Wejście, aby go wykonać.

Uwaga. ukośnik odwrotny w poleceniu Instalacja\Ubuntu.sh zmienia spację w nazwie pliku dla terminala między dwoma oddzielnymi słowami.

Po wykonaniu skryptu zachowaj go na przyszłość, na ewentualną ponowną instalację systemu i rekonfigurację najlepiej na osobnej sekcji dysku f/w folderze /Dom. Jeśli nie ma, to w usługa chmury (Magazyn w chmurze typ danych: DropBox, Cloud Mail.Ru, Mega.co itp., aby w dowolnym momencie samodzielnie użyć skryptu lub pomóc przyjaciołom lub krewnym w konfiguracji systemu.

Podobał Ci się artykuł? Podziel się z przyjaciółmi!
Czy ten artykuł był pomocny?
tak
Nie
Dziękuję za opinię!
Coś poszło nie tak i Twój głos nie został policzony.
Dziękuję Ci. Twoja wiadomość została wysłana
Znalazłeś błąd w tekście?
Wybierz, kliknij Ctrl+Enter i naprawimy to!