15 specjalnych znaków, które musisz znać w Bash

15 specjalnych znaków, które musisz znać w Bash

Zrozumienie specjalnych znaków w Bash, takich jak tylda (~), kropka (.), czy symbole wieloznaczne, jest kluczowe dla efektywnej pracy w systemach UNIX.

Jeśli chcesz opanować powłokę Bash w systemie Linux, macOS lub innym systemie podobnym do UNIX, znaki specjalne (takie jak ~, *, | i >) są kluczowe. Pomożemy Ci rozwikłać te enigmatyczne sekwencje poleceń Linuxa i stać się bohaterem hieroglifów.

Co to są znaki specjalne?

Istnieje zestaw znaków, które powłoka Bash traktuje w dwojaki sposób. Kiedy wpisujesz je w powłoce, działają jako instrukcje lub polecenia i informują powłokę, aby wykonała określoną funkcję. Pomyśl o nich jako o jednoliterowych poleceniach.

Czasami po prostu chcesz wydrukować znak i nie potrzebujesz, aby działał jako symbol magiczny. Istnieje sposób, aby użyć znaku, aby reprezentował siebie, a nie swoją specjalną funkcję.

Pokażemy Ci, które znaki są "specjalne" lub "meta-", a także jak możesz je używać funkcjonalnie i dosłownie.

~ Katalog domowy

Tylda (~) jest skrótem dla Twojego katalogu domowego. Oznacza to, że nie musisz wpisywać pełnej ścieżki do swojego katalogu domowego w poleceniach. Gdziekolwiek jesteś w systemie plików, możesz użyć tego polecenia, aby przejść do swojego katalogu domowego:

cd ~

Możesz również użyć tego polecenia z ścieżkami względnymi. Na przykład, jeśli jesteś gdzieś w systemie plików, który nie znajduje się w Twoim katalogu domowym i chcesz przejść do katalogu archive w swoim katalogu work, użyj tyldy, aby to zrobić:

cd ~/work/archive

. Katalog aktualny

Kropka (.) reprezentuje katalog aktualny. Widzisz go na listach katalogów, jeśli użyjesz opcji -a (wszystkie) z ls.

ls -a

Możesz również użyć kropki w poleceniach, aby reprezentować ścieżkę do swojego katalogu aktualnego. Na przykład, jeśli chcesz uruchomić skrypt z aktualnego katalogu, wywołasz go w ten sposób:

./script.sh

To informuje Bash, aby szukał pliku script.sh w katalogu aktualnym. W ten sposób nie będzie przeszukiwał katalogów w Twojej ścieżce w poszukiwaniu odpowiadającego pliku wykonywalnego lub skryptu.

.. Katalog rodzica

Podwójna kropka lub "podwójny punkt" (..) reprezentuje katalog rodzica Twojego aktualnego. Możesz użyć tego, aby przejść o jeden poziom wyżej w drzewie katalogów.

cd ..

Możesz również użyć tego polecenia z ścieżkami względnymi - na przykład, jeśli chcesz przejść o jeden poziom wyżej w drzewie katalogów, a następnie wejść do innego katalogu na tym poziomie.

Możesz także użyć tej techniki, aby szybko przejść do katalogu na tym samym poziomie w drzewie katalogów, co Twój aktualny. Wskakujesz o jeden poziom wyżej, a następnie z powrotem o jeden do innego katalogu.

cd ../gc_help

/ Separator katalogów

Możesz użyć ukośnego znaku (/), często nazywanego po prostu ukośnikiem, aby oddzielić katalogi w ścieżce.

ls ~/work/archive

Jeden ukośny znak reprezentuje najkrótszą możliwą ścieżkę katalogu. Ponieważ wszystko w drzewie katalogów Linuxa zaczyna się od katalogu głównego, możesz użyć tego polecenia, aby szybko przejść do katalogu głównego:

cd /

