Skocz do zawartości

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

Pietreck

ls linux

Polecane posty

Witajcie! :rolleyes:

Mam do Was pytanie odnośnie kwestii, która nie związana jest stricte z programowaniem, jednak w pewnych sytuacjach się zazębia :happy:

Chodzi mi o program ls (linux).

Mam za zadanie napisac program przetwarzający plik tekstowy ls.txt i w związku z tym mam kilka pytań:

1) Zamieszczam plik ls.txt

total 6216
-rwxr-xr-x 1 root root  729040 2009-03-02 15:22 bash
-rwxr-xr-x 1 root root   30140 2008-11-10 12:51 bunzip2
-rwxr-xr-x 1 root root   30140 2008-11-10 12:51 bzcat
lrwxrwxrwx 1 root root       6 2009-09-23 13:34 bzcmp -> bzdiff
-rwxr-xr-x 1 root root    2140 2008-11-10 12:51 bzdiff
lrwxrwxrwx 1 root root       6 2009-09-23 13:34 bzegrep -> bzgrep
-rwxr-xr-x 1 root root    4874 2008-11-10 12:51 bzexe
lrwxrwxrwx 1 root root       6 2009-09-23 13:34 bzfgrep -> bzgrep
-rwxr-xr-x 1 root root    3642 2008-11-10 12:51 bzgrep
-rwxr-xr-x 1 root root   30140 2008-11-10 12:51 bzip2
-rwxr-xr-x 1 root root    9524 2008-11-10 12:51 bzip2recover
lrwxrwxrwx 1 root root       6 2009-09-23 13:34 bzless -> bzmore
-rwxr-xr-x 1 root root    1297 2008-11-10 12:51 bzmore
-rwxr-xr-x 1 root root   30196 2008-06-27 02:31 cat
-rwxr-xr-x 1 root root   50784 2008-06-27 02:31 chgrp
-rwxr-xr-x 1 root root   46664 2008-06-27 02:31 chmod
-rwxr-xr-x 1 root root   50792 2008-06-27 02:31 chown
-rwxr-xr-x 1 root root    5472 2009-04-10 02:51 chvt
-rwxr-xr-x 1 root root   75492 2008-06-27 02:31 cp
-rwxr-xr-x 1 root root  118508 2009-02-15 18:39 cpio
-rwxr-xr-x 1 root root   87924 2008-11-05 08:51 dash
-rwxr-xr-x 1 root root   58960 2008-06-27 02:31 date
-rwxr-xr-x 1 root root    9620 2009-07-07 17:19 dbus-cleanup-sockets
-rwxr-xr-x 1 root root  297364 2009-07-07 17:19 dbus-daemon
-rwxr-xr-x 1 root root    5476 2009-07-07 17:19 dbus-uuidgen
-rwxr-xr-x 1 root root   50820 2008-06-27 02:31 dd
-rwxr-xr-x 1 root root   50812 2008-06-27 02:31 df
-rwxr-xr-x 1 root root   96216 2008-06-27 02:31 dir
-rwxr-xr-x 1 root root    5468 2009-02-18 20:43 dmesg
-rwxr-xr-x 1 root root    9652 2008-05-03 06:14 dnsdomainname
-rwxr-xr-x 1 root root   57884 2009-04-10 02:51 dumpkeys
-rwxr-xr-x 1 root root   26048 2008-06-27 02:31 echo
-rwxr-xr-x 1 root root   40440 2008-11-24 08:51 ed
-rwxr-xr-x 1 root root   96216 2008-11-04 22:16 egrep
-rwxr-xr-x 1 root root   26036 2008-06-27 02:31 false
-rwxr-xr-x 1 root root    9576 2009-04-10 02:51 fgconsole
-rwxr-xr-x 1 root root   55156 2008-11-04 22:16 fgrep
-rwxr-xr-x 1 root root   22536 2007-11-23 11:15 fuser
-rwsr-xr-x 1 root root   22064 2009-03-05 18:42 fusermount
-rwxr-xr-x 1 root root  100312 2008-11-04 22:16 grep
-rwxr-xr-x 1 root root      63 2008-10-15 09:32 gunzip
-rwxr-xr-x 1 root root    5874 2008-10-15 09:32 gzexe
-rwxr-xr-x 1 root root   57360 2008-10-15 09:32 gzip
-rwxr-xr-x 1 root root    9648 2008-05-03 06:14 hostname
-rwxr-xr-x 1 root root  207692 2008-11-05 04:11 ip
-rwxr-xr-x 1 root root    9572 2009-04-10 02:51 kbd_mode
-rwxr-xr-x 1 root root   13748 2009-03-18 23:17 kill
-rwxr-xr-x 1 root root 1374396 2009-02-10 17:13 ld_static
-rwxr-xr-x 1 root root   42564 2008-06-27 02:31 ln
-rwxr-xr-x 1 root root   82676 2009-04-10 02:51 loadkeys
-rwxr-xr-x 1 root root   35080 2009-04-04 07:49 login
-rwxr-xr-x 1 root root   96216 2008-06-27 02:31 ls
-rwxr-xr-x 1 root root    9452 2009-03-18 17:02 lsmod
-rwxr-xr-x 1 root root   34312 2008-06-27 02:31 mkdir
-rwxr-xr-x 1 root root   30220 2008-06-27 02:31 mknod
-rwxr-xr-x 1 root root    9552 2008-11-05 13:30 mktemp
-rwxr-xr-x 1 root root   30316 2009-02-18 20:43 more
-rwsr-xr-x 1 root root   76228 2009-02-18 20:43 mount
-rwxr-xr-x 1 root root    5400 2009-03-31 11:02 mountpoint
lrwxrwxrwx 1 root root      20 2009-09-23 13:34 mt -> /etc/alternatives/mt
-rwxr-xr-x 1 root root   30604 2009-02-15 18:39 mt-gnu
-rwxr-xr-x 1 root root   83732 2008-06-27 02:31 mv
-rwxr-xr-x 1 root root  153516 2009-03-30 12:23 nano
lrwxrwxrwx 1 root root      20 2009-09-23 13:34 nc -> /etc/alternatives/nc
-rwxr-xr-x 1 root root   22076 2008-06-22 00:40 nc.traditional
lrwxrwxrwx 1 root root      24 2009-09-23 13:34 netcat -> /etc/alternatives/netcat
-rwxr-xr-x 1 root root  109996 2008-11-11 18:11 netstat
-rwxr-xr-x 1 root root   34724 2009-04-10 00:46 ntfs-3g
-rwxr-xr-x 1 root root    5472 2009-04-10 00:46 ntfs-3g.probe
lrwxrwxrwx 1 root root       6 2009-09-23 13:34 open -> openvt
-rwxr-xr-x 1 root root   13776 2009-04-10 02:51 openvt
lrwxrwxrwx 1 root root      16 2009-09-23 13:34 pidof -> ../sbin/killall5
-rwsr-xr-x 1 root root   30856 2007-12-10 18:33 ping
-rwsr-xr-x 1 root root   26684 2007-12-10 18:33 ping6
-rwxr-xr-x 1 root root   79636 2009-03-18 23:17 ps
-rwxr-xr-x 1 root root   30200 2008-06-27 02:31 pwd
lrwxrwxrwx 1 root root       4 2009-09-23 13:34 rbash -> bash
-rwxr-xr-x 1 root root   38452 2008-06-27 02:31 readlink
-rwxr-xr-x 1 root root   50744 2008-06-27 02:31 rm
-rwxr-xr-x 1 root root   26052 2008-06-27 02:31 rmdir
lrwxrwxrwx 1 root root       4 2009-09-23 13:34 rnano -> nano
-rwxr-xr-x 1 root root   13940 2009-02-16 22:27 run-parts
-rwxr-xr-x 1 root root   42900 2008-05-03 08:53 sed
-rwxr-xr-x 1 root root   34440 2009-04-10 02:51 setfont
-rwxr-xr-x 1 root root    8794 2009-04-09 03:08 setupcon
lrwxrwxrwx 1 root root       9 2009-10-30 13:23 sh -> /bin/bash
lrwxrwxrwx 1 root root       4 2009-09-23 13:34 sh.distrib -> bash
-rwxr-xr-x 1 root root   26060 2008-06-27 02:31 sleep
-rwxr-xr-x 1 root root   48708 2008-06-27 02:31 stty
-rwsr-xr-x 1 root root   31012 2009-04-04 07:49 su
-rwxr-xr-x 1 root root   26044 2008-06-27 02:31 sync
-rwxr-xr-x 1 root root    9624 2009-02-18 20:43 tailf
-rwxr-xr-x 1 root root  252468 2008-05-03 09:40 tar
-rwxr-xr-x 1 root root    9516 2009-02-16 22:27 tempfile
-rwxr-xr-x 1 root root   46616 2008-06-27 02:31 touch
-rwxr-xr-x 1 root root   26036 2008-06-27 02:31 true
-rwxr-xr-x 1 root root    9664 2009-03-05 18:42 ulockmgr_server
-rwsr-xr-x 1 root root   55200 2009-02-18 20:43 umount
-rwxr-xr-x 1 root root   26052 2008-06-27 02:31 uname
-rwxr-xr-x 1 root root      63 2008-10-15 09:32 uncompress
-rwxr-xr-x 1 root root    2762 2009-04-10 02:51 unicode_start
-rwxr-xr-x 1 root root   96220 2008-06-27 02:31 vdir
-rwxr-xr-x 1 root root     946 2009-02-16 22:27 which
-rwxr-xr-x 1 root root      64 2008-10-15 09:32 zcat
-rwxr-xr-x 1 root root      69 2008-10-15 09:32 zcmp
-rwxr-xr-x 1 root root    4424 2008-10-15 09:32 zdiff
-rwxr-xr-x 1 root root      64 2008-10-15 09:32 zegrep
-rwxr-xr-x 1 root root      64 2008-10-15 09:32 zfgrep
-rwxr-xr-x 1 root root    2015 2008-10-15 09:32 zforce
-rwxr-xr-x 1 root root    4898 2008-10-15 09:32 zgrep
-rwxr-xr-x 1 root root    1733 2008-10-15 09:32 zless
-rwxr-xr-x 1 root root    2416 2008-10-15 09:32 zmore
-rwxr-xr-x 1 root root    4952 2008-10-15 09:32 znew

