8 trików w powłoce Linux, które całkowicie zmieniają sposób działania poleceń

8 trików w powłoce Linux, które całkowicie zmieniają sposób działania poleceń

Powłoka Linuksa pełni kluczową rolę jako interfejs użytkownika i język programowania, umożliwiając korzystanie z różnych rozszerzeń poleceń, które ułatwiają codzienną pracę.

Powłoka jest niedocenianym bohaterem twojego doświadczenia z Linuksem. Siedząc pomiędzy tobą a programami, które uruchamia twój system operacyjny, powłoka jest jednocześnie interfejsem użytkownika i językiem programowania.

Jednym z zadań powłoki jest stosowanie różnych rozszerzeń do poleceń, które wpisujesz, na przykład wstawiając zmienne. Rozszerzenie obejmuje kilka kroków, dlatego warto zrozumieć cały proces.

Rozszerzenie klamer

Pierwszym krokiem jest wzięcie wyrażeń w klamrach i przekształcenie ich w ciągi z opcjonalnym prefiksem i sufiksem. Jest to przydatne do generowania dłuższych list słów na podstawie prostego wzoru. Na przykład, pierwszy typ rozszerzenia klamer używa przecinków do oddzielenia alternatyw:

echo a{b,c}de

Twoja powłoka rozszerzy to do echo abde acde.

Użycie echo w ten sposób pozwala zobaczyć ostateczny rezultat po rozszerzeniu.

Inny typ rozszerzenia klamer używa wyrażenia sekwencyjnego:

$ echo a.{1..5}.z a.1.z a.2.z a.3.z a.4.z a.5.z

W tym przypadku, {1..5} jest skrótem dla {1,2,3,4,5}. Możesz także używać liter zamiast liczb.

Rozszerzenie tyldy

W swojej podstawowej formie, znak tyldy jest skrótem dla twojego katalogu domowego, np.

$ echo ~ /Users/bobby

Istnieją także inne rozszerzenia tyldy, na przykład:

  • ~user rozszerza się do ścieżki katalogu domowego tego użytkownika.
  • ~+ rozszerza się do bieżącego katalogu roboczego (PWD).
  • ~- rozszerza się do poprzedniego katalogu roboczego (OLDPWD).

Rozszerzenie parametrów i zmiennych

Aby uzyskać dostęp do zmiennej, użyj $ przed jej nazwą lub, jeśli jest to parametr pozycyjny (używany w skryptach powłoki i funkcjach), jego numeru.

echo $PATH foo() { echo $1 } && foo hello

W większości przypadków powinieneś otaczać nazwę zmiennej klamrami:

echo ${PATH}

To pomaga zapobiegać wielu błędom, a także przygotowuje cię do korzystania z jednego z wielu zaawansowanych typów rozszerzeń parametrów, które obsługuje Bash. Na przykład, możesz ustawić zmienną na domyślną wartość, jeśli jest niezdefiniowana lub pusta, używając składni :-:

LOCAL_PATH=${PATH:-/bin}

Możesz również przeprowadzać podstawową manipulację łańcuchami za pomocą rozszerzeń podłańcuchów:

$ GREETING="Hello, world" $ echo ${GREETING:7} world

Możesz nawet przekształcić łańcuch na wielkie litery lub uzyskać jego długość:

