• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Projekt do szkoły - Programowanie w Powłoce

Object Storage Arubacloud
0 głosów
319 wizyt
pytanie zadane 15 listopada 2017 w Inne języki przez Laito96 Nowicjusz (150 p.)

Witam
Na wstepie dodam ze jestem zupelnie zielony w programowaniu. Chcialbym zaczac jakos ale niestety w szkole ciezko aby ktos wytlumaczyl. Na YouTube poradniki "Pasja informatyki" naprawde "Zelent" fajnie tlumaczy :)
Ale chcac nie chcac jestem zmuszony do poproszenia o pomoc w napisaniu (zapewne dla was latwego - dla mnie juz nie prostego)skryptu w powloce systemu operacyjnego.

" skrypt przyjmujacy jako parametr nazwe katalogu, ktory znajdzie i wyswietli: liczbe podkatalogow tego katalogu, liczbe plikow zwyklych w tym katalogu, liczbe plikow zwyklych zerowej dlugosci oraz calkowita objetosc tego katalogu w bajtach"

Wiem ze w pierwszej linijce skryptu nalezy uzyc:

#!/bin/bash

Skrypt przyjmacy parametr nazwe katalogu:
Szczerze jakby ktos mogl mnie olsnic mam zastosowac 

ZMIENNA=nazwa_katalogu 
export ZMIENNA

Czy moze mam uzyc PATH ?

 

echo $PATH
PATH=nazwa_katalogu:$PATH /poczatek zmiennej
PATH=$PATH:nazwa_katalogu


 

komentarz 15 listopada 2017 przez Eryk Andrzejewski Mędrzec (164,260 p.)

Co do polecenia to mam kilka pytań.

liczbe podkatalogow tego katalogu

Chodzi o liczbę katalogów w tym katalogu na tylko jednym poziomie, czy ogólną łączną ilość katalogów, wliczając w to podkatalogi w podkatalogach... i tak dalej?

liczbe plikow zwyklych w tym katalogu

Jak wyżej.

liczbe plikow zwyklych zerowej dlugosci

Jak wyżej.

komentarz 15 listopada 2017 przez Laito96 Nowicjusz (150 p.)
edycja 15 listopada 2017 przez Eryk Andrzejewski
Tak tylko na jednym poziomie.
A jesli to nie jest trudne to moglbys wyjasnic jak zrobic wliczajac podkatalogi podkatalogow i tak dalej ? Jesli jest to zbyt czasochlonne to tylko na jednym poziomie
komentarz 15 listopada 2017 przez Eryk Andrzejewski Mędrzec (164,260 p.)

Prosiłbym korzystać już z komentarzy, zamiast odpowiedzi w celu kontynuowania danego wątku - tak można zachować porządek. smiley

komentarz 15 listopada 2017 przez Laito96 Nowicjusz (150 p.)
Poczatki na forum, ale na przyszlosc bede wiedzial. Dzieki blog napewno mi sie przyda, napewno cos wiecej sie dowiem  :)

1 odpowiedź

+2 głosów
odpowiedź 15 listopada 2017 przez Eryk Andrzejewski Mędrzec (164,260 p.)
wybrane 17 listopada 2017 przez Laito96
 
Najlepsza

Popatrz tutaj: http://blog.tobiasz.org/2011/08/25/linux-zliczanie-liczby-plikow-w-katalogu/

Tutaj masz jakiś kurs basha (oczywiście chyba nie ma sensu całego po kolei przerabiać, wystarczy tylko spojrzeć co jest przydatne): http://www.dief.republika.pl/main.html

Jeśli znajdę chwilę, to Ci to pomogę jakoś opracować i wyjaśnię trochę.

Okej, to tak:

skrypt przyjmujacy jako parametr nazwe katalogu

Do zczytywania parametrów wywołania skryptu, przyda Ci się zmienna $1, która przechowuje pierwszy parametr przekazany do skryptu. Analogicznie: $2 przechowuje drugi parametr, $7 - siódmy. Natomiast w zmiennej $0 jest przechowywana nazwa aktualnie wykonywanego skryptu.

Używasz tylko jednego parametru, więc przyda Ci się zmienna $1. Najpierw powinieneś sprawdzić, czy nie jest przypadkiem pusta (sprawdzasz ifem czy równa się pustemu łańcuchowi znaków):

if [ "$1" = "" ]; then
    echo "Niepoprawne użycie programu"
    echo "Użyj: $0 katalog"
    exit 1
fi

Jeżeli program się nie zakończy, to znaczy, że w $1 masz jakąś wartość - tą wartością powinna być oczywiście nazwa katalogu.

Teraz możesz przystąpić do zliczania liczby poszczególnych rodzajów plików i katalogów. Informacje jak to zrobić, masz w podanym przeze mnie linku. Jeżeli czegoś tak nie ma, to wklepujesz w terminal: man find i czytasz. wink

Liczba podkatalogów w katalogu

echo -n "Liczba podkatalogów w katalogu: "
echo `find $1 -maxdepth 1 -type d | wc -l`

Jak to działa? Polecenie find z tymi przełącznikami wyświetla na strumieniu wyjściowym w każdej linii nazwy katalogów znajdujące się w tym katalogu (nie wliczając podkatalogów w podkatalogach) i przekazuje zawartość tego strumienia na strumień wejściowy polecenia wc, które z kolei zlicza liczbę linii i wyświetla ją na strumieniu wyjściowym.

Pozostałe zadania możesz zrobić w podobny sposób.

Liczba plików zwykłych w katalogu

Zadanie robisz bardzo podobnie jak poprzednie, tylko zmieniasz typ z d (directory) na f (file). I podobnie będziesz mógł zrobić dla dowiązań symbolicznych i jeszcze innych rodzajów plików.

Liczba plików zwykłych o zerowym rozmiarze

Czyli chodzi po prostu o puste pliki. Polecenie find ma przełącznik -empty, który pozwala znaleźć puste pliki.

echo -n "Liczba plików o zerowej długości: "
echo `find $1 -maxdepth 1 -type f -empty | wc -l`

 

Wyświetlanie rozmiaru katalogu

Na koniec zostało wyświetlanie rozmiaru katalogu w bajtach. Posłużę się takim kodem:

echo -n "Całkowity rozmiar katalogu w bajtach: "
echo `du -s $1 | cut -f 1`

Polecenie du -s <nazwa_katalogu> wyświetli nam rozmiar katalogu, ale w takiej postaci:

<liczba_bajtów> <nazwa_katalogu>

np.

123456 Pulpit/

My chcemy uzyskać tylko pierwszą z tych wartości, więc przekazujemy wynik tego polecenia poleceniu cut, które "wytnie" pierwszą wartość i będziemy mogli tylko ją wyświetlić na ekranie

To chyba na tyle. Nie jestem pewien w 100%, czy podane przeze mnie kody są pozbawione błędów, gdyż ich nie testowałem, ale mam nadzieję, że wszystko jest okej.

W razie wątpliwości pytaj. smiley

Podobne pytania

0 głosów
3 odpowiedzi 250 wizyt
pytanie zadane 23 stycznia 2019 w Inne języki przez fabujalny Nowicjusz (200 p.)
0 głosów
1 odpowiedź 397 wizyt
pytanie zadane 7 marca 2023 w Systemy operacyjne, programy przez Mariusz M Obywatel (1,640 p.)
0 głosów
1 odpowiedź 1,844 wizyt
pytanie zadane 27 maja 2018 w Inne języki przez SzymonSmith Użytkownik (870 p.)

92,555 zapytań

141,402 odpowiedzi

319,544 komentarzy

61,939 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...