Strona 1 z 1

Programowanie w shellu podstawowe komendy cd...

: 20 kwie 2010, 02:52
autor: Dartron
Witam

mam kilka zadan z BASH'em lecz nie bardzo wiem jak moge sobie z nimi poradzic oto one:

1)
a) wyswietlenie liczby studentow obecnie zalogowanych na serwerze

Kod: Zaznacz cały

who | tr -s ' ' ',' | cut -d, -f1 | sort | uniq | wc -l;
chyba moge uzyc ta komende
b)wyswietlenie liczy studentow obecnie zalogowanych tylko z tej samej grupy
tego za bardzo nie wiem jak to zrobic :/ wiem ze moge uzyc grep ale chyba cos nie tak bo nie wypisuje mi niczego

2)wyswietlic: info o CPU , nazwy modelu procesora, speed i uptime

Kod: Zaznacz cały

echo "`more /proc/cpuinfo | grep 'vendor_id'`";

echo "`more /proc/cpuinfo | grep 'model name`";

echo "`more /proc/cpuinfo | grep 'cpu MHz'`";

echo "`uptime`";
ten kod jest ok ale jezeli maszyna ma dwa rdzenie pokaze mi je z osbna czy mozna jakos wyswietlic info o jednym z nich???



3)wyswietlic sciezki ze zmiennej PATH i dodatkowo wyswietlic informacje na temat tych sciezek takiej jak pozwolenia, data modyfikacji wlasciciel itd

Kod: Zaznacz cały

echo "$PATH" 
niestety z tym rowniez nie wiem jak sobie poradzic ;(

4)wyswietlic info z

Kod: Zaznacz cały

ls -l
ale pozwolic uzytkownikowi wybrac sciezke(katalog)
tutaj chyba mozna wczytac sciezke uzywajac teog kodu

Kod: Zaznacz cały

echo "prosze podac nazwa katalogu"; 
read dirName;
ls $dirName-l

ale czy jest mozliwosc wpisania katalogu ktory nie jest na root bez podawania pelnego adresu sciezki ??

5) wyswietlic podsumowanie uzycia dysku dla kazdego folderu i podfolderu w bajtach, albo w kilobajtach lub w megabajtach
mozna uzyc

Kod: Zaznacz cały

echo "`df -h`";
ale jak wyswietlic info o podkatalogach???

Mam nadzieje ze Ktos bardziej doswiadczony bedzie mi w stanie pomoc z tymi komendami prosze...

P.S. jeszcze jedno pytanie czy po utworzeniu aliasow i zamknieciu sesji one znikaja ??
czy jest jakas specjalna komenda ktora tworze je na stale??

pozdrawiam

Odp: Programowanie w shellu podstawowe komendy cd...

: 20 kwie 2010, 08:18
autor: dawidgarus
3)

Kod: Zaznacz cały

for i in $(echo $PATH | tr ':' ' '); do
  ls -la $i | awk 'NR==2{print $0}'
done

Odp: Programowanie w shellu podstawowe komendy cd...

: 20 kwie 2010, 10:05
autor: beluosus
2) Jeśli procesor ma kilka rdzeni to wyświetli wszystkie, aby wyświetlić tylko pierwszy można zrobić tak:

Kod: Zaznacz cały

grep -m 1 'vendor_id' /proc/cpuinfo
No i nie wspomnę o dziwacznym/bezsensownym użyciu echo i more. Reszta poprawionego kodu:

Kod: Zaznacz cały

grep -m 1 'model name' /proc/cpuinfo
grep -m 1 'cpu MHz' /proc/cpuinfo
uptime    # tak po prostu

3) Użytkownik wyżej przekombinował z awk'iem

Kod: Zaznacz cały

for i in $(echo $PATH | tr ':' ' '); do ls -ld $i; done

4) Sam nie możesz sprawdzić? Wnioski sam wysnuj:

Kod: Zaznacz cały

