Programowanie w bashu - część 1

Chociaż zwykle używamy go do operacji administracyjnych lub zarządzania plikami, plik wygoda de Linux rozszerza swoją funkcjonalność daleko poza ten cel, umożliwiając nam programowanie skrypty Ten przewodnik nie ma stanowić pełnego odniesienia do programowania Bash, ale raczej wprowadzenie do podstawowych poleceń i struktur, które pozwolą nam rozszerzyć możliwości naszego systemu GNU / Linux.

Co to jest „skrypt”?

Zasadniczo mówimy, że jest to plik zawierający kod napisany w określonym języku programowania, którego system używa do określonego zadania. Nie musi mieć zewnętrznego wejścia ani interfejsu graficznego, ale musi powodować wyjście przetworzonych danych (nawet jeśli użytkownik ich nie widzi).

Język używany przez Bash jest definiowany przez jego własny interpreter i łączy składnię innych powłok, takich jak Korn Shell (ksh) lub C Shell (csh). Wiele poleceń, które są zwykle używane w konsoli, może być również używanych w skryptach, z wyjątkiem tych, które dotyczą ściśle określonej dystrybucji.

Struktura skryptu

Na początek musimy mieć edytor tekstu i chęć programowania. Pliki, które zapisujemy z rozszerzeniem .sh mogą być wykonywane (lub interpretowane) przez konsolę, o ile pierwsza linia jest następująca:

#! / bin / bash

Mówi to systemowi, aby użył konsoli do uruchomienia pliku. Dodatkowo znak # umożliwia wpisywanie komentarzy. Aby stworzyć najprostszy przykład, dodajemy jeszcze jedną linię, widoczną na poniższym obrazku:

Polecenie echo wyświetla komunikat na ekranie, w tym przypadku typowy komunikat „Hello world!” Jeśli go zapiszemy i wykonamy za pomocą konsoli, zobaczymy wynik.

Podstawowe polecenia

Następujące polecenia są typowe i bardzo przydatne w przypadku każdego typu programu. Wyjaśniamy, że jest ich o wiele więcej, ale na razie omówimy następujące.

Aliasy: umożliwia zastąpienie ciągu słów krótszym, co umożliwia redukcję kodu.

# Tworzymy alias o nazwie per z adresem aliasu folderu #Downloads per = '/ home / user / Downloads' # Za każdym razem, gdy chcemy go użyć, musimy tylko wywołać # nowe słowo na #Aby zniszczyć ten alias, używamy unalias unalias na

przerwa: umożliwia natychmiastowe wyjście z pętli for, while, till lub wybór pętli (szczegółowo omówimy pętle później)

# Stwórz pętlę, która przypisze liczby od 1 do 5 # dla każdego "obrotu pętli" dla licznika w 1 2 3 4 5 do # Drukujemy bieżącą wartość zmiennej #counter, która jest analizowana przez znak $ echo "$ counter" #Jeśli wartość licznika jest równa 3, jeśli [$ counter –eq 3] to # Przerwa kończy pętlę i kończy przerwanie

continue - Podobnie jak break, z tą różnicą, że ignoruje bieżącą pętlę i przechodzi do następnej.

# Utwórz pętlę, która przypisze liczby od 1 do 5 # dla każdego „obrotu pętli” dla licznika w 1 2 3 4 5 do # Jeśli wartość licznika jest równa 3, jeśli [$ counter –eq 3] to # Kontynuuj zapobiega analizie pozostałej części bieżącego cyklu poprzez przejście do następnej rundy, to znaczy, że # wartość 3 nie zostanie wydrukowana. continue fi echo "$ counter" gotowe

deklaruj: deklaruje zmienne i przypisuje im wartości, podobnie jak w typie (działają w ten sam sposób). Możemy to połączyć z kilkoma opcjami: -i deklaruje liczby całkowite; -r dla zmiennych tylko do odczytu, których wartości nie można zmienić; –A dla macierzy lub „tablic”; -f dla funkcji; -x dla zmiennych, które można „wyeksportować” poza środowisko samego skryptu.

deklaruj –i num = 12 deklaruj –x pi = 3.14

help: pokazuje pomoc dla konkretnego polecenia.

Jobs: pokazuje uruchomione procesy.

#Dzięki –c pokazujemy nazwy poleceń, z –p # pid (identyfikator procesu) każdego procesu. Jobs -cp

let: oblicz wyrażenie arytmetyczne

niech a = 11 niech a = a + 5 # Na koniec wypisujemy wartość a, która wynosi 16 echo "11 + 5 = $ a"

local: tworzy zmienne lokalne, które powinny być używane najlepiej w funkcjach samego skryptu, aby uniknąć błędów. Możesz używać tych samych funkcji, co w poleceniu deklaruj.

local v1 = "To jest zmienna lokalna"

wylogowanie: umożliwia całkowite wylogowanie się z powłoki; przydatne w przypadkach, gdy pracujemy z więcej niż jednym oknem powłoki, w których polecenie wyjścia pozwoli na zakończenie tylko jednego okna na raz.

printf: umożliwia drukowanie danych i formatowanie ich. Ma wiele opcji, więc wspomnimy o kilku.

#% f jest drukowane jako liczba zmiennoprzecinkowa, n dla nowej linii printf "% fn" 5 5.000000 # & d pozwala na przekazywanie liczb dziesiętnych jako argumentów printf "Istnieje% d zleceń o wartości w% d dolarach.n" 20 500 Istnieją 20 zamówień o wartości 500 dolarów.

