Mogę zrobić, df .
aby uzyskać niektóre informacje na temat montowania, w którym znajduje się bieżący katalog, i mogę uzyskać wszystkie potrzebne informacje mount
, ale uzyskać wiele informacji (informacje na temat innych montowań). Mogę to zepsuć, ale zastanawiam się, czy jest lepszy sposób.
Czy istnieje mountinfo
takie polecenie , które mountinfo .
daje informacje, które chcę (na przykład df .
, ale z informacjami, które mount
dają).
Używam Debian Gnu + Linux.
filesystems
mount
disk-usage
ctrl-alt-delor
źródło
źródło
stat
można również użyć polecenia. Nie jestem jednak pewien, czy%m
opcja podająca punkt montowania jest obsługiwana w twojej wersji systemu. Sprawdziłem swój system i wydawało się, że nie zwraca punktu montowania.stat "--printf=%m\n" .
pobiera punkt podłączenia systemu plików, w którym znajduje się bieżący katalog. Pozwala to uprościć niektóre odpowiedzi. Dzięki.Odpowiedzi:
Myślę, że chcesz czegoś takiego:
Podczas korzystania z opcji
jeśli ścieżka nie jest plikiem lub katalogiem punktu montowania,findmnt
sprawdza elementy ścieżki w odwrotnej kolejności, aby uzyskać punkt montowania. Za pomocą można wydrukować tylko niektóre pola-o, --output [list]
.Zobacz
findmnt --help
listę dostępnych pól.Alternatywnie możesz uruchomić:
Problem, na który napotykasz, polega na tym, że wszystkie ścieżki są względne w stosunku do czegoś, więc musisz po prostu przejść się po drzewie. Każdego razu.
findmnt
jest członkiem pakietu util-linux i działa już od kilku lat. Do tej pory, bez względu na dystrybucję, powinien on być już zainstalowany na komputerze z systemem Linux, jeśli masz również tomount
narzędzie.findmnt
wypisze informacje o wszystkich montowaniach bez argumentu punktu podłączenia, i tylko dla argumentu z jednym. Jest-D
to opcja emulacjidf
. Bez-D
jego wyjścia jest podobny domount
's - ale o wiele bardziej konfigurowalny. Spróbujfindmnt --help
i przekonaj się sam.Trzymam go w podpowłoce, aby bieżący katalog bieżącej powłoki się nie zmienił.
Więc:
WYNIK
Jeśli nie masz
-D
dostępnej opcji (nie w starszych wersjach util-linux) , nigdy nie musisz się obawiać - w każdym razie jest to coś więcej niż wygodny przełącznik. Zwróć uwagę na nagłówki kolumn generowane dla każdego połączenia - możesz włączyć lub wyłączyć te dla każdego wywołania za pomocą-o
przełącznika utput. Mogę uzyskać takie same dane wyjściowe,-D
jak:WYNIK
źródło
-D
, że nie mam tej opcji. (Jestem na Debianie7, util-linux 2.20.1-5.3)df
- jestem gotów się założyć, że ma pętlę, po prostu nie musisz jej tego mówić.findmnt $(stat "--printf=%m\n" .)
findmnt
ma-T
opcję, która może ominąćcd ..
pętlę. Może być przydatny dla kogoś innego.Linux / Unix to zestaw narzędzi z małymi narzędziami, które po połączeniu dają wyniki, których szukasz.
Zwykle nie mają użyteczności na każdą okazję. Zamiast tego masz wiele małych przydatnych narzędzi, które są połączone z potokami itp. Zaletą tego jest to, że możesz napisać własne narzędzie dość łatwo, jeśli żadne nie jest dostępne.
Na przykład, aby uzyskać potrzebne informacje, możesz użyć:
Jeśli chcesz ponownie użyć powyższego z różnymi katalogami, utwórz skrypt:
Zapisz jako
mountinfo
i ustaw, aby był wykonywalny (chmod +x mountinfo
). Następnie możesz użyć go jako:Jeśli potrzebujesz systemu, który ma narzędzie do wszystkiego, z których żaden nie współpracuje ze sobą, pewien Pan Gates może ci pomóc ;-)
źródło
--output
istnieje tylko w najnowszych wersjach jądra GNU (≥ 8,22).mount
bez żadnych opcji wydaje się trochę po namyśle: dzięki opcjom tworzącym punkty montowania, bez ich listy, liczyłem na lepsze narzędzie listy. Jak widzimy @mikeserv pokazał namfindmnt
.Może być nieco niechlujny, jeśli punkty montowania zawierają spacje, ale powinno to działać, z wyjątkiem przypadków, w których punkty montowania zawierają nowe linie:
df -P
wypisuje jedną linię dla systemu plików; bez tej opcjidf
może wyświetlać dwie linie, jeśli punkt montowania jest długi. Nazwa punktu podłączenia zaczyna się w tej samej kolumnie, co etykieta „Zamontowano” w wierszu nagłówka.Po otrzymaniu punktu montowania, szukamy go w wynikach
mount
.źródło
Nie znam polecenia, ale możesz utworzyć funkcję. Możesz dodać poniżej do swojego
.bashrc
:Wykonuje to
mount
polecenie i przekazuje dane wyjściowe dogrep
.grep
będzie szukał danych wyjściowychdf -P "$1" | tail -n 1 | awk '{print $1}'
i rozbić je:df -P "$1"
będzie działaćdf
się na argumencie przekazanym do funkcji,tail -n 1
wyświetli tylko drugi wiersz, ten zawierającypartition
informacje.awk '{print $1}'
wypisze pierwszą część tego wiersza, na przykład numer dysku / partycji/dev/sda5
. Właśnie tegogrep
będzie szukać w poleceniu mount i wypisania go.Źródło
.bashrc
pliku, aby zastosować zmiany, lub wyloguj się i zaloguj ponownie.Teraz, jeśli uruchomisz
mountinfo .
, otrzymasz pożądaną wydajność.źródło
mount
bez żadnych opcji wydaje się trochę przemyślenie: dzięki opcjom tworzącym punkty montowania, bez ich listy, liczyłem na lepsze narzędzie listy. Jak widzimy @mikeserv pokazał namfindmnt
.Jeśli używasz nie do końca starożytnej wersji GNU coreutils df, to
echo $(df . --output=target | tail -n 1)
działa. Podobnie zstat -c '%m' .
, choć zauważam, że https://linux.die.net/man/1/stat brakuje dokumentacji%m
opcji formatu.Robienie tego przenośnie jest męczące: żadne z powyższych nie będzie działać z BSD ani Cygwin wersjami stat lub df. Gdyby nie możliwość spacji na ścieżkach punktów montowania,
df -P . | tail -1 | awk '{ print $NF}'
byłoby dobrze, ale często dyski flash USB mają spacje w nazwie woluminu, które prawdopodobnie pojawią się na ścieżce montowania i to zepsują. Aby zapewnić przenośność, Perl można zainstalować praktycznie wszędzie, a CPAN ma moduł Sys :: Filesystem :: MountPoint który zapewnia pożądaną funkcjonalność.źródło
echo $()
dodaje się do polecenia?