Programowanie w shellu podstawowe komendy cd...

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Dartron
Piegowaty Guziec
Piegowaty Guziec
Posty: 10
Rejestracja: 23 lut 2009, 00:36
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Programowanie w shellu podstawowe komendy cd...

Post 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
dawidgarus
Wytworny Kaczor
Wytworny Kaczor
Posty: 418
Rejestracja: 09 lut 2007, 23:17
Płeć: Mężczyzna
Wersja Ubuntu: 9.10
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: Programowanie w shellu podstawowe komendy cd...

Post autor: dawidgarus »

3)

Kod: Zaznacz cały

for i in $(echo $PATH | tr ':' ' '); do
  ls -la $i | awk 'NR==2{print $0}'
done
Awatar użytkownika
beluosus
Zakręcona Traszka
Zakręcona Traszka
Posty: 695
Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:

Odp: Programowanie w shellu podstawowe komendy cd...

Post 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).
Kurs Linuksa: for i in $(ls /bin); do man $i; done
__________________
http://beluosus.pl/
Awatar użytkownika
sibul
Wytworny Kaczor
Wytworny Kaczor
Posty: 318
Rejestracja: 16 paź 2007, 22:29
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Inne
Architektura: x86_64

Odp: Programowanie w shellu podstawowe komendy cd...

Post autor: sibul »

1) Z tego co wiem listę zalogowanych można wyświetlić za pomocą polecenia
OS X 10.8.3
dawidgarus
Wytworny Kaczor
Wytworny Kaczor
Posty: 418
Rejestracja: 09 lut 2007, 23:17
Płeć: Mężczyzna
Wersja Ubuntu: 9.10
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: Programowanie w shellu podstawowe komendy cd...

Post autor: dawidgarus »

1 można prościej:

Kod: Zaznacz cały

users | tr ' ' "\n" | uniq | wc -l
Dartron
Piegowaty Guziec
Piegowaty Guziec
Posty: 10
Rejestracja: 23 lut 2009, 00:36
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: Programowanie w shellu podstawowe komendy cd...

Post 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 
??
dawidgarus
Wytworny Kaczor
Wytworny Kaczor
Posty: 418
Rejestracja: 09 lut 2007, 23:17
Płeć: Mężczyzna
Wersja Ubuntu: 9.10
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: Programowanie w shellu podstawowe komendy cd...

Post 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
Dartron
Piegowaty Guziec
Piegowaty Guziec
Posty: 10
Rejestracja: 23 lut 2009, 00:36
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: Programowanie w shellu podstawowe komendy cd...

Post 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
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 11 gości