$ TITLE="lowercase" $ echo ${TITLE@U} LOWERCASE $ echo ${#TITLE} 9

Bash obsługuje wiele innych typów rozszerzeń parametrów, więc warto zgłębiać jego funkcje manipulacji łańcuchami.

Podstawianie poleceń

Podstawianie poleceń to jedna z najwygodniejszych ulepszeń, które możesz wprowadzić do swojej codziennej pracy z powłoką, zwłaszcza jeśli piszesz skrypty. W prostych słowach, wygląda to tak:

echo $(ls)

Bash uruchomi polecenie w podshellu, zastępując oryginalne $(...) jego wyjściem. Jest to często przydatne, gdy polecenie wyświetla nazwę pliku. Na przykład, polecenie mktemp tworzy plik tymczasowy i wyświetla jego nazwę. Aby rozpocząć edycję pliku tymczasowego za pomocą jednego polecenia, możesz uruchomić:

vi $(mktemp)

Lub możesz utworzyć i wejść do tymczasowego katalogu używając:

cd $(mktemp -d)

Rozszerzenie arytmetyczne

Prawdopodobnie najwięcej zastosowania znajdziesz w rozszerzeniu arytmetycznym w niektórych typach skryptów powłoki. Najtrudniejszą rzeczą w rozszerzeniu arytmetycznym jest zapamiętanie składni podwójnych nawiasów:

$(( 11 * 42 ))

Poza tym możesz przeprowadzać wszystkie podstawowe działania całkowite, których można się spodziewać: mnożenie, postinkrementację oraz przesunięcia bitowe, na przykład. Możesz również używać standardowych operatorów porównania, takich jak == dla równości oraz operatorów logicznych, takich jak && dla AND.

Dzielenie słów

Na tym etapie powłoka dzieli wyniki poprzednich rozszerzeń, które nie wystąpiły w podwójnych cudzysłowach, na słowa. Dzieli na znaki z IFS.

zmienne, które zazwyczaj są rozdzielane spacją, tabulatorem i nową linią.

Przykład:

FILES="one two three" ls ${FILES}

Bash początkowo zamieni drugi polecenie na "ls one two three". Ponieważ ta ekspansja nie była otoczona cudzysłowami, podział wyrazów spowoduje przekazanie trzech parametrów do ls: one, two i three. Gdyby jednak ekspansja była otoczona cudzysłowami, sytuacja wyglądałaby inaczej:

FILES="one two three" ls "${FILES}"

W tym przypadku ls zgłosi błąd o brakującym pliku o nazwie "one two three". Podkreśla to różnicę między trzema argumentami rozdzielonymi spacjami a jednym pojedynczym argumentem, który zawiera spacje.

Rozszerzanie nazw plików

Rozszerzanie nazw plików, znane również jako globbing, pozwala na dopasowywanie plików za pomocą wzorców. Nawet jeśli nigdy o tym nie słyszałeś, prawdopodobnie już z tego korzystałeś, na przykład tak:

ls *.txt

W tej formie rozszerzania, powłoka szuka nieotoczonych cudzysłowami znaków *, ?, i [ . Jeśli je znajdzie, traktuje to słowo jako wzorzec i zastępuje je wszystkimi pasującymi nazwami plików.

Podczas gdy * pasuje do dowolnej liczby znaków, ? pasuje do jednego znaku, a [...] pasuje do znaku z danego zbioru.

Usuwanie cudzysłowów

Na koniec, cudzysłowy (oraz znak backslash, który można użyć do ich poprzedzenia) są usuwane z każdej części oryginalnego ciągu przed rozszerzeniami.

To pozwala na otoczenie argumentów, które chcesz traktować jako pojedynczy argument, nawet jeśli zawierają spacje. Aby więc wylistować plik z problematyczną nazwą:

ls "a filename with spaces"

Bez cudzysłowów, ls spróbuje wylistować cztery oddzielne pliki o jedno-słownych nazwach.

Jeśli ciekawią Cię artykuły podobne do 8 trików w powłoce Linux, które całkowicie zmieniają sposób działania poleceń, zajrzyj do kategorii Linux i odkryj jeszcze więcej interesujących treści.

Indeks
  1. Rozszerzenie klamer
  2. Rozszerzenie tyldy
  3. Rozszerzenie parametrów i zmiennych
  4. Podstawianie poleceń
  5. Rozszerzenie arytmetyczne
  6. Dzielenie słów
  7. Rozszerzanie nazw plików
  8. Usuwanie cudzysłowów

Możesz być zainteresowany

Dodaj komentarz

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

Go up