A oto moje pytania w związku z zamieszczonym plikiem txt. :huh:

Przykladowo wezmy linijke:

-rwxr-xr-x 1 root root 729040 2009-03-02 15:22 bash

Liczba wpisów - czy jest to liczba total, liczba linijek czy też liczba 729040?

Czy linijki sa tylko rekordami czy wlasciwymi wpisami, czy wpisy sa czyms innym?

Liczba plików zapisywalnych przez wlasciciela pliku: Hmm u swiadczy o wlascicielu a r to rewritable jednak i tak nie wiem ile wynosi ta liczba:(

Liczba plików zapisywalnych przez wszystkich.

Wypisz najczęstsze rozszerzenia plików - ? Nie wystepuja tutaj kropki, np w przypadku bash nie bedzie rozszerzenia?

Liczba plików zapisywalnych przez siebie tzn liczba plikow zapisywalnych przez wlasciciela pliku?

Bardzo prosze o przetlumaczenie:) Dzięki z góry! :wink:

Link do komentarza
Udostępnij na innych stronach

Liczba wpisów - czy jest to liczba total, liczba linijek czy też liczba 729040?

Czy linijki sa tylko rekordami czy wlasciwymi wpisami, czy wpisy sa czyms innym?

Wydaje mi sie, ze chodzi o ilosc plikow (linii) zwroconych przez ten program ls, a ta liczba 729040 to rozmiar pliku. (czyli chyba te total)

