1
PODSTAWY INFORMATYKI
dr inż. Krzysztof Małecki
Operatory || i &&
• polecenie1 || polecenie2
• polecenie1 && polecenie2
• Operator OR ( || ) spowoduje wykonanie polecenia2
tylko wtedy, gdy polecenie1 zakończy się
niepowodzeniem.
• Operator AND ( && ) spowoduje wykonanie polecenia2
jedynie wtedy, gdy polecenie1 zwróci kod wyjścia 0.
2
Polecenia testujące i wyrażenia testowe
• Sprawdzają wartość wyrażenia testowego wyrażenie i
jeśli jest prawdziwe, zwracają wartość 0, w przeciwnym
wypadku wartość różną od 0:
– test wyrażenie
– [ wyrażenie ]
• Przykład:
– test „$zmienna” = „informatyka”
– [ „$zmienna” = „informatyka” ]
• 0 gdy wartość zmiennej równa się łańcuchowi
informatyka
Uwaga: W poleceniach testujących jest konieczne
odseparowanie operandów od operatorów – znak spacji.
Przykładowe wyrażenia testowe
• Dla liczb całkowitych
a –eq b a=b
a –ne b a≠b
a –le b a≤b
a –lt b a<b
a –ge b a≥b
a –gt b a>b
3
Przykładowe wyrażenia testowe
• Dla łańcuchów
-z łańcuch łańcuch ma długość 0
-n łańcuch łańcuch ma niezerową długość
łańcuch1 == łańcuch2 są identyczne
łańcuch1 != łańcuch2 są różne
Przykładowe wyrażenia testowe
• Dla plików
-e plik plik istnieje
-d plik plik istnieje i jest katalogiem
-r plik plik istnieje i jest do czytania
-w plik plik istnieje i jest zapisywalny
-x plik plik istnieje i jest wykonywalny
plik1 –nt plik2 plik1 jest nowszy od plik2
plik1 –ot plik2 plik1 jest starszy od plik2
4
Logiczne wyrażenia testowe
( wyrażenie ) wyrażenie jest prawdziwe
! wyrażenie wyrażenie jest fałszywe
wyr1 –a wyr2 wyr1 i wyr2 są prawdziwe
wyr1 –o wyr2 wyr1 lub wyr2 są prawdziwe
Instrukcja if
if polecenie_testujące
then
polecenia_do_wykonania
fi
polecenia_do_wykonania zostaną wykonane, gdy
polecenie_testujące zwróci wartość 0
(czyli gdy jest prawdziwe)
if polecenie_testujące
then
polecenia_do_wykonania1
else
polecenia_do_wykonania2
fi
5
Elif = else if
if polecenie_testujące1
then
polecenia_do_wykonania1
else
if polecenie_testujące2
then
polecenia_do_wykonania2
fi
fi if polecenie_testujące1
then
polecenia_do_wykonania1
elif polecenie_testujące2
then
polecenia_do_wykonania2
fi
Instrukcja case
testowana wartość jest
porównywana z kolejnymi
wartościami od wzorzec1 do
wzorzecN
We wzorcach można
stosować: znaki
uogólniające (*, ?) oraz
zbiory znaków ( [a-z], [2-9] )
* ) - wartość domyślna
(jeśli nie pasuje żaden z
wzorców) i jest opcjonalna
case testowana_wartość in
wzorzec1 )
ciąg_poleceń1
;;
wzorzec2 )
ciąg_poleceń2
;;
…
wzorzecN )
ciąg_poleceńN
;;
* )
ciąg_poleceń
;;
esac
6
Pętla for
Instrukcja for służy do wykonywania określonej grupy
poleceń dla kilku wartości danej zmiennej.
Lista_poleceń wykonywana dla każdego parametru z
listy_słów; zmienna w kolejnej iteracji zastępowana kolejnym
parametrem z listy_słów.
Pominięcie [in lista_słów] powoduje przyjęcie, że lista_słów jest
łańcuchem zawierającym wszystkie parametry wywołania
($1 $2 $3 …)
for zmienna [in lista_słów]
do
lista_poleceń
done
Pętla for - przykład
Skrypt kopiujący wszystkie pliki,
których nazwy są zapisane w pliku p1,
do katalogu kat1 znajdującego się w
folderze nadrzędnym.
#!/bin/bash
for A in ‘cat p1’
do
echo „Kopiowanie pliku $A”
cp $A ../kat1
done
for zmienna [in lista_słów]
do
lista_poleceń
done
7
Pętla for – inna forma
Postać analogiczna do pętli for w języku C.
Lista_poleceń wykonywana po obliczeniu wyr1 i sprawdzeniu,
że wyr2 jest prawdziwe; obliczane jest wyr3 i sprawdzany
warunek wyr2.
Pętla kończy działanie, gdy wyr2 będzie fałszywe.
for ( ( wyr1; wyr2; wyr3 ) )
do
lista_poleceń
done
Pętla for - przykład
Skrypt wypisujący liczby całkowite od 1 do 5.
#!/bin/bash
for ( ( A=1; A<=5; A++) )
do
echo „$A”
done
for ( ( wyr1; wyr2; wyr3 ) )
do
lista_poleceń
done
8
Pętla while
Polecenia objęte zakresem pętli while są wykonywane tak
długo jak długo polecenie_testujące zwraca wartość 0
(wyrażenie jest prawdziwe)
while polecenie_testujące
do
lista_poleceń
done
Pętla while - przykład
Skrypt wyświetlający kolejne parametry swojego wywołania.
while polecenie_testujące
do
lista_poleceń
done
#!/bin/bash
while [ $1 ]
do
echo „$1”
shift
done
9
Pętla until
Polecenia objęte zakresem pętli until są wykonywane tak
długo aż polecenie_testujące zwróci wartość 0 (testowane
wyrażenie przyjmie wartość prawdy)
until polecenie_testujące
do
lista_poleceń
done
Pętla until - przykład
Skrypt wypisujący kolejno a, aa, aaa, aaaa.
#!/bin/bash
zmienna=„”
Until [ „$zmienna” == aaaa ]
do
zmienna=${zmienna}a
echo $zmienna
done
until polecenie_testujące
do
lista_poleceń
done
10
Polecenia break i continue
Polecenia do kontrolowania wykonania pętli. Break
przerywa działanie pętli. Continue powoduje pominięcie
pozostałych instrukcji z pętli i przejście do kolejnej iteracji.
Break, continue - przykład
1. Skrypt wypisujący wartości parametrów pozycyjnych do
momentu napotkania parametru, którego wartość jest
cyfrą.
2. Skrypt wypisujący tylko te wartości parametrów
pozycyjnych, które nie są cyframi.
Polecenie break
#!/bin/bash
for I
do
case $I in
[0-9] )
break #przerwanie gdy wartością zmiennej jest cyfra
;;
* )
echo $I
;;
esac
echo „To nie była cyfra”
done
11
Polecenie continue
#!/bin/bash
for I
do
case $I in
[0-9] )
continue #przejście do kolejnej iteracji, gdy wartością
zmiennej jest cyfra
;;
* )
echo $I
;;
esac
echo „To nie była cyfra”
done
Polecenie grep
Instrukcja realizuje wyszukiwanie w tekście linii pasujących do
określonego wzorca.
grep [opcje] wzorzec [plik]
Jeśli plik nie zostanie wskazany, dane są pobierane ze
standardowego wejścia.
Znaki specjalne używane we wzorcach polecenia grep:
. dowolny znak
 znosi znaczenie znaku specjalnego
