Bash Wildcard

Bash Wildcard
Kiedy musimy szukać czegokolwiek za pomocą poleceń powłoki, musimy zdefiniować wzór do wyszukiwania. Znaki dzikiej karty służą do zdefiniowania wzorca wyszukiwania lub dopasowywania tekstu na stringach w powładzie bash. Innym powszechnym zastosowaniem znaków wieloznacznych jest tworzenie wyrażeń regularnych. W tym samouczku pokazano, jak używać różnych rodzajów znaków wieloznacznych do wyszukiwania plików.

Postacie wieloznaczne

Trzy główne postacie wieloznaczne są,

  • Gwiazda lub gwiazdka (*)
  • Znak zapytania (?)
  • Nawiasy kwadratowe ([])

Gwiazdka (*) służy do wyszukiwania określonego znaku (-ów) przez zero lub więcej razy. Znak zapytania (?) służy do wyszukiwania ustalonej liczby znaków, w których każdy znak zapytania (?) Wskazuje każdy znak. Kwadratowe nawiasy służą do dopasowania do postaci zdefiniowanego zasięgu lub grupy znaków. Zastosowania tych znaków pokazano w następnej części tego samouczka.

Użycie gwiazdki (*)

Asterisk (*) może być używany na różne sposoby z poleceniami powłoki do wyszukiwania plików. Różne użycie gwiazdki (*) pokazano w poniższych przykładach.

Przykład - 1: wyszukiwanie określonego pliku z nazwą pliku i „*”

„ls” Polecenie służy do znalezienia listy plików i folderów bieżącego katalogu. „ls a*” Polecenie wyszukuje i wydrukuje wszystkie nazwy plików bieżącego katalogu, który zaczyna się od postaci, 'A'.

$ ls
$ ls a*

Wyjście:

Zgodnie z następującym wyjściem w bieżącym katalogu istnieje 12 plików, który zaczyna się od postaci „A”.

Przykład - 2: Wyszukiwanie pliku z konkretnym rozszerzeniem i „*”

Możesz wyszukać dowolny plik za pomocą Asterisk (*) i rozszerzenia pliku. Jeśli chcesz wyszukać wszystkie pliki za pomocą ''.tekst' rozszerzenie z bieżącego katalogu, a następnie uruchom następujące polecenie z terminalu. Tutaj nazwa pliku może być dowolną postacią i dowolną liczbą znaków.

$ ls *.tekst

Możesz także wyszukiwać pliki różnych rozszerzeń za pomocą gwiazdka (*). Poniższe polecenie wyszukiwa dowolne pliki z rozszerzeniem '.cii' Lub '.tekst'

$ ls *.cii *.tekst

Wyjście:

Wyjście pokazuje listę wszystkich istniejących plików bieżącego katalogu z rozszerzeniem ''.sh 'i'.tekst.

Przykład - 3: Usuwanie pliku według częściowego dopasowania i „*”

Możesz użyć asterisk (*) do częściowego dopasowania dowolnej nazwy pliku. Następujące polecenie usunie plik zawierający 'test' Słowo w dowolnej części nazwy pliku.

$ ls
$ rm *test *
$ ls

Wyjście:

Poniższe wyjście pokazuje, że w bieżącym katalogu istnieją dwa pliki zawierające słowo „test”, a pliki te zostały usunięte po wykonaniu polecenia „RM”.

Użycie znaku zapytania (?)

Kiedy znasz dokładną liczbę znaków, które chcesz wyszukać, to znak zapytania (?) Można użyć wielkiej karty. Poniższe przykłady pokazują różne zastosowanie znaku zapytania (?) dzika karta.

Przykład - 1: wyszukiwanie pliku z nazwą pliku i '?'

Załóżmy, że rozszerzenie pliku, całkowita liczba znaków pliku i niektóre znaki pliku są znane, możesz użyć tej dzikiej karty do przeszukiwania pliku. Pierwsze polecenie przeszuka te pliki, które mają rozszerzenie '.tekst'. Drugie polecenie wyszukiwa te pliki o długości czterech znaków, ostatni znak to „t”, a rozszerzenie pliku jest '.tekst'.

