Strona 1 z 1

Bash podliczenie użytego miejsca

: 08 sie 2011, 18:16
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

?

Re: Bash podliczenie użytego miejsca

: 08 sie 2011, 18:44
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

Re: Bash podliczenie użytego miejsca

: 08 sie 2011, 20:56
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.