Znaki uogólniające są podgrupą znaków specjalnych, które dla powłoki shella mają inne znaczenie niż znak literowy. Wyróżniamy następujące znaki specjalne:

*     ?     [ ]     < >     &     |     /     |     ‘     `      ”     $     !     %     (     )     {   }     @     \

 

Manipulowanie znakami specjalnymi, których znaczenie będziemy stopniowo poznawać, jest umiejętnością trudną i wymagającą dużo ćwiczeń i praktyki, dlatego też poświecimy im – jak już wspomniałem we wstępie - dużo miejsca i czasu, bowiem ich dobra znajomość jest niezbędna do sprawnego posługiwania się systemem Unix, Linux, a także językami używanymi do programowania w Internecie (HTLM, Perl, PHP itd.).

Zanim przejdziemy do omówienia mechanizmu protekcji znaków uogólniających i specjalnych, omówimy dokładniej funkcjonowaniu znaku  * , którego znaczenie w mechanizmie uogólniania nazw plików oznacza wyszukanie dowolnej (również zerowej) długości łańcucha znaków. Znak gwiazdki występuje także w tzw. wyrażeniach regularnych (patrz rozdział 8) i jego znaczenie jest w nich inne niż używanie gwiazdki w mechanizmie wyszukiwania plików. W wyrażeniach regularnych gwiazdka dopasowuje zero lub więcej wystąpień znaków poprzedzających *.

Zwracamy uwagę, że gwiazdka w wyrażeniach regularnych ma inne znaczenie niż gwiazdka w generowaniu nazwy plików, w tym przypadku * oznacza dowolnie długi – także pusty – ciąg różnych znaków. W wyrażeniach regularnych dowolny ciąg dowolnych znaków zapisujemy jako  .*.  Ta różnica występująca pomiędzy funkcjonowaniem  *  w dwóch podstawowych mechanizmach systemu Linux/Unix jest źródłem częstych kłopotów dla debiutantów, dlatego już w tej chwili ją sygnalizujemy.

Znaki specjalne mogą wyrażać swoje znaczenie literalne pod warunkiem, że są neutralizowane. Wyróżniamy następujące znaki neutralizujące:

\ → znak ten neutralizuje każdy znak znajdujący się natychmiast po nim  np.  \* oznacza, że  wyszukujemy nie obojętnie jaki ciąg znaków, lecz szukamy „*”

”…” → neutralizuje wszystkie znaki specjalne oprócz:   $ \

’…‘ → neutralizuje wszystkie znaki specjalne oprócz niego samego  ’   ‘

 

Przykłady:

$ echo \*\*\* dzien dobry \*\*\*

***  dzien dobry ***     → rezultat polecenia – czy możesz odpowiedzieć dlaczego ?


$ echo \\

\     → rezultat polecenia – czy możesz odpowiedzieć dlaczego ?


$ echo ’<<< dzien dobry>>>’

<<<dzien dobry>>>


$ echo  ’ podwoje ‘’   ’

podwoje ‘’

 

 

Kurs Linux - Bash protekcja znaków uogólniających i specjalnych w Linuxie