Использование \ c в сценариях оболочки - PullRequest
12 голосов
/ 02 августа 2009

Я редактирую чужие скрипты и вижу, что он / она использовал это \c очень часто как

echo "bla bla \c"

, который при использовании просто печатает

bla bla \c

на экране.

Итак, мне было интересно, зачем его использовать, или, может быть, я что-то упустил, потому что он вообще ничего не делает? Я проверил escape-символы и не нашел ничего подобного. Есть ли специальное использование \ c в сценариях оболочки, главным образом в оболочках bash и korn?

Ответы [ 6 ]

24 голосов
/ 02 августа 2009

\ c держит курсор на той же строке после окончания эха, но для его включения вам нужен флаг -e:

echo -e "bla bla \c"
9 голосов
/ 02 августа 2009

Я думаю, что попытка завершить эхо без новой строки.

Если это не работает в вашей системе, вы можете заменить этот способ,

echo "test \c"; echo " same line"

может стать,

echo -n "test"; echo " same line"

Более легкое изменение будет (как предложено Neil, +1 там),

echo -e "test \c"; echo " same line"
2 голосов
/ 25 апреля 2015

POSIX утверждает, что:

\ c Подавить , который в противном случае следует за последним аргументом в выводе. Все символы, следующие за '\ c' в аргументы игнорируются.

Обычно POSIX XSI-совместимая утилита echo должна завершиться, когда обнаружит \ c , как видно из следующих команд:

echo -e "foo bar \c baz" "quux"
1 голос
/ 02 августа 2009

Нет автоматического разрыва строки, очевидно :

Использование в оболочках UNIX

Оболочки UNIX Korn используют символ выхода \ c для обозначения продолжения (без автоматического разрыва строки):

echo "Введите путь к файлу данных: \ c"

0 голосов
/ 23 февраля 2016

NAME echo - отобразить строку текста

СИНТАКСИС echo [SHORT-OPTION] ... [STRING] ... Эхо ДЛИТЕЛЬНЫЙ ВАРИАНТ

ОПИСАНИЕ Выведите строку (и) на стандартный вывод.

   -n     do not output the trailing newline

   -e     enable interpretation of backslash escapes

   -E     disable interpretation of backslash escapes (default)

   --help display this help and exit

   --version
0 голосов
/ 26 января 2015

На самом деле поведение 'echo' зависит от используемой оболочки.
С простой оболочкой Bourne '\ c' будет интерпретироваться по умолчанию (поэтому курсор остается на линии).
В Bash он не интерпретируется по умолчанию (поэтому отображается строка '\ c'), поэтому для его включения необходимо добавить параметр '-e'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...