$ ls *.tekst
$ ls ???T.tekst

Wyjście:

Wyjście pokazuje, że 7 plików istnieje w bieżącym katalogu z '.TXT „Rozszerzenie i jeden plik tekstowy istnieje o długości 4 znaków, a ostatnią postacią jest„ T ”.

Przykład -2: wyszukiwanie pliku z rozszerzeniem i '?'

Załóżmy, że znasz nazwę pliku i całkowitą liczbę znaków rozszerzenia pliku, możesz użyć znaku zapytania (?) Wildcard do przeszukania pliku. Poniższe polecenie przeszuka plik za pomocą nazwy pliku 'Witam' A rozszerzenie ma trzy znaki.

$ ls
$ ls Hello.???

Wyjście:

Zgodnie z wyjściem, w bieżącym katalogu istnieją dwa pliki o nazwie „Hello”, a rozszerzenie ma trzy znaki.

Użycie kwadratowych nawiasów ([])

Różne zakresy znaków lub grupa znaków mogą być używane w nawiasach kwadratowych ([]) do wyszukiwania plików na podstawie zakresu.

Przykład -1: Wyszukaj pliki dowolnego rozszerzenia z dwoma wartościami zakresów

Poniższe polecenie przeszuka dowolny plik, którego nazwa zawiera dowolny znak w środku 'a-p„I każda cyfra”0-5„A rozszerzenie pliku może być dowolnym znakiem.

$ ls
$ ls [a-p0-5]*.*

Wyjście:

Poniższe dane wyjściowe pokazuje listę wszystkich plików, które pasują do wzoru użytego w poleceniu.

Przykład-2: Plik wyszukiwania rozpoczyna się od konkretnego znaku, a następnie inna postać

W tym przykładzie drugie polecenie przeszuka nazwy plików, zaczynając od dowolnego z tych znaków [afgh], a następnie postać „o” z dowolnym rozszerzeniem.

$ ls
$ ls [afgh]*o*

Wyjście:

Poniższe dane wyjściowe pokazuje listę wszystkich plików, które pasują do wzoru użytego w poleceniu.

Przykład-3: Wyszukaj nazwy plików o wartości prefiks

Poniższe polecenie będzie pasować do tych plików, których nazwa zaczyna się od „fn” i następuje liczba od 0 do 5.

$ ls fn [0-5]

Poniższe polecenie będzie pasować do tych plików zawierających nazwę „Hello”, a rozszerzenie zawiera dowolny znak od T do Z.

$ ls Hello.[T-Z]*

Wyjście:

Poniższe dane wyjściowe pokazuje listę wszystkich plików pasujących do wzoru używanego w poleceń.

Klasa znaków może być używana w trzecim nawiasach w celu dopasowania nazwy pliku lub konkretnego ciągu w skrypcie. Różne klasy, które można użyć we wzorze, opisano poniżej.

Nazwa klasy Zamiar
[:alfa:] Służy do dopasowania do dowolnej wielkiej i małej litery i równoważny [A-ZA-Z].
[:cyfra:] Służy do dopasowania do dowolnych cyfr i jest równoważny [0-9].
[: Alnum:] Służy do dopasowania dowolnego alfabetu i cyfry. Jest to równoważne [A-za-Z].
[:górny:] Służy do dopasowania tylko do wielkich ostatnich i równoważnych [A-Z]
[:niżej:] Służy do dopasowania tylko do wielkich ostatnich i równoważnych [A-Z]
[:pusty:] Służy do dopasowania do przestrzeni i zakładki.
[:wydrukować:] Służy do dopasowania do znaków do wydrukowania.
[: cntrl:] Służy do dopasowania do postaci bez nadrukowania.
[:przestrzeń:] Służy do dopasowania do przestrzeni pobytu.
[: xDigit:] Służy do dopasowania do cyfr szesnastkowych.
[: ASCII:] Służy do dopasowania do znaków ASCII.
[:słowo:] Służy do znaków alfanumerycznych, w tym podkreślenia (_).

