wyświetlaj tylko dyski fizyczne podczas używania df i mount

9

Kiedy używam dflub mount, najbardziej interesują mnie fizyczne partycje dysku. Obecnie dane wyjściowe tych komend są przytłoczone tymczasowymi i wirtualnymi systemami plików, grupami i innymi rzeczami, którymi nie jestem zainteresowany regularnie.

Moje fizyczne partycje na wyjściu zawsze zaczynają się od „ /”, więc próbowałem utworzyć aliasy dla dfi mount:

alias df1="df | egrep '^/'"
alias mount1="mount | egrep '^/'"

Działa to OK mount1(choć pokazuje „ /” na czerwono), ale df1czasami chciałbym dodać -hopcję dfi nie mogę tego zrobić df1 -h. Wolałbym nie mieć aliasu dla każdej kombinacji opcji, której chciałbym użyć. Czy naprawdę muszę analizować definiowanie funkcji w bash (wolałbym tego nie robić)? Czy istnieje lepsze rozwiązanie df1?

yves
źródło

Odpowiedzi:

6

Możesz rozwiązać problem z df1argumentami, używając następującego aliasu:

alias df1='df --type btrfs --type ext4 --type ext3 --type ext2 --type vfat --type iso9660'

upewnij się, aby dodać dowolny inny typ ( xfs, fuseblk(dla nowoczesnego wsparcia NTFS, jak @Pandya wskazał), etc), które Cię interesują. Z tym można zrobić df1 -hi uzyskać oczekiwany rezultat.

mountma -topcję, ale nie można jej podać wiele razy (pobierana jest tylko ostatnia), użyłbym tam:

alias mount1="mount | /bin/grep -E '^/'"

Używam grep -Etak, jak egrepjest przestarzałe, a używanie /bin/grepzapewnia, że ​​nie używasz --colour=autoaliasu dla grep/egrep

Anthon
źródło
df --type ntfsnie pokazuje partycji 5 NTFS i dlatego pomija je w wynikach dla mnie
Pandya
Mam użyć --type fuseblkdo tego
Pandya
@ Pandya, to jest to, co wskazałem, musisz dodać inne typy, którymi jesteś zainteresowany. Nie mam partycji NTFS w moim systemie od kilku lat, więc nie jestem pewien, skąd to się wzięło w używanym przeze mnie aliasie .
Anthon
1
@ Pandya wygląda na to, że --type ntfsbyło to w moim aliasie od czasu, gdy obsługa NTFS była minimalna (czas, w którym trzeba było sprawdzić system plików na partycji NTFS po ponownym uruchomieniu do systemu Windows% -)). Zaktualizowałem moją odpowiedź, dzięki.
Anthon
3

Możesz zdefiniować funkcję w następujący sposób:

function df1() { df "$@" | grep -E '^/'; }

Przykładowe dane wyjściowe:

$ df1 -h
/dev/sda8        25G  8.1G   16G  35% /
/dev/sda4        25G   20G  5.8G  78% /media/pandya/Documents+Edu
/dev/sda3       9.5G  7.1G  2.0G  79% /media/pandya/Ext4
/dev/sda7        24G   17G  6.9G  71% /media/pandya/Extra+Other
/dev/sda6        26G   25G  448M  99% /media/pandya/Media+Game
/dev/sda10       15G  7.9G  7.1G  53% /media/pandya/Miscellaneous
/dev/sda5        36G   22G   14G  63% /media/pandya/Software+OS

Tutaj $@możesz wprowadzić swoje argumenty! [Uwaga: $@należy zawsze pisać w cudzysłowie, chyba że masz konkretny powód, aby tego nie robić. -ed]

Pandya
źródło
3

Jeśli przełączenie na inną dfjest opcją, użyj pydfzamiast tego, ponieważ nie pokazuje ona systemów plików domyślnie posiadających 0 bloków i ma domyślnie włączony wskaźnik, kolory i niektóre inne właściwości. Działa dość dobrze alias df, a oryginał jest zawsze dostępny przy użyciu \df.