[…] dowolny znak ze zbioru, np. [ab]
[^…] dowolny znak spoza zbioru
* zero lub więcej wystąpień wyrażenia poprzedz. *
^ początek wiersza
$ koniec wiersza
12
Okna dialogowe
• Okna w skryptach shellowych, za pomocą których
można tworzyć listy wyboru, zadawać pytania i
pobierać dane od użytkownika, bądź też
informować użytkownika o przebiegu pewnych
operacji, które skrypt w danej chwili wykonuje.
dialog opcje okno_dialogowe
Okna dialogowe – rodzaje
• yesno
• menu
• inputbox
• textbox
• infobox
• checklist
• radiolist
• gauge
13
Okna dialogowe – opcje
• --clear - czyści ekran,
• --createrc plik - można użyć tej opcji do
wygenerowania przykładowego pliku
konfiguracyjnego,
• --separate-output - tę opcję stosuje się przy
widgetach checklist, drukuje wyjście w osobnych
liniach, co umożliwia przetwarzanie uzyskanych
danych przez inny program,
• --title - tytuł, na górze okna dialogowego,
• --backtitle - podtytuł, w tle okna dialogowego,
znajduje się w lewym górnym rogu ekranu.
Okno yesno
• Użytkownik otrzymuje pytanie, na które musi
odpowiedzieć tak lub nie.
--yesno tekst wysokość szerokość
#!/bin/bash
dialog --title "Okno yesno" 
--yesno "Wybierz tak lub nie." 5 30
14
Okno menu
• służy do prezentowania listy wyborów w postaci
menu,
• użytkownik może wybrać tylko jedną pozycję,
• wyświetlanych jest tyle wpisów ile jest podanych
jako wysokość_menu. Jeśli, jest ich więcej lista
będzie przewijana.
• posiada przyciski ok i cancel.
--menu tekst wysokość szerokość
wysokość_menu element opis
Okno menu – cd.
#!/bin/bash
dialog --title "Okno menu" 
--backtitle "Kurs programowania w shellu" 
--menu "Menu" 9 50 3 
1 jeden 
2 dwa 
3 trzy 
4 cztery
15
Okno checklist
• Podobne do menu, z tą różnicą, iż można
zaznaczać lub odznaczać wiele wpisów
jednocześnie.
• Niektóre wpisy mogą być domyślnie włączane za
pomocą ustawienia status na on.
• Okno checklist posiada przyciski ok i cancel.
• Na stderr drukowana jest lista elementów, które
zostały wybrane.
--checklist tekst wysokość szerokość
wysokość_listy
Okno checklist – cd.
#!/bin/bash
dialog --clear --separate-output --title "Okno checklist" 
--backtitle "Kurs programowania w shellu" 
--checklist 
"Tu można zaznaczać wiele wpisów naraz:" 10 70 4 
"1" "pierwszy element" "off" 
"2" "drugi element" "off" 
"3" "trzeci element" "off" 
"Cztery" "tu zaznaczone domyślnie" "on" 
2> wynik
16
Okno checklist – cd.
Okno radiolist
• Okno radiolist różni się od okna menu
tylko tym, że można zaznaczyć krzyżykiem
(wskazanie jego statusu na on), który
element menu zostanie wybrany.
--radiolist tekst wysokość szerokość
wysokość_listy
17
Okno radiolist – cd.
#!/bin/bash
dialog --clear 
--title "Okno radiolist" 
--backtitle "Kurs programowania w shellu" 
--radiolist "Można zaznaczyć tylko jeden wpis:" 10
70 4 
"1" "pierwszy element" "off" 
"2" "drugi element" "off" 
"3" "trzeci element" "off" 
"4" "czwarty element" "off"
Okno inputbox
• można pobierać od użytkownika jakieś dane.
--inputbox tekst wysokość szerokość
#!/bin/bash
dialog --title "Okno inputbox" 
--inputbox "Pobieranie danych od użytkownika" 8
40 "Tu wpisz dane"
18
Okno msgbox
• służy do wyświetlania komunikatów (np. informacja
o tym co skrypt robi, pomoc, itp.),
• ma tylko jeden przycisk ok.
--msgbox tekst wysokość szerokość
#!/bin/bash
dialog --title "Okno msgbox" 
--msgbox "Tutaj można wstawić jakikolwiek tekst, na
przykład informacje o tym co skrypt robi, pomoc,
itp." 7 45
Okno infobox
• podobne do msgbox, jednak nie ma żadnego
przycisku,
• dialog skończy działanie po wyświetleniu danej
informacji,
• ekran nie jest czyszczony, wiadomość zostaje na
ekranie dopóki skrypt jej nie wyczyści,
• często stosowane gdy skrypt wykonuje jakąś
dłuższą operacje, a my chcemy poinformować
użytkownika o jej przebiegu.
--infobox tekst wysokość szerokość
19
Okno infobox – cd.
#!/bin/bash
dialog --title "Okno infobox" 
--backtitle "Kurs programowania w shellu" 
--infobox "Tu można poinformować użytkownika o
przebiegu jakiejś operacji, która trwa dłużej,
uspokoić go, że wszystko jest OK." 5 58
Okno textbox
• Wyświetla zawartość pliku tekstowego w oknie
--textbox plik wysokość szerokość
#!/bin/bash
dialog --title "Okno textbox" 
--backtitle "Kurs programowania w shellu" 
--textbox text 5 40
20
Okno gauge
• Pokaże miarkę na dole okna. Wartości procentowe
czytane są ze standardowego wejścia.
--gauge tekst wysokość szerokość procent
Koniec
Dziękuję za uwagę

