Skip to content

Instantly share code, notes, and snippets.

@ad-m
Last active April 19, 2016 19:00
Show Gist options
  • Select an option

  • Save ad-m/f93c4ad66838e8dc2efb4e3a48318bbd to your computer and use it in GitHub Desktop.

Select an option

Save ad-m/f93c4ad66838e8dc2efb4e3a48318bbd to your computer and use it in GitHub Desktop.
Rozwiązanie dla laboratoriów 10 z przedmiotu Systemy operacyjne prowadzonego przez p. Zbigniewa Młynarskiego na Uniwersytecie Przyrodniczo-Humanistycznym w Siedlcach
#!/bin/bash
# Zadanie 10.4.
# Przygotuj skrypt o nazwie ​dodaj_cd​, który traktuje kolejne argumenty jako tytuł utworu,
# gatunek muzyki i nazwę wykonawcy. Jeśli dane są poprawne to zostaną one dopisane do
# pliku ​ katalog_cd. Dopuszczalne gatunki muzyki to: ​
# Blues, Jazz, Rock.
if [[ "$2" =~ ^(Blues|Jazz|Rock)$ ]]; then
echo "$1;$2;$3" >> katalog_cd;
echo "Dopisano";
fi;
#!/bin/bash
# Zadanie 10.5. Przygotuj skrypt o nazwie ​ ile_linii, który zlicza liczbę linii w
# pliku tekstowym, którego nazwa została przekazana jako argument.
# Jeśli liczba wynosi 0, to skrypt wyświetla komunikat: "​Nie znaleziono";
# jeśli kilka ­ pojawia się komunikat " Znaleziono następujące:", a po nim zawartość pliku.
if [ `cat $1 | wc -l` == "0" ]; then
echo "Nie znaleziono";
else
echo "Znaleziono nastepujace:";
cat $1;
fi;
#!/bin/bash
# Zadanie 10.5. Przygotuj skrypt o nazwie ​ ile_linii, który zlicza liczbę linii w
# pliku tekstowym, którego nazwa została przekazana jako argument.
# Jeśli liczba wynosi 0, to skrypt wyświetla komunikat: "​Nie znaleziono";
# jeśli kilka ­ pojawia się komunikat " Znaleziono następujące:", a po nim zawartość pliku.
# Wersja zmieniająca logikę działania bez wpływu na wynik
[ -s "$1" ] && { echo "Znaleziono nastepujace:"; cat $1; } || echo "Nie znaleziono";
#!/bin/bash
# Zadanie 10.7. Przygotuj skrypt ​ isInRange​, który sprawdza, czy podana liczba
# znajduje się wewnątrz przedziału obustronnie domkniętego. Kolejne argumenty
# traktujemy, jako: początek przedziału, koniec przedziału, liczba do sprawdzenia.
# Jeśli liczba znajduje się wewnątrz przedziału skrypt zwraca wartość 0, w
# przeciwnym przypadku ­ -1.
[[ $1 -lt $3 ]] && [[ $2 -gt $3 ]] && exit 0 || exit 1
#!/bin/bash
# Zadanie 10.1.
# Przygotuj skrypt o nazwie pora_dnia, który wypisze pytanie "Czy jest ranek? [tak/nie]",
# po czym będzie czekał na odpowiedź użytkownika. W zależności od odpowiedzi użytkownika
# skrypt wypisze tekst "​Dzień dobry ​" albo "​Dobry wieczór."
read -p "Czy jest ranek? [tak/nie] " -n 1 -r
echo # (optional) move to a new line
if [[ $REPLY =~ ^[Tt]$ ]]
then
echo "Dzień dobry"
else
echo "Dobry wieczór"
fi
#!/bin/bash
# Zadanie 10.3. Przygotuj skrypt o nazwie ​ potwierdzenie, który zapyta użytkownika "​Czy jesteś pewny?".
# Skrypt kończy się kodem 0, jeśli użytkownik wybierze jedną z poniższych możliwości: t, tak, T, Tak, TAK
# Jeśli zaś użytkownik odpowie: n, nie, N, Nie, NIE skrypt zakończy swoje działanie z kodem wyjścia 1.
# Jeśli użytkownik odpowie w inny sposób skrypt wypisze komunikat: Nie rozumiem tej odpowiedzi.
read -p "Czy jesteś pewny?" -r
if [[ $REPLY =~ ^(t|tak|T|Tak|TAK)$ ]]
then
exit 0
elif [[ $REPLY =~ ^(n|nie|N|Nie|NIE)$ ]]
then
exit 1
else
echo "Nie rozumiem tej odpowiedzi"
exit 2
fi
#!/bin/bash
# Zadanie 10.2. Przygotuj skrypt o nazwie ​ szukaj ​ , który poprosi o wpisanie przez użytkownika
# nazwy użytkownika, a następnie sprawdzi czy w systemie podany
# użytkownik ma konto i wyświetli stosowny komunikat jeżeli znalazł tę osobę, a także kiedy nie
# mógł znaleźć danej​ osoby. Użyj polecenia ​exit w przypadku
# niepowodzenia.
grep "^$1:" /etc/passwd >>/dev/null && { echo "Znaleziono!"; exit 0; } || { echo "Nie znaleziono!"; exit 1; }
#!/bin/bash
# Zadanie 10.6.
# Przygotuj skrypt o nazwie testowanie​ , który sprawdzi czy podany
# argument skryptu jest katalogiem czy plikiem. Jeżeli będzie to
# plik, wtedy wypisze jego uprawnienia w formie słownej np.:
# "Do pliku [nazwa_pliku] masz prawo tylko do jego odczytu." Jeżeli
# okaże się, że jest to katalog, wtedy skrypt ma wyświetlić jego
# zawartość z podaniem w pierwszej linii pełnej ścieżki dostępu do
# tego katalogu. Jeżeli użytkownik nie podał parametrów to skrypt
# ma wyświetlić pomoc jak go używać.
if [ -d "$1" ]; then
echo "Katalog";
elif [ -f "$1" ]
then
[ -r "$1" ] && echo "Do pliku $1 masz prawo do odczytu.";
[ -w "$1" ] && echo "Do pliku $1 masz prawo do zapisu.";
[ -x "$1" ] && echo "Do pliku $1 masz prawo do wykonywania.";
[ -g "$1" ] && echo "Plik $1 ma ustawiony set­group­id bit";
[ -k "$1" ] && echo "Plik $1 ma ustawiony sticky bit.";
else
echo "Unknown action";
fi;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment