Znak modyfikacji

znak powodujący inną niż domyślna interpretację kolejnego znaku lub sekwencji znaków

Znak modyfikacji lub ucieczki (ang. escape character) lub uwalniania – pojedynczy znak powodujący inną niż domyślna interpretację znaku lub sekwencji znaków po nim następujących. Termin sekwencja zmodyfikowana dotyczy łącznie znaku modyfikacji wraz ze znakiem lub sekwencją znaków po nim następującą. Zwykle takim znakiem jest odwrotny ukośnik \.

Znak modyfikacji może oznaczyć kolejny znak lub znaki jako kod sterujący[1], znak specjalny[2], dosłowną interpretację znaku wewnątrz łańcucha[2], specjalną interpretację znaku np.: ósemkową, szesnastkową[2] lub, w przypadku znaku nowej linii jego usunięcie - \nowa-linia jest traktowany jako kontynuacja tej samej linii[3].

Przykłady edytuj

Powłoka Uniksa edytuj

W powłoce Bourne’a symbol * jest wieloznacznikiem rozwijanym do listy nazw wszystkich zbiorów w bieżącym katalogu. Jednocześnie może istnieć zbiór o nazwie * i wskazanie go w tej powłoce jest możliwe właśnie przez użycie znaku modyfikacji przed tą nazwą. Tak więc:

rm *
# powoduje usunięcie wszystkich zbiorów w bieżącym katalogu
rm \*
# pozwala na usunięcie jednego zbioru z nazwą *

Języki programowania edytuj

Współczesne języki programowania mają w swojej specyfikacji jawnie zdefiniowany separator ciągu znaków, i zazwyczaj jest to podwójny cudzysłów ". Oznacza to, że wprost ten znak nie może być elementem wspomnianego ciągu, ale jest możliwe z zastosowaniem znaku modyfikacji. Obsługiwane są dwa sposoby użycia modyfikacji: ze znakiem modyfikowanym podanym wprost lub poprzez jego reprezentację heksadecymalną. Tak więc odpowiednio:

  • \" daje "
  • \x22 daje również "

Perl edytuj

W języku Perl kod

print "Ala krzyknęła "witaj świecie!" do tłumu.";

zawiera błędy składniowe i nie może być wykonany, natomiast kod:

print "Ala krzyknęła \"witaj świecie!\" do tłumu."; ### przykład użycia sekwencji zmodyfikowanej \"

lub

print "Ala krzyknęła \x22witaj świecie!\x22 do tłumu."; ### przykład użycia sekwencji zmodyfikowanej \x22

spowoduje wysłanie na wyjście zamierzonego tekstu.

Inne języki edytuj

Języki C, C++, Java stosują taką samą konwencję dwukrotnych znaków modyfikacji w postaci odwrotnego ukośnika. Pewne języki, np. PHP lub Turbo Pascal, zezwalają na stosowanie dwóch różnych separatorów (w tym przypadku podwójnego cudzysłowu " oraz pojedynczego '), co pozwala uniknąć kolizji separatorów oraz konieczności stosowania znaków modyfikacji.

Zobacz też edytuj

Przypisy edytuj

  1. Escape Sequences - specifying special characters.
  2. a b c 6.43 The Character ESC in Constants. W: Using the GNU Compiler Collection (GCC).
  3. 3.1.2.1 Escape Character. W: Bash Reference Manual.