Napisz skrypt przyjmujący jeden, dwa lub trzy parametry.
Przyklad, opcja --help wyswietla wszystkie opcje
$ ls --help
-a, --all do not ignore entries starting with .
-A, --almost-all do not list implied . and ..
--author with -l, print the author of each file
--help display this help and exit
Pierwszy parametr może być nazwą katalogu albo opcją "-h".
Czyli powinniśmy móc wykonać " skrypt katalog " lub " skrypt -h "
Jeżeli jest nazwą katalogu, zadaniem skryptu jest wyszukanie w tym katalogu podkatalogów pierwszego poziomu zagłębienia i obliczenie, ile zajmują miejsca (w kilobajtach). Wyniki należy wyświetlić na ekranie, posortowane według wielkości.
Wiesz już co to są parametry.
Możesz nawet sobie wyświetlić jaki parametr wybierasz przy uruchomieniu skryptu " echo $1 "
Czym porównasz czy twój parametr jest katalogiem?
- Dla mnie pytanie nie jest oczywiste, ja bym przeszukał cały system (locate)
W poradnikach w internecie można znaleźć także test
( "-d - plik istnieje i jest katalogiem, True if pathname resolves to an existing directory " )
Zamiast test mozna sprawdzic przy pomocy ls -l
[ "$(ls -A katalog | grep ^"d")" ] && echo "Tak jest" || echo "Nie niema "
Poprawiłem trochę przykład. Dodałem grep żeby wyłowić tylko katalogi.
Można go przetestować w terminalu.
$ [ "$(ls -A Desktop | grep ^"d")" ] && echo "Tak jest" || echo "Nie niema "
Tak jest
Z test wygląda to prościej.
$ test -d plik && echo "Tak jest folder." || echo "Nie ma folderu."
Nie ma folderu.
Jak zauważyłeś użyłem skróconej formy " if " , ale do tworzenia menu najczęściej używa się " case ".
Jeżeli pierwszy parametr to opcja "-h", skrypt powinien obliczyć wielkość (w kilobajtach) katalogów domowych wszystkich użytkowników systemu i posortować je według wielkości.
=============
Wiec zrób sobie teraz plan, co powinien zrobić skrypt.
- Czyli mamy miec dwie opcje, ale moze byc ich wiecej.
- Możemy uzyc case zeby zrobic menu, w ktorym beda np. te dwie opcje do wyboru. ( -h lub inne)
- Jezeli opcja "-h" to zrobi to i to
- Jezeli opcja wszystko inne to sprawdzi czy jest to katalogiem i zrobi to i tamto.
- Może jeszcze dodam, ze żeby menu case (w skrypcie) ładniej wyglądało, to zbiór poleceń ("zrób to i tamto") możesz zapisać do funkcji,
a potem użyć tą funkcje w case. A to taka tylko kosmetyka i każdy zrobi jak będzie chciał.
Potem, na podstawie planu zacznij tworzyć skrypt.
Na razie słabo:)
#!/bin/bash
if [[ $1 = "-h" ]]; then
grep home /etc/passwd
else
find /$1 -type d | ls -d */ | du -k
fi