czytaj: odczytaj wiersz ze standardowego wejścia (moduł używany do ładowania danych np. przez klawiaturę). Możemy podać opcje takie jak: -t, aby podać limit czasu czytania; -a, aby każde słowo było przypisane do pozycji w tablicy aname; -d, aby użyć separatora, który zostanie zapisany na końcu wiersza; pośród innych.

echo "Wpisz swoje imię i naciśnij ENTER" # Przeczytaj nazwę zmiennej przeczytaj nazwę echo "Twoje imię to $ name"

type: opisuje polecenie i jego zachowanie. Przydatne może być poznanie definicji danych dla każdego polecenia.

type –a '[' #type mówi nam, że [jest poleceniem wbudowanym Shell [jest poleceniem wbudowanym powłoki Shell # -a pozwala znaleźć katalogi, które zawierają # plik wykonywalny o podanej nazwie. [to / usr / bin / [

ulimit: ogranicza dostęp i wykorzystanie pewnych zasobów systemowych do procesów, idealne dla programów, które umożliwiają zmiany administracyjne lub które są przeznaczone dla różnych typów użytkowników. Ustalając limit, piszemy liczbę reprezentującą kilobajty limitu.

#Widzimy nasze obecne ograniczenia ulimit –a # -f pozwala ograniczyć użytkownikom możliwość tworzenia plików większych niż 512000 Kb (500 #Mb) ulimit –f 512000 # -v ogranicza pamięć wirtualną procesu. ulimit –v 512000

czekaj: czekaj na kontynuację określonego procesu lub zadania.

# Skrypt czeka na wykonanie procesu pid # 2585

czekaj 2585

Inne przydatne polecenia, które możemy dodać do skryptów, są reprezentowane przez symbole.

!!: uruchom ponownie ostatnie polecenie

! wer: wykonuje ostatnie polecenie, które rozpoczęło się od wyrażenia „wer”.

'==', '! =', '>', '<', '> =' i '<=': operatory relacyjne.

|: Operator OR zwykle używany do łączenia dwóch wyrażeń regularnych.

: komenda ucieczki, która umożliwia formatowanie wyrażeń. Na przykład: a dla alarmu dźwiękowego, n dla nowej linii, b dla cofnięcia, itp.

Dziękuję Juan Carlos Ortiz!

Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   Średnio trudne powiedział

    Świetny! W każdym razie 2 komentarze: Znacznik Ubuntu jest o połowę za dużo, ponieważ uogólnia coś, co jest ogólne. A jeśli te samouczki będą się rozwijać, byłoby dobrze, gdyby były ze sobą połączone….
    Poza tym ten ruch jest interesujący!

  2.   Użyjmy Linuksa powiedział

    Dobry wkład! Świetny!

  3.   Giovanni escobar sosa powiedział

    Brakuje tylko referencji dla tych, którzy chcą bardziej zagłębić się w sprawę. Niektóre dobre, choć nie tak łatwe do znalezienia w naszych krajach, są
    - Praktyczny przewodnik po poleceniach systemu Linux, edytorach i programowaniu powłoki, Mark Sobell (rozdział 8)
    - Programowanie Pro Bash, Chris FA Johnson (chociaż jest to dla tych, którzy mają inne odniesienia lub trochę więcej wiedzy).

    Dobry artykuł.

  4.   Użyjmy Linuksa powiedział

    Dobra randka! Dziękuję Ci!

  5.   Patricio Dorantes Jamarne powiedział

    : @ Funkcja "zaloguj się jako" usunęła mój poprzedni komentarz, więc podsumuję go dalej:
    Jobs -cp
    bash: jobs: -c: nieprawidłowa opcja
    Jobs: Użycie: Jobs [-lnprs] [jobspec…] lub jobs -x polecenie [argumenty]

    -eq -gt -lt nie akceptują zmiennych z kropkami dziesiętnymi, między forum a forum odkryłem, że bc jest dobrym sprzymierzeńcem:
    jeśli [`echo 9.999> 10 | bc` -eq 1]; następnie
    echo „9.999 10 to więcej niż XNUMX, upewnij się, że procesor nadal działa”
    więcej
    echo «9.999 jest nie większe niż 10, wszystko działa normalnie
    fi

  6.   Nie z Brooklynu powiedział

    Ten post bardzo dobrze podsumowuje wszystkie ogólne informacje o skryptach bash:
    http://www.aboutlinux.info/2005/10/10-seconds-guide-to-bash-shell.html

    Na tej stronie znajdziesz wiele pytań i odpowiedzi na temat osobliwości basha:
    http://unix.stackexchange.com/questions/tagged/bash

    Oto kilka naprawdę fajnych skryptów i hej, możesz się ich nauczyć, czytając skrypty innych osób:
    http://snipplr.com/search.php?q=bash&btnsearch=go

  7.   Nie z Brooklynu powiedział

    Masz rację z tym, co mówisz, z wyjątkiem bash. Każdy system, który widziałem, ma bash w / bin / bash.

    Ale w przypadku Pythona, Perla, Ruby itp. Można tego używać. ja robię

  8.   Guille powiedział

    Przypadkowo na studiach używamy skryptów bash, więc dane wynoszą 10, bardzo dobrze!

  9.   Alex Vi powiedział

    wersja pdf do pobrania byłaby dobra !! 😀

  10.   Marco Antonia De Fuentesa powiedział

    Bardzo dobra strona. W końcu znalazłem coś przydatnego. Dziękuję Ci.