Kompleksowy przewodnik po korzystaniu z polecenia which w systemie Linux

Kompleksowy przewodnik po korzystaniu z polecenia which w systemie Linux

Linux zapewnia użytkownikom niezrównaną kontrolę nad środowiskiem komputerowym, od rozbudowanych opcji dostosowywania po szczegółowe możliwości zarządzania systemem. Wśród mnóstwa dostępnych narzędzi whichpolecenie wyróżnia się jako kluczowy instrument harmonizujący doświadczenia wiersza poleceń. To narzędzie pozwala odkryć dokładną lokalizację dowolnego pliku wykonywalnego poprzez skanowanie katalogów określonych w $PATHzmiennej. W tym kompleksowym przewodniku zagłębimy się w działanie polecenia which, wyjaśnimy jego składnię i opcje oraz podamy praktyczne przykłady, aby zwiększyć biegłość w posługiwaniu się wierszem poleceń.

Zrozumienie składni i funkcjonalności polecenia which

Polecenie whichjest Twoim narzędziem do lokalizowania pliku wykonywalnego powiązanego z danym poleceniem. Działa poprzez badanie katalogów określonych w zmiennej środowiskowej PATH. To polecenie ujawnia, który plik jest wykonywany, gdy uruchamiasz polecenie i dostarcza powiązane dane wyjściowe na podstawie wyników wyszukiwania:

  • 0oznacza, że ​​wszystkie określone polecenia zostały znalezione i są wykonywalne.
  • 1oznacza, że ​​jedno lub więcej poleceń brakuje lub nie można ich wykonać.
  • 2oznacza, że ​​użyto nieprawidłowej opcji.

Standardowa składnia wywołania whichpolecenia w systemie Linux jest prosta:

which [file1] [file2]...

Wystarczy zastąpić znaki [file1]i [file2]nazwami plików wykonywalnych, które chcesz zlokalizować.

Dlaczego warto używać tego polecenia?

Polecenie whichpełni wiele ważnych funkcji w systemie Linux. Umożliwia użytkownikom potwierdzenie, czy polecenie odpowiada rzeczywistemu plikowi wykonywalnemu, aliasowi lub dowiązaniu symbolicznemu. Ponadto wskazuje dokładną lokalizację pliku wykonywalnego i pomaga zidentyfikować brakujące lub sprzeczne polecenia w zmiennej PATH. Korzystanie z niego whichgwarantuje, że zamierzona wersja polecenia działa skutecznie, gdy w systemie istnieje wiele wersji. To polecenie może znacznie zwiększyć Twoją produktywność, szczególnie podczas obsługi różnych narzędzi i skryptów.

Praktyczne zastosowania polecenia which

Teraz przyjrzyjmy się kilku praktycznym przykładom ilustrującym, jak whichpolecenie to można zastosować w scenariuszach z życia wziętych:

Przykład 1: Lokalizacja ścieżki pliku wykonywalnego

Aby łatwo zidentyfikować miejsce, w którym znajduje się plik wykonywalny polecenia, należy użyć whichpolecenia:

which grep

Znajdź ścieżkę pliku wykonywalnego

Otrzymasz wynik taki jak „ /usr/bin/grep”, który wyraźnie wskazuje dokładną lokalizację pliku wykonywalnego.

Przykład 2: Znajdowanie ścieżek wielu poleceń

Możliwe jest jednoczesne zapytanie o wiele poleceń za pomocą whichpolecenia:

which awk sed cat touch

To polecenie pobiera ścieżki dla poleceń awk, sedi cat:

Znajdź ścieżkę wielu poleceń

Przykład 3: Wyświetlanie wszystkich wystąpień polecenia

Domyślnym zachowaniem whichjest zwracanie tylko pierwszego wystąpienia znalezionego w PATH. Możesz użyć tej -aopcji, aby odkryć wszystkie wystąpienia określonego polecenia:

which -a cat

Spowoduje to wyświetlenie listy wszystkich lokalizacji, w których catmożna go znaleźć:

Pokaż wszystkie wystąpienia

Aby zweryfikować szczegóły tych plików, możesz zastosować lspolecenie z -lhopcją określenia, czy są to rzeczywiste pliki wykonywalne czy duplikaty:

ls -lh /usr/bin/cat && ls -lh /bin/cat

Zweryfikuj pliki wykonywalne

Na wyjściu widać dwa identyczne polecenia znajdujące się w różnych katalogach, przy czym oba są plikami wykonywalnymi o rozmiarze 35 KB.

Przykład 4: Potwierdzenie istnienia polecenia

Sprawdź, czy konkretne polecenie istnieje, używając whichpolecenia:

which cats

Brakujące polecenia

Jeżeli polecenie nie istnieje, nie pojawi się żaden wynik, a kod wyjścia będzie różny od zera, co oznacza brak polecenia.