Najczęściej używasz znaku hash lub numerycznego (#), aby powiedzieć powłoce, że to, co następuje, jest komentarzem i nie powinna na to reagować. Możesz go używać w skryptach powłoki oraz - mniej użytecznie - w linii poleceń.

# To zostanie zignorowane przez powłokę Bash

Nie jest jednak naprawdę ignorowane, ponieważ jest dodawane do historii poleceń.

Możesz również użyć hasha, aby przyciąć zmienną typu string i usunąć część tekstu na początku. To polecenie tworzy zmienną typu string nazwaną this_string.

W tym przykładzie przypisujemy tekst "Dave Geek!" do zmiennej.

this_string="Dave Geek!"

To polecenie używa echo, aby wydrukować słowa "Jak to zrobić" w oknie terminala. Pobiera wartość zapisaną w zmiennej stringowej poprzez rozwinięcie parametru. Ponieważ dodajemy hash i tekst "Dave", przycina tę część stringu przed jej przekazaniem do echo.

echo Jak to zrobić ${this_string#Dave}

To nie zmienia wartości zapisanej w zmiennej stringowej; wpływa tylko na to, co jest wysyłane do echo. Możemy użyć echo, aby ponownie wydrukować wartość zmiennej stringowej i to sprawdzić:

echo $this_string

? Znak Jednoczesny Bash Wildcard

Powłoka Bash obsługuje trzy symbole wieloznaczne, z których jednym jest znak zapytania (?). Symbole wieloznaczne służą do zastępowania znaków w szablonach nazw plików. Nazwa pliku zawierająca symbol wieloznaczny tworzy szablon, który pasuje do zakresu nazw plików, a nie tylko jednej.

Znak zapytania reprezentuje dokładnie jeden znak. Rozważ poniższy szablon nazwy pliku:

ls badge?.txt

To oznacza "wyświetl wszelkie pliki, których nazwa zaczyna się od 'badge' i jest następnie kontynuowana przez dowolny pojedynczy znak przed rozszerzeniem pliku."

Pasuje do następujących plików. Zauważ, że niektóre mają cyfry, a inne litery po części nazwy "badge". Znak zapytania pasuje zarówno do liter, jak i cyfr.

Jednak ten szablon nazwy pliku nie pasuje do "badge.txt", ponieważ nazwa pliku nie ma pojedynczego znaku między "badge" a rozszerzeniem pliku. Znak zapytania musi pasować do odpowiadającego mu znaku w nazwie pliku.

Możesz również użyć znaku zapytania, aby znaleźć wszystkie pliki z określoną liczbą znaków w nazwach plików. To polecenie wyświetli wszystkie pliki tekstowe, które zawierają dokładnie pięć znaków w nazwie pliku:

ls ?????.txt

* Sekwencja Znaku Bash Wildcard

Możesz użyć symbolu wieloznacznego gwiazdki (*) do reprezentowania dowolnej sekwencji znaków, w tym braku znaków. Rozważ poniższy szablon nazwy pliku:

ls badge*

Pasuje do wszystkich następujących:

Pasuje do "badge.txt", ponieważ symbol wieloznaczny reprezentuje dowolną sekwencję znaków lub brak znaków.

To polecenie pasuje do wszystkich plików o nazwie "source", niezależnie od rozszerzenia pliku.

ls source.*

[] Zestaw Znaków Wildcard

Jak omówiono powyżej, używa się znaku zapytania do reprezentacji dowolnego pojedynczego znaku oraz gwiazdki do reprezentacji dowolnej sekwencji znaków (w tym braku znaków).

Możesz utworzyć symbol wieloznaczny za pomocą nawiasów kwadratowych ([]) i zawartych w nich znaków. Odpowiedni znak w nazwie pliku musi następnie pasować do co najmniej jednego znaku w zestawie znaków wieloznacznych.

W tym przykładzie polecenie tłumaczy się na: "dowolny plik z rozszerzeniem '.png', nazwa pliku zaczynająca się od 'pipes_0', w której następny znak to 2, 4 lub 6."

ls badge_0[246].txt

Możesz użyć więcej niż jednego zestawu nawiasów w jednym szablonie nazwy pliku:

ls badge_[01][789].txt

Możesz również dodać zakresy do zestawu znaków. Następujące polecenie wybiera pliki z numerami od 21 do 25 oraz od 31 do 35 w nazwie pliku.

ls badge_[23][1-5].txt

; Separator Polecen Shell

Możesz wpisać dowolną liczbę poleceń w wierszu poleceń, pod warunkiem, że oddzielisz je średnikiem (;). Zrobimy to w następującym przykładzie:

ls > count.txt; wc -l count.txt; rm count.txt

Zauważ, że drugie polecenie działa nawet jeśli pierwsze się nie powiedzie, trzecie działa nawet jeśli drugie się nie powiedzie, i tak dalej.

Jeśli chcesz zatrzymać sekwencję wykonania, jeśli jedno polecenie się nie powiedzie, użyj podwójnego znaku && zamiast średnika:

cd ./doesntexist && cp ~/Documents/reports/* .

Jeśli ciekawią Cię artykuły podobne do 15 specjalnych znaków, które musisz znać w Bash, zajrzyj do kategorii Linux i odkryj jeszcze więcej interesujących treści.

Indeks
  1. Co to są znaki specjalne?
  2. ~ Katalog domowy
  3. . Katalog aktualny
  4. .. Katalog rodzica
  5. / Separator katalogów
  6. ? Znak Jednoczesny Bash Wildcard
  7. * Sekwencja Znaku Bash Wildcard
  8. [] Zestaw Znaków Wildcard
  9. ; Separator Polecen Shell

Możesz być zainteresowany

Dodaj komentarz

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

Go up