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}deTwoja 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.zW 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/bobbyIstnieją 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 helloW 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} worldMożesz nawet przekształcić łańcuch na wielkie litery lub uzyskać jego długość:
$ TITLE="lowercase" $ echo ${TITLE@U} LOWERCASE $ echo ${#TITLE} 9Bash 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 *.txtW 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.
Dodaj komentarz

Możesz być zainteresowany