Liczba plików zapisywalnych przez wlasciciela pliku: Hmm u swiadczy o wlascicielu a r to rewritable jednak i tak nie wiem ile wynosi ta liczba:(

pozycja 2-4 - dotyczy wlasciciela pliku

pozycja 5-7 - dotyczy grupy wlasciciela pliku

pozycja 8-10 - dotyczy wszystkich uzytkownikow

r - read (czytanie)

w - write (pisanie)

x - execute (wykonanie)

Sprawdzasz ile plikow ma 'w' na 3-ej pozycji i to bedzie odpowiedz na Twoje pytanie.

Liczba plików zapisywalnych przez wszystkich.

Patrz wyzej i sobie odpowiedz teraz ;-)

Wypisz najczęstsze rozszerzenia plików - ? Nie wystepuja tutaj kropki, np w przypadku bash nie bedzie rozszerzenia?

Liczba plików zapisywalnych przez siebie tzn liczba plikow zapisywalnych przez wlasciciela pliku?

Obu pytan nie rozumiem.. W pierwszym moze chodzi o typ, wtedy trzeba patrzec na pierwsza pozycje tej kolumny z prawami dostepu.

'-' - plik

'd' - katalog

'l' - dowiazanie symboliczne

'p' - potok nazwany

'c' - urzadzenie znakowe