Bash 2 ----- wykład3i4

  • 1.
    1 PODSTAWY INFORMATYKI dr inż.Krzysztof Małecki Operatory || i && • polecenie1 || polecenie2 • polecenie1 && polecenie2 • Operator OR ( || ) spowoduje wykonanie polecenia2 tylko wtedy, gdy polecenie1 zakończy się niepowodzeniem. • Operator AND ( && ) spowoduje wykonanie polecenia2 jedynie wtedy, gdy polecenie1 zwróci kod wyjścia 0.
  • 2.
    2 Polecenia testujące iwyrażenia testowe • Sprawdzają wartość wyrażenia testowego wyrażenie i jeśli jest prawdziwe, zwracają wartość 0, w przeciwnym wypadku wartość różną od 0: – test wyrażenie – [ wyrażenie ] • Przykład: – test „$zmienna” = „informatyka” – [ „$zmienna” = „informatyka” ] • 0 gdy wartość zmiennej równa się łańcuchowi informatyka Uwaga: W poleceniach testujących jest konieczne odseparowanie operandów od operatorów – znak spacji. Przykładowe wyrażenia testowe • Dla liczb całkowitych a –eq b a=b a –ne b a≠b a –le b a≤b a –lt b a<b a –ge b a≥b a –gt b a>b
  • 3.
    3 Przykładowe wyrażenia testowe •Dla łańcuchów -z łańcuch łańcuch ma długość 0 -n łańcuch łańcuch ma niezerową długość łańcuch1 == łańcuch2 są identyczne łańcuch1 != łańcuch2 są różne Przykładowe wyrażenia testowe • Dla plików -e plik plik istnieje -d plik plik istnieje i jest katalogiem -r plik plik istnieje i jest do czytania -w plik plik istnieje i jest zapisywalny -x plik plik istnieje i jest wykonywalny plik1 –nt plik2 plik1 jest nowszy od plik2 plik1 –ot plik2 plik1 jest starszy od plik2
  • 4.
    4 Logiczne wyrażenia testowe (wyrażenie ) wyrażenie jest prawdziwe ! wyrażenie wyrażenie jest fałszywe wyr1 –a wyr2 wyr1 i wyr2 są prawdziwe wyr1 –o wyr2 wyr1 lub wyr2 są prawdziwe Instrukcja if if polecenie_testujące then polecenia_do_wykonania fi polecenia_do_wykonania zostaną wykonane, gdy polecenie_testujące zwróci wartość 0 (czyli gdy jest prawdziwe) if polecenie_testujące then polecenia_do_wykonania1 else polecenia_do_wykonania2 fi
  • 5.
    5 Elif = elseif if polecenie_testujące1 then polecenia_do_wykonania1 else if polecenie_testujące2 then polecenia_do_wykonania2 fi fi if polecenie_testujące1 then polecenia_do_wykonania1 elif polecenie_testujące2 then polecenia_do_wykonania2 fi Instrukcja case testowana wartość jest porównywana z kolejnymi wartościami od wzorzec1 do wzorzecN We wzorcach można stosować: znaki uogólniające (*, ?) oraz zbiory znaków ( [a-z], [2-9] ) * ) - wartość domyślna (jeśli nie pasuje żaden z wzorców) i jest opcjonalna case testowana_wartość in wzorzec1 ) ciąg_poleceń1 ;; wzorzec2 ) ciąg_poleceń2 ;; … wzorzecN ) ciąg_poleceńN ;; * ) ciąg_poleceń ;; esac
  • 6.
    6 Pętla for Instrukcja forsłuży do wykonywania określonej grupy poleceń dla kilku wartości danej zmiennej. Lista_poleceń wykonywana dla każdego parametru z listy_słów; zmienna w kolejnej iteracji zastępowana kolejnym parametrem z listy_słów. Pominięcie [in lista_słów] powoduje przyjęcie, że lista_słów jest łańcuchem zawierającym wszystkie parametry wywołania ($1 $2 $3 …) for zmienna [in lista_słów] do lista_poleceń done Pętla for - przykład Skrypt kopiujący wszystkie pliki, których nazwy są zapisane w pliku p1, do katalogu kat1 znajdującego się w folderze nadrzędnym. #!/bin/bash for A in ‘cat p1’ do echo „Kopiowanie pliku $A” cp $A ../kat1 done for zmienna [in lista_słów] do lista_poleceń done
  • 7.
    7 Pętla for –inna forma Postać analogiczna do pętli for w języku C. Lista_poleceń wykonywana po obliczeniu wyr1 i sprawdzeniu, że wyr2 jest prawdziwe; obliczane jest wyr3 i sprawdzany warunek wyr2. Pętla kończy działanie, gdy wyr2 będzie fałszywe. for ( ( wyr1; wyr2; wyr3 ) ) do lista_poleceń done Pętla for - przykład Skrypt wypisujący liczby całkowite od 1 do 5. #!/bin/bash for ( ( A=1; A<=5; A++) ) do echo „$A” done for ( ( wyr1; wyr2; wyr3 ) ) do lista_poleceń done
  • 8.
    8 Pętla while Polecenia objętezakresem pętli while są wykonywane tak długo jak długo polecenie_testujące zwraca wartość 0 (wyrażenie jest prawdziwe) while polecenie_testujące do lista_poleceń done Pętla while - przykład Skrypt wyświetlający kolejne parametry swojego wywołania. while polecenie_testujące do lista_poleceń done #!/bin/bash while [ $1 ] do echo „$1” shift done
  • 9.
    9 Pętla until Polecenia objętezakresem pętli until są wykonywane tak długo aż polecenie_testujące zwróci wartość 0 (testowane wyrażenie przyjmie wartość prawdy) until polecenie_testujące do lista_poleceń done Pętla until - przykład Skrypt wypisujący kolejno a, aa, aaa, aaaa. #!/bin/bash zmienna=„” Until [ „$zmienna” == aaaa ] do zmienna=${zmienna}a echo $zmienna done until polecenie_testujące do lista_poleceń done
  • 10.
    10 Polecenia break icontinue Polecenia do kontrolowania wykonania pętli. Break przerywa działanie pętli. Continue powoduje pominięcie pozostałych instrukcji z pętli i przejście do kolejnej iteracji. Break, continue - przykład 1. Skrypt wypisujący wartości parametrów pozycyjnych do momentu napotkania parametru, którego wartość jest cyfrą. 2. Skrypt wypisujący tylko te wartości parametrów pozycyjnych, które nie są cyframi. Polecenie break #!/bin/bash for I do case $I in [0-9] ) break #przerwanie gdy wartością zmiennej jest cyfra ;; * ) echo $I ;; esac echo „To nie była cyfra” done
  • 11.
    11 Polecenie continue #!/bin/bash for I do case$I in [0-9] ) continue #przejście do kolejnej iteracji, gdy wartością zmiennej jest cyfra ;; * ) echo $I ;; esac echo „To nie była cyfra” done Polecenie grep Instrukcja realizuje wyszukiwanie w tekście linii pasujących do określonego wzorca. grep [opcje] wzorzec [plik] Jeśli plik nie zostanie wskazany, dane są pobierane ze standardowego wejścia. Znaki specjalne używane we wzorcach polecenia grep: . dowolny znak znosi znaczenie znaku specjalnego […] dowolny znak ze zbioru, np. [ab] [^…] dowolny znak spoza zbioru * zero lub więcej wystąpień wyrażenia poprzedz. * ^ początek wiersza $ koniec wiersza
  • 12.
    12 Okna dialogowe • Oknaw skryptach shellowych, za pomocą których można tworzyć listy wyboru, zadawać pytania i pobierać dane od użytkownika, bądź też informować użytkownika o przebiegu pewnych operacji, które skrypt w danej chwili wykonuje. dialog opcje okno_dialogowe Okna dialogowe – rodzaje • yesno • menu • inputbox • textbox • infobox • checklist • radiolist • gauge
  • 13.
    13 Okna dialogowe –opcje • --clear - czyści ekran, • --createrc plik - można użyć tej opcji do wygenerowania przykładowego pliku konfiguracyjnego, • --separate-output - tę opcję stosuje się przy widgetach checklist, drukuje wyjście w osobnych liniach, co umożliwia przetwarzanie uzyskanych danych przez inny program, • --title - tytuł, na górze okna dialogowego, • --backtitle - podtytuł, w tle okna dialogowego, znajduje się w lewym górnym rogu ekranu. Okno yesno • Użytkownik otrzymuje pytanie, na które musi odpowiedzieć tak lub nie. --yesno tekst wysokość szerokość #!/bin/bash dialog --title "Okno yesno" --yesno "Wybierz tak lub nie." 5 30
  • 14.
    14 Okno menu • służydo prezentowania listy wyborów w postaci menu, • użytkownik może wybrać tylko jedną pozycję, • wyświetlanych jest tyle wpisów ile jest podanych jako wysokość_menu. Jeśli, jest ich więcej lista będzie przewijana. • posiada przyciski ok i cancel. --menu tekst wysokość szerokość wysokość_menu element opis Okno menu – cd. #!/bin/bash dialog --title "Okno menu" --backtitle "Kurs programowania w shellu" --menu "Menu" 9 50 3 1 jeden 2 dwa 3 trzy 4 cztery
  • 15.
    15 Okno checklist • Podobnedo menu, z tą różnicą, iż można zaznaczać lub odznaczać wiele wpisów jednocześnie. • Niektóre wpisy mogą być domyślnie włączane za pomocą ustawienia status na on. • Okno checklist posiada przyciski ok i cancel. • Na stderr drukowana jest lista elementów, które zostały wybrane. --checklist tekst wysokość szerokość wysokość_listy Okno checklist – cd. #!/bin/bash dialog --clear --separate-output --title "Okno checklist" --backtitle "Kurs programowania w shellu" --checklist "Tu można zaznaczać wiele wpisów naraz:" 10 70 4 "1" "pierwszy element" "off" "2" "drugi element" "off" "3" "trzeci element" "off" "Cztery" "tu zaznaczone domyślnie" "on" 2> wynik
  • 16.
    16 Okno checklist –cd. Okno radiolist • Okno radiolist różni się od okna menu tylko tym, że można zaznaczyć krzyżykiem (wskazanie jego statusu na on), który element menu zostanie wybrany. --radiolist tekst wysokość szerokość wysokość_listy
  • 17.
    17 Okno radiolist –cd. #!/bin/bash dialog --clear --title "Okno radiolist" --backtitle "Kurs programowania w shellu" --radiolist "Można zaznaczyć tylko jeden wpis:" 10 70 4 "1" "pierwszy element" "off" "2" "drugi element" "off" "3" "trzeci element" "off" "4" "czwarty element" "off" Okno inputbox • można pobierać od użytkownika jakieś dane. --inputbox tekst wysokość szerokość #!/bin/bash dialog --title "Okno inputbox" --inputbox "Pobieranie danych od użytkownika" 8 40 "Tu wpisz dane"
  • 18.
    18 Okno msgbox • służydo wyświetlania komunikatów (np. informacja o tym co skrypt robi, pomoc, itp.), • ma tylko jeden przycisk ok. --msgbox tekst wysokość szerokość #!/bin/bash dialog --title "Okno msgbox" --msgbox "Tutaj można wstawić jakikolwiek tekst, na przykład informacje o tym co skrypt robi, pomoc, itp." 7 45 Okno infobox • podobne do msgbox, jednak nie ma żadnego przycisku, • dialog skończy działanie po wyświetleniu danej informacji, • ekran nie jest czyszczony, wiadomość zostaje na ekranie dopóki skrypt jej nie wyczyści, • często stosowane gdy skrypt wykonuje jakąś dłuższą operacje, a my chcemy poinformować użytkownika o jej przebiegu. --infobox tekst wysokość szerokość
  • 19.
    19 Okno infobox –cd. #!/bin/bash dialog --title "Okno infobox" --backtitle "Kurs programowania w shellu" --infobox "Tu można poinformować użytkownika o przebiegu jakiejś operacji, która trwa dłużej, uspokoić go, że wszystko jest OK." 5 58 Okno textbox • Wyświetla zawartość pliku tekstowego w oknie --textbox plik wysokość szerokość #!/bin/bash dialog --title "Okno textbox" --backtitle "Kurs programowania w shellu" --textbox text 5 40
  • 20.
    20 Okno gauge • Pokażemiarkę na dole okna. Wartości procentowe czytane są ze standardowego wejścia. --gauge tekst wysokość szerokość procent Koniec Dziękuję za uwagę