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
Powłoka Uniksa
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
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
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
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ż
Przypisy