Różnica między lokalizacją a tym, które w systemie Linux
27
Jaka jest różnica pomiędzy Linuksem locatea whichLinuksem?
Dlaczego, kiedy korzystam locate mentor, wyświetla listę wszystkich mentorów, ale kiedy korzystam which mentor, mówi „brak mentora w ...” - co to znaczy?
w bash, wolą: type -all acommand. A jeśli przeczytam XYProblem za twoim pytaniem: masz polecenie, możesz je zobaczyć przez lokalizację, ale nie możesz go wykonać? następnie edytuj ŚCIEŻKĘ w ~/.profilepliku konkretnego użytkownika lub jeśli jesteś przekonany, że wiesz, co robić, w /etc/profilepliku globalnym [OSTRZEŻENIE: możesz zepsuć skrypty systemowe (i być może wiele systemów operacyjnych), jeśli dodasz niewłaściwą ścieżkę w $ PATH z / etc / profile ... (np. ścieżki zawierające polecenia zwykle spotykane gdzie indziej). Preferuj dodawanie tylko na końcu zmiennej. I proszę, nie umieszczaj ::ani . nigdzie w tej ŚCIEŻCE.
locate używa wcześniej zbudowanej bazy danych do zlokalizowania pliku.
locateodczytuje jedną lub więcej baz danych przygotowanych przez updatedb(8) i zapisuje nazwy plików pasujące co najmniej do jednej z WZORÓW na standardowe wyjście, po jednej w wierszu.
updatedbtworzy lub aktualizuje bazę danych używaną przez locate(1). Jeśli baza danych już istnieje, jej dane są ponownie wykorzystywane, aby uniknąć ponownego czytania katalogów, które nie uległy zmianie.
updatedbjest zwykle uruchamiany codziennie przez cron(8) w celu aktualizacji domyślnej bazy danych ( /var/lib/mlocate/mlocate.db)
whichszuka pliku wykonywalnego, wyszukując go w katalogach PATHzmiennej środowiskowej.
whichpobiera jeden lub więcej argumentów. Dla każdego z argumentów wypisuje stdoutpełną ścieżkę do plików wykonywalnych, które zostałyby wykonane, gdyby ten argument został wprowadzony w wierszu poleceń powłoki. Robi to, szukając pliku wykonywalnego lub skryptu w katalogach wymienionych w zmiennej środowiskowej PATH.
„updatedb” - dobrze wiedzieć, że nie tylko Microsoft wymyśla zbyt niespecyficzne nazwy rzeczy. (W Win32 DeleteObjectusuwa obiekt GDI, CloseHandlezamyka uchwyt jądra itp. Podobnie updatedbaktualizuje locateDB)
user253751
„Które” jest również szczególnie przydatne w przypadku, gdy możesz mieć wiele wersji tego samego programu, które uruchamiają się w różnych miejscach na twojej ścieżce, więc mówi ci, który z nich jest faktycznie wykonywany po uruchomieniu polecenia. Było to dla mnie pomocne w diagnozowaniu nieoczekiwanego zachowania - na przykład pomogło mi uświadomić sobie, że zostawiłem ręcznie zainstalowaną wersję narzędzia w moim systemie, tak że zastępowało wersję zainstalowaną przez menedżera pakietów.
Carcer
11
whichjest zlokalizowanie polecenia ( whichzwraca nazwę ścieżki do plików / linków, które zostałyby wykonane w bieżącym środowisku)
locatepolega na znajdowaniu plików według nazwy ( locateodczytuje jedną lub więcej baz danych przygotowanych przez updatedbi zapisuje nazwy plików pasujące co najmniej jeden z wzorców do standardowego wyjścia, jeden w wierszu)
Podaj atrybucję dla swoich źródeł - opisy w odpowiedzi pochodzą bezpośrednio ze stron podręcznika dla tych narzędzi.
Przywróć Monikę iamnotmaynard
5
locatedomyślnie przyjmuje wzorzec globalny (można również użyć wzorca Regex) i przeszukuje bazę danych w /var/lib/mlocate/mlocate.dbposzukiwaniu dowolnej nazwy pliku pasującej do wzorca.
whichto polecenie służące do wyszukiwania pełnej ścieżki polecenia w katalogach interpretowanych przez PATHzmienną środowiskową.
where
iwhereis
.type -all acommand
. A jeśli przeczytam XYProblem za twoim pytaniem: masz polecenie, możesz je zobaczyć przez lokalizację, ale nie możesz go wykonać? następnie edytuj ŚCIEŻKĘ w~/.profile
pliku konkretnego użytkownika lub jeśli jesteś przekonany, że wiesz, co robić, w/etc/profile
pliku globalnym [OSTRZEŻENIE: możesz zepsuć skrypty systemowe (i być może wiele systemów operacyjnych), jeśli dodasz niewłaściwą ścieżkę w $ PATH z / etc / profile ... (np. ścieżki zawierające polecenia zwykle spotykane gdzie indziej). Preferuj dodawanie tylko na końcu zmiennej. I proszę, nie umieszczaj::
ani.
nigdzie w tej ŚCIEŻCE.Odpowiedzi:
Jaka jest różnica między
locate
iwhich
?locate
używa wcześniej zbudowanej bazy danych do zlokalizowania pliku.Lokalizacja źródła (1) - strona podręcznika użytkownika systemu Linux
Źródło zaktualizowaneb (8) - strona podręcznika użytkownika systemu Linux
which
szuka pliku wykonywalnego, wyszukując go w katalogachPATH
zmiennej środowiskowej.przy użyciu tego samego algorytmu jak
bash
(1).Źródło, które (1) - strona podręcznika użytkownika systemu Linux
locate mentor
wymienia mentora, alewhich mentor
mówi „brak mentora w ...”Masz kilka nazwanych plików,
mentor
które można znaleźć wlocate
bazie danych.Nie masz plik wykonywalny lub skrypt o nazwie
mentor
w twojejPATH
.źródło
DeleteObject
usuwa obiekt GDI,CloseHandle
zamyka uchwyt jądra itp. Podobnieupdatedb
aktualizujelocate
DB)which
jest zlokalizowanie polecenia (which
zwraca nazwę ścieżki do plików / linków, które zostałyby wykonane w bieżącym środowisku)locate
polega na znajdowaniu plików według nazwy (locate
odczytuje jedną lub więcej baz danych przygotowanych przezupdatedb
i zapisuje nazwy plików pasujące co najmniej jeden z wzorców do standardowego wyjścia, jeden w wierszu)źródło
locate
domyślnie przyjmuje wzorzec globalny (można również użyć wzorca Regex) i przeszukuje bazę danych w/var/lib/mlocate/mlocate.db
poszukiwaniu dowolnej nazwy pliku pasującej do wzorca.which
to polecenie służące do wyszukiwania pełnej ścieżki polecenia w katalogach interpretowanych przezPATH
zmienną środowiskową.źródło