Bash podliczenie użytego miejsca

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
xomrk
Piegowaty Guziec
Piegowaty Guziec
Posty: 4
Rejestracja: 03 sie 2011, 18:25
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86

Bash podliczenie użytego miejsca

Post autor: xomrk »

Hi chce w conky mieć pokazane ile jest zajęte miejsca na ile.

Chce zrobić skypt w bashu:

Kod: Zaznacz cały

df -h | grep "/dev/sd" | cut --bytes=29-31
 65
 95
286
 30
I teraz mam pytanie jak wynik tej komendy przypisać tak abym w 4 zmiennych miał takie wyniki
65
95
286
30

?
sir_herrbatka
Zakręcona Traszka
Zakręcona Traszka
Posty: 587
Rejestracja: 10 maja 2009, 14:44
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: KDE Plasma
Architektura: x86

Re: Bash podliczenie użytego miejsca

Post autor: sir_herrbatka »

proponuję użyć poleceń tail i head. tail -n x zwraca x ostatnich linii, analogicznie działa head, ale naturalnie zwraca pierwsze.

więc jak skoro trzeba ci wyłuskać ostatni:

Kod: Zaznacz cały

df -h | grep "/dev/sd" | cut --bytes=29-31 | tail -n 1
przedostatni...

Kod: Zaznacz cały

df -h | grep "/dev/sd" | cut --bytes=29-31 | tail -n 2 | head -n 1
trzeci od końca...

Kod: Zaznacz cały

df -h | grep "/dev/sd" | cut --bytes=29-31 | tail -n 3 | head -n 1
Rzecz jasna możesz to odwrócić i użyć head -n 1 później head -n 2 | tail -n 1 itd.

PS
Tytuł watku jest odrobinę mylący.

PPS
ten kod jest strasznie zamotany bo przecież df można uruchomić wobec wybranego dysku/partycji i wtedy obeszłoby by się bez tych wycinanek
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:

Re: Bash podliczenie użytego miejsca

Post autor: beluosus »

Wydrukować daną liniej można łatwiej sedem albo awkiem:

Kod: Zaznacz cały

# dla linii 11stej
sed '11!d'
awk '{if (NR==11) print}'
Resztę zrobiłbym jednak tak:

Kod: Zaznacz cały

s=$(df -h /home/users | tail -1)
j=0
for i in $s
do
    a[j]="$i"
    echo "a[$j] == ${a[$j]}" # testowy wydruk
    let j++
done
I ładnie dane masz w tablicy.
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

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