Josip Rodin
źródło
Dla mnie najbardziej przydatna odpowiedź tutaj. Niestety, to nie istnieje mount.
emk2203
Trochę późno, ale dla mnie pydf pokazał mój pojedynczy dysk fizyczny i dyski 33 / dev / loop ##, gdy wszystko, czego chcę, to dysk fizyczny. Akceptowana odpowiedź df działa, ale wolę ten formularz: alias dfh = 'df -h -x squashfs -x tmpfs'
Steve Valliere
1

Ta odpowiedź próbuje rozwiązać następujące problemy Yves :

Wolałbym nie mieć aliasu dla każdej kombinacji opcji (1)

i

chociaż pokazuje „/” na czerwono (2)

i (3) dodać ważną informację do zmieniającego się wyniku, który jest dflinią nagłówka zmieniającą się zgodnie z dostarczonymi flagami.

(1) Potrzebujesz function, ponieważ z definicji wymaga argumentów. I jest to bardzo proste do zdefiniowania i użycia, jak dowiesz się poniżej.

(2) czerwony /jest produkowany przez grep --color, co jest wspólnym aliasem dla grepsiebie (możesz to sprawdzić, uruchamiając alias).

kod

function df1 
{ 
    df $* | sed -n '1p;/^\//p;'
}

Powyższe nowe wiersze mają na celu poprawę czytelności, możesz je zastąpić spacją.

Skopiuj i wklej ten fragment bezpośrednio do interaktywnej sesji bash lub, jeszcze lepiej, dołącz go do swojego ~/.bashrc.

Przykładowe użycie

$ df1 
Filesystem                        1K-blocks      Used Available Use% Mounted on
/dev/disk1                        487358464 316093104 171009360  65% /
/dev/disk2                           524032    302620    221412  58% /Volumes/Packer

$ df1 -hT
Filesystem                        Type   Size  Used Avail Use% Mounted on
/dev/disk1                        hfs    465G  302G  164G  65% /
/dev/disk2                        hfs    512M  296M  217M  58% /Volumes/Packer

$ df1 -hT .
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/disk1     hfs   465G  302G  164G  65% /

Co to robi

Funkcja df1wywołuje dfdowolne argumenty, które przekazujesz, i potoki ( |) generują dane wyjściowe sed, które są wywoływane w -ncelu powstrzymania automatycznego drukowania przestrzeni wzorców. Reszta wyraża „skrypty” sed, dwa właściwie:

  1. skrypt 1pwypisuje pierwszą linię, która w naszym przypadku jest dfnagłówkiem (używam tego samego do pspipingu),
  2. skrypt /^\//pdopasowuje dowolny wiersz zaczynający się od /, a następnie go drukuje
  3. ; oddziela 2 skrypty sed
Ori Sapogalaxy
źródło
0

Używam alias df='df -hT -xtmpfs -xdevtmpfs'.

Prawie szkoda, że ​​musisz użyć aliasu, aby GNU dfrzeczywiście działało w Linuksie. Powinna istnieć opcja wyświetlania tylko „prawdziwych” systemów plików (cokolwiek to oznacza).

W rzeczywistości usuwa df -hxtmpfswiększość bzdur i pozostaje użyteczny bez aliasu. Nie bardzo gorzej niż netstat -tulnpi takie ... * westchnienie *

Nicolas Melay
źródło
0

Czytanie man mount

Wyświetlanie montowań
Tryb wyświetlania jest utrzymywany tylko dla kompatybilności wstecznej. Aby uzyskać bardziej niezawodne i konfigurowalne wykorzystanie danych wyjściowych findmnt(8), szczególnie w skryptach.

pokazał mi inny sposób na uzyskanie dokładnie pożądanego wyniku.

Stworzyłem funkcję lsmounts

lsmounts () {
  findmnt -D -t nosquashfs,notmpfs,nodevtmpfs
}

Objaśnienie argumentów:

  • -D: dostarczaj dane wyjściowe tak, jak je znamy df
  • -t: wybierz typy systemów plików, które chcesz zobaczyć. Wyprzedzanie nowyklucza wspomniane systemy plików.

Otrzymuję więc pożądaną moc wyjściową

SOURCE                       FSTYPE   SIZE   USED  AVAIL USE% TARGET
/dev/mapper/vgubuntu-lvroot  ext4    78,3G  42,5G  31,7G  54% /
/dev/mapper/vgubuntu-lvhome  ext4   284,5G 146,4G 124,5G  51% /home
...
guntbert
źródło