2011-08-22 14 views
11

Jaka jest nazwa i funkcja znaku ucieczki \c w Bash? Jaka jest jego wartość liczbowa? Widziałem, że \cx jest postacią kontrolną, ale co z zwykłym \c? Wydaje się, że:Co to jest bash escape character " c"?

echo -e "Hello World\c" 

i

echo -en "Hello World" 

są równoważne. Jednak Python nie używa go jako znaku ewakuacyjnego, którego nie ma na wszystkich listach znalezionych znaków ucieczki. Czy jest to zachowanie specyficzne dla gry Bash?

+0

Próbowałem tego w C i drukuje "c" na ekranie http://codepad.org/sBWJfPkc –

Odpowiedz

12

To rzeczywiście specyficzne dla niektórych wersjach echo (jestem pewien, że \c pochodziła z SysV natomiast -n wersja była BSD-ism).

Oznacza to po prostu, że nie należy wyprowadzać sprowadzonego znaku nowej linii.

4

Jest to znak kontrolny "Koniec tekstu"; informuje Shell, że koniec tekstu został osiągnięty.

Nie jestem do końca pewien, czy jest to istotne, ale mogę się mylić.

oto doc:

http://en.wikipedia.org/wiki/ASCII#ASCII_control_characters

oraz:

http://en.wikipedia.org/wiki/End-of-text_character

+0

CTRL-C jest znakiem ETX, ale ma to niewiele wspólnego z tym konkretnym przypadkiem, w przeciwnym razie FF byłby \ l zamiast \ f, nowa linia byłaby \ j zamiast \ n i tak dalej. – paxdiablo

+0

Nie rozumiem, co masz na myśli, \ c to ETX, to jest to, co powiedziałem - czym jest FF? –

+0

Witam @Russ C, doceniam odpowiedź. Jednak wygląda na to, że @paxdiablo ma rację. Na przykład spróbuj: 'echo -e" Hello World \ 03 "' (podany link podał wartość liczbową ETX jako 3). Nie daje tego samego wyniku co 'echo -e" Hello World \ c "'. –

0

Czy możesz zaktualizować pytanie z nieco większym kontekstem na temat użycia \ c?

Można użyć \c, aby pominąć znaki kontrolne, które można, na przykład zapisać do pliku, lub potokować jako dane wejściowe dla innego polecenia.

Będzie to pisać do terminala tekst "niektóre polecenia", a następnie binarny Ctrl-D (ASCII 0x4):

echo some control string $'\cd' 

Zobacz pełną listę znaków ewakuacyjnych ze strony atakujących człowieka: http://linux.die.net/man/1/bash

12

Patrz echo man page lub przekrojem echa w Bash Builtins section of the Bash manual:

echa interpretuje następujące sekwencje:

...
\ c
          tłumić Kolejne wyjście

+0

Dzięki za referencje i potwierdzenie odpowiedzi Paxdiablo. –

+0

Warto wspomnieć, że \ c nie jest rozpoznawane, jeśli -e nie działa. –