Zastosowania czterech najczęściej używanych klas wyjaśniono w następujących czterech przykładach.

Przykład-1: użycie [: alfa:] w skrypcie Bash

Poniższy skrypt sprawdzi, czy dane wejściowe pobrane od użytkownika zawiera tylko znaki alfabetyczne.

#!/bin/bash
echo -n "Jakie jest twoje imię? "
# Przypisz wartość wejściową do zmiennej
Przeczytaj nazwę
# Sprawdź wartość wejścia zawiera tylko alfabet
if [["$ name" = ~ ^[: alpha:]]]]; Następnie
echo "Twoje imię to $ Nazwa."
w przeciwnym razie
echo "Wprowadź tylko postać alfabetyczną."
fi

Wyjście:
Poniższe dane wyjściowe pokazuje komunikat dla nieprawidłowych i prawidłowych danych wejściowych.

Przykład-2: użycie [: cyfr:] w skrypcie Bash

Poniższy skrypt sprawdzi, czy wejście pobrane od użytkownika zawiera tylko znaki numeryczne.

#!/bin/bash
echo -n „Wprowadź swój identyfikator:”
# Przypisz wartość wejściową do zmiennej
Przeczytaj id
# Ustaw wartość identyfikatora
Id = "id-$ id"
# Ustaw wzorzec za pomocą klasy [: digit:]]
regex = "id-[[: digit:]]+"
# Sprawdź wartość wejścia zawiera tylko liczbę
jeśli [[$ id = ~ $ Regex]]; Następnie
echo "$ id jest ważny."
w przeciwnym razie
echo "$ id jest nieprawidłowy."
fi

Wyjście:

Poniższe dane wyjściowe pokazuje komunikat dla nieprawidłowych i prawidłowych danych wejściowych.

Przykład-3: użycie [: alnum:] w skrypcie Bash

Poniższy skrypt sprawdzi, czy wejście pobrane od użytkownika zawiera tylko znaki alfanumeryczne.

#!/bin/bash
echo -n „Wprowadź swój adres:”
# Przypisz wartość wejściową do zmiennej
Przeczytaj addr
# Sprawdź wartość wejścia zawiera tylko alfabet i liczbę
jeśli [[$ addr = ~ ^[[: alnum:]]]]; Następnie
Adres echo „jest prawidłowy."
w przeciwnym razie
Adres echo „jest nieprawidłowy."
fi

Wyjście:

Poniższe dane wyjściowe pokazuje komunikat dla nieprawidłowych i prawidłowych danych wejściowych.

Przykład-4: użycie [: Upper:] w skrypcie Bash

Poniższy skrypt sprawdzi, czy dane wejściowe pobrane od użytkownika zawiera tylko litery kapitałowe.

#!/bin/bash
echo -n „Wprowadź swój kod w wielkiej liście:”
# Przypisz wartość wejściową do zmiennej
Przeczytaj kod
# Sprawdź wartość wejściową zawiera wszystkie wielkie ostatnie
jeśli [[$ code = ~ ^[[: Upper:]]]]; Następnie
Echo „Kod jest poprawny."
w przeciwnym razie
Echo „Kod może zawierać tylko wielkie stanowiska."
fi

Wyjście:

Poniższe dane wyjściowe pokazuje komunikat dla nieprawidłowych i prawidłowych danych wejściowych.

Wniosek

Podstawowe zastosowania znaków wieloznacznych do wyszukiwania plików w terminalu i sprawdzaniu danych w sprawie skryptu Bash zostały pokazane w tym samouczku. Mam nadzieję, że pokazane tutaj przykłady pomogą użytkownikom Linux w prawidłowym pisaniu wzorców wyrażeń regularnych, aby dopasować dowolną treść do różnych celów.