'b' - urzadzenie blokowe

Pozdrawiam.

Link do komentarza
Udostępnij na innych stronach

Jak wyżej.

Ostatniego pytania w ogóle nie rozumiem.

Jeśli zaś chodzi:

Wypisz najczęstsze rozszerzenia plików - ? Nie wystepuja tutaj kropki, np w przypadku bash nie bedzie rozszerzenia?

Nie występują. Rozszerzenia to wymysł Microsoftu, porządne systemy ich nie potrzebują. Choć z powodu zgodności z Windowsem często są stosowane.

Link do komentarza
Udostępnij na innych stronach

Dzięki za odpowiedzi:)

Sorki za niektóre niejasne i nieprecyzyjne sformułowania, już trochę padnięty jestem a nadal siedzę nad projektem z programowania i piszę łeh :wink: I wlasnie jeden z punktow instrukcji do projektu jest taki aby znalezc najczesciej wystepujace rozszerzenia plikow. Tylko wlasnie przeciez w Linuxie nie ma rozszerzen chyba:(

Link do komentarza
Udostępnij na innych stronach

Tak jak napisałem wcześniej - czasem stosuje się rozszerzenia, ale przeważnie nie są one wymagane. Wyjątkami są np. rozszerzenia .htm, .php, pliki javy, .o, .so itp. Ale w przypadku np. plików tekstowych, czy wykonywalnych, które jednak stanowią większość rozszerzenia nie są potrzebne.

Link do komentarza
Udostępnij na innych stronach

Hej :happy:

Dzięki za pomoc, program napisałem już w 50% :happy:

Jednak wrócę jeszcze do rozszerzeń plików. Otóż jedną z funkcji programu jest wyświetlanie listy dziesięciu najczęstszych rozszerzeń plików.

W takim razie co powinienem traktować jako roszerzenie? :huh:

Ponadto, dla każdego ze znalezionych rekordów powinienem wyświetlić również wartość (ilość odpowiedających wpisów).

I np. tutaj:

-rwxr-xr-x 1 root root 729040 2009-03-02 15:22 bash

Gdzie jest tu wartość/rozszerzenie? Bo już się zamotałem :ohmy:

PS. Dla upewnienia: liczba wszystkich wpisów to liczba total czy liczba linii?

Wydaje mi sie, ze chodzi o ilosc plikow (linii) zwroconych przez ten program ls, a ta liczba 729040 to rozmiar pliku. (czyli chyba te total)

Czyli liczba wszystkich wpisów to total 6216 niem? Czy też liczba linijek (liczba rekordów) 114?

I jeszcze jedno pytanie odnośnie pewnego polecenia zawartego w zadaniu.

Mój program powinien mieć również funkcję FILTROWANIE, tzn. powinien wyświetlać tylko wpisy, które należą do określonego właściciela.

Co to znaczy określony właściciel w tym wypadku?

Gdzie, np. z tych czterech rekordów, mogę odczytać różnych właścicieli?

-rwxr-xr-x 1 root root 729040 2009-03-02 15:22 bash

-rwxr-xr-x 1 root root 30140 2008-11-10 12:51 bunzip2

-rwxr-xr-x 1 root root 30140 2008-11-10 12:51 bzcat

lrwxrwxrwx 1 root root 6 2009-09-23 13:34 bzcmp -> bzdiff

Link do komentarza
Udostępnij na innych stronach

Jednak wrócę jeszcze do rozszerzeń plików. Otóż jedną z funkcji programu jest wyświetlanie listy dziesięciu najczęstszych rozszerzeń plików.

W takim razie co powinienem traktować jako roszerzenie? huh.gif

ja bym szukal tych rozszerzen, ktore sa wykorzystywane w windowsie, czyli po kropce. Zawsze potem mozesz sie klocic z prowadzacym, ze nie wyrazil sie jasno.

Ponadto, dla każdego ze znalezionych rekordów powinienem wyświetlić również wartość (ilość odpowiedających wpisów).

Ok, to nie total.

Zawartość każdego wyświetlanego katalogu poprzedzana jest wierszem z napisem `total BLOKÓW', gdzie BLOKI są całkowitą przestrzenią dysku zajmowaną przez wszystkie pliki w tym katalogu. Domyślnie używane są obecnie bloki 1024-bajtowe, ale można to zmienić. BLOKI zliczane są osobno dla każdego dowiązania twardego; jest to usterka dyskusyjna.

Wiec ilosc wierszy (114, a dokladniej 113 odliczajac total)

Mój program powinien mieć również funkcję FILTROWANIE, tzn. powinien wyświetlać tylko wpisy, które należą do określonego właściciela.

Co to znaczy określony właściciel w tym wypadku?

Gdzie, np. z tych czterech rekordów, mogę odczytać różnych właścicieli?

-rwxr-xr-x 1 root root 729040 2009-03-02 15:22 bash

-rwxr-xr-x 1 root root 30140 2008-11-10 12:51 bunzip2

-rwxr-xr-x 1 root root 30140 2008-11-10 12:51 bzcat

lrwxrwxrwx 1 root root 6 2009-09-23 13:34 bzcmp -> bzdiff

Pierwszy root to uzytkownik, a drugi root to grupa uzytkownika.

Link do komentarza
Udostępnij na innych stronach

W takim razie Twój program będzie musiał rozpoznawać rozszerzenia, co jest nierealne. W DOSie jest prosto, bo rozszerzenie zawsze występuje i ma ono określoną długość, w Windowsie jest podobnie, ale w Unixach niekoniecznie. Można też spotkać rozszerzenia, które składają sie z dwóch członów np. mamy "plik.tar.gz" i tu rozszerzeniem nie jest samo .gz, a .tar.gz. Innymi słowy zadanie jest praktycznie niewykonalne, ponieważ:

1. Część plików nie ma rozszerzenia.

2. Część ma, ale złożone z wielu części.

Nie można obciąć wszystkiego po pierwszej kropce, bo kropka równie dobrze może być częścią nazwy pliku, no i same rozszerzenia nie mają ustandaryzowanej długości. Co by było zabawniej nazwy ukrytych plików zaczynają się właśnie od kropki.

Jedynym sposobem jest zebranie wszystkich możliwych rozszerzeń i porównywanie "na chama".

Jeśli wartość, to ilość odpowiadających wpisów, to może chodzić o drugą pozycję (zlicza twarde dowiązania do pliku).

Link do komentarza
Udostępnij na innych stronach

Rozszyfrowałem instrukcję! :rolleyes:

Dopytałem się kolegi i wraz z Waszą pomocą znam już odpowiedzi na zadane przeze mnie pytania :tongue:

Liczba wpisów tzn. mam podać liczbę linijek prócz linijki Total

Liczba zapisywalnych plików przez właściciela/wszystkich Odszukać "w" na odpowiedniej pozycji i zliczyć :happy:

Określony właściciel. W podanym przeze mnie ls są jedynie root root. Któreś z nich prawdopodobnie się zmienia, będę musiał sprawdzić któro (pierwsze root czy drugie)

Top 10 rozsz.

Wezmę typowe rozszerzenia Windows'owskie i porównam na "chama" :cool:

Dla każdego rekordu wartość - chodzi o ranking i o rekordy w rankingu "top 10 rozszerzeń plików". Czyli ilość linijek z odpowiednim rozszerzeniem :happy:

Hehe udało się odkodować instrukcję i mimochodem poznałem ls'a:) Thx temat zakończony :happy:

Link do komentarza
Udostępnij na innych stronach



  • Kto przegląda   0 użytkowników

    • Brak zalogowanych użytkowników przeglądających tę stronę.
×
×
  • Utwórz nowe...