cmd ;> echo "prosze podac nazwa katalogu"; read dirName; ls -l $dirName
prosze podac nazwa katalogu
.kde
razem 4
lrwxrwxrwx 1 beluosus beluosus   26 01-11 11:07 cache-local -> /var/tmp/kdecache-beluosus
drwxr-xr-x 9 beluosus beluosus 4096 03-08 20:37 share
lrwxrwxrwx 1 beluosus beluosus   21 01-11 11:07 socket-local -> /tmp/ksocket-beluosus
lrwxrwxrwx 1 beluosus beluosus   17 01-11 11:07 tmp-local -> /tmp/kde-beluosus

5) Jeśli dobrze zrozumiałem to można tak:

Kod: Zaznacz cały

find . -type d -exec du -hs {} \;
Dartron pisze:P.S. jeszcze jedno pytanie czy po utworzeniu aliasow i zamknieciu sesji one znikaja ??
czy jest jakas specjalna komenda ktora tworze je na stale??
Tak, znikają. Musisz dopisać alias do ~/.bashrc (ewentualnie do ~/.bash_profile).

Odp: Programowanie w shellu podstawowe komendy cd...

: 20 kwie 2010, 11:38
autor: sibul
1) Z tego co wiem listę zalogowanych można wyświetlić za pomocą polecenia

Odp: Programowanie w shellu podstawowe komendy cd...

: 20 kwie 2010, 15:41
autor: dawidgarus
1 można prościej:

Kod: Zaznacz cały

users | tr ' ' "\n" | uniq | wc -l

Odp: Programowanie w shellu podstawowe komendy cd...

: 21 kwie 2010, 19:28
autor: Dartron
dzieki za pomoc: beluosus, dawidgarus, sibul



ale jedno pytanie
1 można prościej:
Kod:

Kod: Zaznacz cały

users | tr ' ' "\n" | uniq | wc -l 
jak moge zrobic tak komenda wyswietlia liczbe studentow tylko z tej samej grupy uzywajac

Kod: Zaznacz cały

grep 
??

Odp: Programowanie w shellu podstawowe komendy cd...

: 21 kwie 2010, 21:30
autor: dawidgarus
jak moge zrobic tak komenda wyswietlia liczbe studentow tylko z tej samej grupy uzywajac
sprecyzuj... chodzi ci o listę studentów z tej samej grupy co ty? weź pod uwagę, że użytkownik może należeć do wielu grup, więc wystarczy jedna, dowolna wspólna grupa?

EDIT:

Kod: Zaznacz cały

for i in $(grep ^"xxx": /etc/group | cut -d: -f4 | tr ',' ' '); do ps au | grep ^"$i" > /dev/null && echo $i; done
wyświetla listę wszystkich zalogowanych użytkowników z grupy xxx. jeśli chcesz wyświetlić liczbę użytkowników, to na końcu dodaj:

Kod: Zaznacz cały

| wc -l

Odp: Programowanie w shellu podstawowe komendy cd...

: 22 kwie 2010, 10:28
autor: Dartron
ok
masz racje przepraszam troszke zle to sprecyzowalem

ale dokladnie o to mi chodzilo tylko o tych studentow z tej samej grupy co ja i sa w danym momencie zalogowani;
pamietam ze studenci sa zapisani do wielu grup ale mi chodzi o tylko jedna grupe jaka jest np 'xxx'

probowalem ten kod:

Kod: Zaznacz cały

for i in $(grep ^"xxx": /etc/group | cut -d: -f4 | tr ',' ' '); do ps au | grep ^"$i" > /dev/null && echo $i; done
[/quote]

ten kod niestety nie wyswietla mi nawet nazw studentow (uzytkownikow) nie zwraca niczego

a jak wyswietlilem zawartos z /etc/group to nie ma tam tej grupy ktora probuje wyswietlic (jest tylko kilkanascie grup z identyfikatorami od 0 do 122)
a /dev/null jest empty