Chciałbym, aby metoda przechwytywała użycie dysku przez określoną partycję za pomocą katalogu, w którym partycja jest zamontowana. Wyjście powinno być po prostu liczbą całkowitą bez dopełniania lub następujących po sobie symboli, ponieważ chciałbym zapisać go w zmiennej.
Użyłem df --output=pcent /mount/point
, ale muszę przyciąć dane wyjściowe, ponieważ ma niepotrzebny nagłówek, pojedyncze wypełnienie spacją przed wartością i symbol% następujący po tej wartości:
Use%
83%
W tym przypadku chciałbym uzyskać wynik 83
. Nie znam żadnych wad korzystania z danych wyjściowych df
, ale chętnie akceptuję inne metody, które na nich nie polegają.
command-line
bash
scripts
disk-usage
Arroniczny
źródło
źródło
tr
, wpadłem w bałagan z pomysłami sed i awk.Odpowiedzi:
Użyłbym ...
Nie jestem pewien, czy sed jest szybszy, ale nigdy nie pamiętam wartości sed.
źródło
time
przetestować to wychodzi jako tak szybko jak sed.tr
jest łatwiejszy do odczytania niżsed
.Oto rozwiązanie awk:
Zasadniczo dzieje się tutaj to, że traktujemy znak „%” jako separator pól (separator kolumn) i drukujemy pierwszą kolumnę $ 1 tylko wtedy, gdy liczba rekordów jest równa dwóm (
NR==2
część)Gdybyśmy chcieli użyć
bash
tylko narzędzi, moglibyśmy zrobić coś takiego:I dla zabawy, alternatywa
sed
poprzez przechwytywanie grupy i-r
dla rozszerzonego wyrażenia regularnego:źródło
sed
rozwiązanie1d
usuń pierwszy wiersz;
do oddzielania poleceńs/^ //
usuń spację z początku liniis/%//
usuń%
znakźródło
Do potoku można
grep
wyodrębnić cyfry:Zobacz na żywo:
źródło
Natknąłem się na serwer, na którym --output = pcent nie został jeszcze zaimplementowany, więc użyłem normalnego wyjścia, filtrowanego według kolumn, a następnie wyrażenia regularnego:
df /mount/point | awk '{print $5}' | tr -dc '0-9'
źródło
Dwustopniowe rozwiązanie Bash
Będąc w pewnym sensie fanem bashu (Borne Again SHell) w zeszłym roku pomyślałem, że zaproponuję rozwiązanie wykorzystujące to.
df
dane wyjściowe do zmiennejDF_PCT
.DF_PCT
i wyświetla je na ekranie.5
wygenerowaniu wartości procentowej ( w tym przypadku).źródło
Oto inne rozwiązanie:
źródło