Przykład 5: Identyfikacja łączy symbolicznych

Jeśli w systemie jest wiele wersji tego samego programu, niektóre wystąpienia mogą być linkami symbolicznymi, a nie rzeczywistymi plikami binarnymi. Aby zidentyfikować linki symboliczne, uruchom whichpolecenie, używając -aopcji:

which -a crontab

Sprawdź linki symboliczne

Następnie sprawdź szczegóły pliku za pomocą lspolecenia:

ls -lh /usr/bin/crontab && ls -lh /bin/crontab

Sprawdź szczegóły pliku

Jeśli w wynikach widzisz ->, oznacza to, że plik jest linkiem symbolicznym wskazującym na inną lokalizację.

Przykład 6: Wykluczanie wbudowanych poleceń powłoki

Warto zauważyć, że whichpolecenie pomija wbudowane polecenia powłoki i wyświetla tylko zewnętrzne pliki wykonywalne, ułatwiając identyfikację miejsca instalacji programu. Na przykład, podczas gdy lszwraca ścieżkę, read, będąc wbudowanym poleceniem, nie:

which ls read

Wyklucz wbudowane polecenia powłoki

Ograniczenia polecenia which

Polecenie whichma pewne ograniczenia, które mogą utrudniać jego skuteczność w określonych kontekstach. Skupia się przede wszystkim na zewnętrznych plikach wykonywalnych i nie identyfikuje wbudowanych poleceń, takich jak cdlub read. Ponadto nie potrafi odróżnić plików binarnych od łączy symbolicznych. Ponieważ przeszukuje ściśle katalogi określone w $PATHzmiennej, nie znajdzie programów przechowywanych w alternatywnych lokalizacjach. Ponadto nie ma możliwości podania szczegółów, takich jak typ pliku, uprawnienia lub informacje o wersji. Co godne uwagi, jeśli polecenie jest nieobecne, po prostu nie zwraca żadnego wyniku zamiast komunikatu o błędzie.

Aby obejść te ograniczenia, należy rozważyć użycie alternatywnych poleceń, takich jak whereis, typelub ls.

Polecenie Where vs. Which

Polecenia wherei whichsą ukierunkowane na lokalizowanie plików, ale służą różnym celom.wherePolecenie jest zazwyczaj wykorzystywane w systemie Windows i niektórych systemach typu Unix; lokalizuje zarówno pliki, jak i katalogi, wyświetlając wszystkie dopasowania w zmiennej systemowej PATH.

Odwrotnie, whichpolecenie jest wyłączne dla systemów typu Unix, skupiając się wyłącznie na plikach wykonywalnych w katalogach określonych w $PATHzmiennej. Domyślnie zwraca tylko pierwsze znalezione dopasowanie; jednak -aopcja ta umożliwia wylistowanie wszystkich dopasowań.

Aby zobrazować różnicę: uruchomienie where nodew systemie Windows ujawnia wszystkie lokalizacje, w których znajduje się plik wykonywalny węzła, natomiast w systemie Linux wykonanie which gcczwraca pierwszy katalog, w którym znajduje się kompilator GCC.

Choć oferuje mnóstwo funkcji, whichpoleceniu może brakować niektórych możliwości. Niemniej jednak użytkownicy mogą przezwyciężyć jego ograniczenia, wykorzystując polecenia uzupełniające. Ważne jest również, aby pamiętać, że whichwykrywa tylko pliki wykonywalne w Twoim $PATH; jeśli Twój skrypt lub program nie jest zidentyfikowany, może po prostu nie mieć uprawnień do wykonywania, dlatego zapewnienie, że Twój skrypt znajduje się w katalogu wymienionym w $PATHz odpowiednimi uprawnieniami do wykonywania, jest kluczowe.

Często zadawane pytania

1. Jaki jest główny cel polecenia which?

Podstawowym celem polecenia whichjest zlokalizowanie pliku wykonywalnego skojarzonego z danym poleceniem poprzez przeszukanie katalogów określonych w $PATHzmiennej środowiskowej.

2. Jak mogę znaleźć wiele plików wykonywalnych jednocześnie, używając polecenia which?

Można określić wiele poleceń w jednym whichpoleceniu, oddzielając je spacjami, na przykład: which command1 command2, co umożliwi jednoczesne pobranie ścieżek do wszystkich określonych plików wykonywalnych.

3. O jakich ograniczeniach powinienem wiedzieć używając polecenia which?

Polecenie whichma kilka ograniczeń, w tym brak możliwości znalezienia wbudowanych poleceń powłoki, brak rozróżnienia między plikami binarnymi i dowiązaniami symbolicznymi oraz przeszukiwanie tylko katalogów określonych w $PATHzmiennej. Jeśli plik wykonywalny nie zostanie znaleziony, nie zostanie zwrócony żaden komunikat o błędzie, co może być mylące.

Źródło i obrazy

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *