Co to, co uruchamiasz? Programy Linux, skrypty, wbudowane, funkcje i aliasy

Co to, co uruchamiasz? Programy Linux, skrypty, wbudowane, funkcje i aliasy

Artykuł przedstawia różne typy poleceń w systemie Linux, w tym programy wykonywalne, skrypty powłoki, wbudowane polecenia, funkcje oraz aliasy, wraz z ich sposobem uruchamiania.

Co się dzieje, gdy uruchamiasz polecenie w systemie Linux? Ten prosty akt może wydawać się oczywisty, ale w rzeczywistości może wystąpić wiele różnych rzeczy, w zależności od tego, czy uruchamiasz program wykonywalny, skrypt powłoki, polecenie wbudowane, funkcję zdefiniowaną przez użytkownika, czy alias.

Różne typy poleceń Linux

Program (binarny lub wykonywalny) to plik na dysku, w uznawanym formacie. Powszechne formaty to ELF na Linuxie i Mach-O na Macu. Format jest niskopoziomowy, przyjazny dla maszyny, który powłoka może przekazać jądru do uruchomienia.

Skrypt powłoki to forma programu o znacznie wyższym poziomie, napisana w formie tekstu czytelnego dla człowieka. Skrypt powłoki może uruchamiać inne polecenia i być napisany w języku interpretowanym, takim jak Perl czy Python.

Polecenie wbudowane jest wewnętrzne dla powłoki, więc jest zawsze dostępne i zazwyczaj uruchamia się na niskim poziomie, aby wykonywać operacje, które bezpośrednio wpływają na samą powłokę.

Funkcja powłoki jest jak mini skrypt powłoki, pakując zestaw poleceń pod jedną nazwą. Funkcje powłoki są zazwyczaj ładowane, aby były zawsze dostępne pod swoją nazwą.

Alias to alternatywna nazwa dla dowolnego z powyższych. Możesz stworzyć krótki alias dla dłuższego polecenia, aby zaoszczędzić czas i wysiłek przy wykonywaniu powszechnych zadań.

Kolejność, w jakiej powłoka, taka jak bash, szuka tych typów poleceń, jest ważna. Mówiąc prosto, bash próbuje poleceń w tej kolejności: alias, funkcja, wbudowane, program/skrypt.

1 Uruchamianie programu wykonywalnego

Najbardziej znanym rodzajem polecenia jest plik programu wykonywalnego. Wiele najczęstszych programów jest częścią standardu POSIX, co oznacza, że powinny być dostępne na większości systemów Unix lub podobnych do Uniksa, w tym Linux i macOS. Przykłady takich poleceń to cat, diff i vi.

Inne programy wiersza poleceń—takie jak Apache, Neofetch czy tree—mogą wymagać instalacji, ponieważ zazwyczaj nie są domyślnie wbudowane w dystrybucję. Ale, tak jak programy POSIX, będą one uruchamiane przez jeden plik programu gdzieś na twoim dysku.

Istnieją dwa powszechne sposoby uruchamiania programu. Po pierwsze, możesz wpisać ścieżkę do pliku programu, na przykład ./myprog lub /usr/bin/awk. Jeśli pierwsza część twojego polecenia zawiera jakiekolwiek ukośniki, powłoka spróbuje znaleźć plik w odpowiadającej mu ścieżce. Na przykład, możesz uruchomić program w /bin/cat w ten sposób:

/bin/cat myfile

Powłoka następnie sprawdzi, czy istnieje program wykonywalny w /bin/cat, a następnie go uruchomi, jeśli tak.

W systemie Linux programy wykonywalne zazwyczaj nie mają rozszerzenia pliku, więc polecenie takie jak „grep” jest zawarte w pliku o nazwie grep. To po prostu konwencja, ponieważ wygodne jest rozpoznawanie plików wykonywalnych tylko po nazwie. Jednak jeśli naprawdę chcesz, możesz nazwać swoje pliki wykonywalne dowolnie, na przykład „myprog.exe” lub „myprog.RUNME.”

Drugi przypadek występuje, gdy wpisujesz nazwę programu bez ścieżki; na przykład:

cat myfile

W systemie odpowiednio skonfigurowanym powinno to mieć ten sam skutek, co wcześniej, ponieważ powłoka znajdzie ten sam program cat. Dzieje się tak, sprawdzając specjalną zmienną środowiskową o nazwie PATH, która wygląda mniej więcej tak:

To jest lista ścieżek oddzielonych dwukropkami, które powłoka przeszuka, aby zlokalizować program. Kolejność jest ważna, ponieważ możesz mieć dwa pliki o tej samej nazwie w różnych lokalizacjach. Na przykład, jeśli masz plik /usr/bin/grep i plik /bin/grep, powyższa PATH spowoduje, że powłoka uruchomi wersję /usr/bin. Ten system pozwala ci zastąpić polecenie systemowe własnym, które jest bardziej specyficzne dla twoich potrzeb, co może być bardzo użyteczne.

2 Uruchamianie skryptu powłoki

Skrypt powłoki uruchamia się nieco inaczej niż program wykonywalny i jest bardzo innym typem pliku. Prosty skrypt powłoki wygląda tak:

#!/bin/sh
echo To tylko prosty, bezsensowny skrypt powłoki

Pierwsza linia nosi nazwę „shebang” lub „hash-bang”, nazwaną tak ze względu na kombinację znaków # i !. To specjalna instrukcja, która mówi powłoce, którego interpretera użyć dla reszty skryptu. W powyższym przypadku jest to sama powłoka.

/bin/sh.

Pozostała część skryptu jest programem tekstowym, który interpreter rozumie. W tym przypadku powłoka może uruchamiać polecenia takie jak echo w taki sam sposób, jakbyś je wpisał na wierszu poleceń.

W przeciwnym razie, skrypt powłoki jest bardzo podobny do programu wykonywalnego, a twoja powłoka będzie go wyszukiwać za pomocą zmiennej PATH w ten sam sposób. Dla obu programów i skryptów powłoki ważne jest, aby zauważyć, że uprawnienia dotyczące odpowiedniego pliku będą miały wpływ na to, jak go uruchomisz. Przy ustawionym uprawnieniu do wykonywania możesz uruchomić program, wpisując jego nazwę lub ścieżkę. Ale jeśli uprawnienie do wykonywania nie jest ustawione, zobaczysz błąd:

Zawsze możesz uruchomić taki plik, przekazując jego nazwę jako argument do odpowiedniego interpretera. Na przykład, możesz uruchomić skrypt powłoki w ten sposób:

sh myscript.sh

Nawet możesz uruchomić program wykonywalny w ten sposób, ale najpierw musisz przeprowadzić pewne badania. Komenda file daje informacje o typie pliku, w tym o jego interpreterze:

W tym przypadku możesz uruchomić binarkę pwd, używając programu /lib/ld-linux-aarch64.so.1:

3 Wykonywanie wbudowanej powłoki

Niektóre polecenia są na tyle fundamentalne dla natury powłoki, że muszą działać w nieco inny sposób. Nazywane są wbudowanymi, ponieważ w zasadzie stanowią część samej powłoki.

Wbudowane są zazwyczaj niskopoziomowe i to polecenia, których używasz często: cd, echo i kill są typowymi przykładami. W przeciwieństwie do programów i skryptów powłoki, te polecenia nie odpowiadają konkretnemu plikowi, ponieważ są częścią samej powłoki, skompilowaną w pliku wykonywalnym powłoki.

Niektóre systemy mogą zawierać skrypty osłonowe, które uruchamiają wbudowane. Na przykład, w moim systemie macOS znajduje się skrypt /usr/bin/cd, który używa polecenia builtin, aby uruchomić odpowiadającą mu wbudowaną. To dla zgodności z POSIX, i możesz bezpiecznie zignorować wersję skryptu.

Wbudowane mogą być trudne do nauki, ponieważ albo nie mają wpisu w podręczniku (np. na Ubuntu Linux), albo wszystkie mają jedną dużą, wspólną stronę podręcznika (macOS). Program tldr to świetny sposób na zdobycie większej wiedzy o wbudowanych.

Z podobnych powodów, wbudowane zazwyczaj obsługują znacznie mniej opcji wiersza poleceń niż pełnoprawne programy. Na przykład, cd zazwyczaj obsługuje tylko dwie, dość niejasne opcje: -L (w celu śledzenia linków symbolicznych) i -P (aby unikać linków symbolicznych). Oznacza to, że, niestety, opcje takie jak -h lub --help nie są obsługiwane.

4 Wywoływanie funkcji powłoki

Polecenie może być również wywołaniem funkcji. W dowolnym momencie podczas sesji możesz załadować lub zdefiniować funkcję, używając tej składni (w bash):

function_name() {
 commands
}

Alternatywnie możesz użyć składni, która wstawia słowo kluczowe „function” przed nazwą funkcji i pomija nawiasy po niej:

function function_name {
 commands
}

Następnie możesz wywołać funkcję, wpisując jej nazwę, a następnie wszelkie argumenty. Na przykład, mam zdefiniowaną następującą funkcję pomocniczą w pliku:

mkd () {
 mkdir -p "$@"
 cd "$@" || exit
}

Następnie ładuję ten plik z kontrolnego skryptu mojej powłoki (~/.zshrc) i mogę uruchomić to polecenie, aby stworzyć nowy katalog i natychmiast przejść do niego:

mkd new_dir

Możesz wywołać taką funkcję w wierszu poleceń kiedykolwiek chcesz. Możesz również wywołać ją ze skryptów, ale pamiętaj, że musi być załadowana (użyj wbudowanej source, lub jej równoważnika ., aby to zrobić).

5 Używanie aliasu

Alias to udogodnienie, które oszczędza ci wpisywania długich nazw poleceń lub powszechnych opcji. Na przykład, w moim systemie mam alias, aby zapewnić, że listingi plików są w kolorze, z sufiksami typów:

ls='ls -GF'

Teraz, jeśli wpiszę tylko „ls”, polecenie „ls -GF” zostanie uruchomione zamiast tego.

Możesz stworzyć alias w dowolnym momencie, używając wbudowanego polecenia alias, np.

alias ls="ls -GF"

Pamiętaj, że cudzysłowy są wymagane, gdy uruchamiasz alias, jeśli ciąg zastępujący zawiera jakiekolwiek spacje. Możesz wyświetlić wszystkie aliasy, uruchamiając alias, a alias możesz usunąć za pomocą.

komenda unalias. Ponownie, będziesz chciał dodać aliasy do pliku startowego, takiego jak ~/.zshrc lub ~/.bashrc, jeśli chcesz, aby miały zastosowanie w różnych sesjach.

Jeśli ciekawią Cię artykuły podobne do Co to, co uruchamiasz? Programy Linux, skrypty, wbudowane, funkcje i aliasy, zajrzyj do kategorii Linux i odkryj jeszcze więcej interesujących treści.

Indeks
  1. Różne typy poleceń Linux
  • 1 Uruchamianie programu wykonywalnego
  • 2 Uruchamianie skryptu powłoki
  • 3 Wykonywanie wbudowanej powłoki
  • 4 Wywoływanie funkcji powłoki
  • 5 Używanie aliasu
  • Możesz być zainteresowany

    Dodaj komentarz

    Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

    Go up