На самом деле, вы ничего не можете сделать, кроме как использовать [11955]sudo[11956], так что от вас требуется ввести пароль для выполнения команд с повышенными привилегиями, таких как root. [12163] Другой совет, который вы часто будете использовать, это обёртывание деструктивных команд, таких как [11957]rm[11958], так что вам будет предложено "вы уверены? " или с помощью [11959]rm[11960] вы можете использовать переключатель [11961]-i[11962], который приведет к тому, что [11963]rm[11964] будет интерактивным по своей природе, запрашивая подтверждение перед удалением каждого файла.[12164]Предупреждаю, это обычно очень раздражает, и вы, скорее всего, вернетесь к работе с отключенной функцией..
Это не имеет ничего общего с командой echo
. Вы бы увидели такое же поведение, если бы написали вывод, используя cat
, printf
, или какую-нибудь другую программу. Это аспект вашего терминала .
И терминалы могут отличаться друг от друга в этом отношении. База данных терминалов будет или не будет иметь для вашего терминала возможность auto_left_margin
, известную как bw
в termcap. Это говорит программам о том, можно ли использовать обратное пространство для обертывания вокруг левого поля, как это может быть на некоторых терминалах. Если бы вы использовали терминал с автоматическими левыми полями, то c
появилась бы в предыдущей строке.
И если бы вы перепрограммировали свои табстопы, вы бы увидели еще большее различие в поведении.
Интересные вещи могут происходить, кстати, при сочетании TAB
и BS
. Предупреждение 25-летней давности в руководстве по использованию терминологии об обратных интервалах над полями, когда не сообщается о возможности автоматического использования левого поля, или когда курсор находится в первом ряду, перепечатанный везде, начиная с System V Interface Definition и заканчивая руководством FreeBSD, может показаться причудливым и излишне осторожным с первого взгляда; но в мире есть известная обработка кода управления терминалом, которая не совсем корректно его получила.
В версиях до 2,19, GNU grep
-w
только рассмотрел бы характер единственного байта alnums и подчеркнул бы (так в местах действия UTF-8, только 26+26+10+1 (письма о ASCII, цифры и подчеркнул бы)) как элементы слова. Так, например, Echo Stéphane | grep -w St
будет совпадать. Это было исправлено в 2.19.
Однако вы можете реализовать логику вручную:
grep -E '([^[:alnum:]_.]|^)test([^[:alnum:]_.]|$)'
Это тест
, которому предшествует либо не составляющая слова, либо начало строки, а затем либо не составляющая слова, либо конец строки.
(выше [: alnum:]
соответствует цифрам и буквам в вашем языковом стандарте, а не только ASCII, зафиксируйте языковой стандарт на языке C, если требуется только ASCII).
Если вы не хотите, чтобы окружающие ненасловные составляющие были включены в соответствие (например, потому, что вы используете GNU -o
), вы можете на этот раз использовать регекспы PCRE и операторы обзора:
grep -Po '(*UCP)(?<![\w.])test(?![\w.])'
Удалить (* UCP)
и добавить LC _ ALL = C
Использование (* UCP)
в начале regexp сообщает библиотеке PCRE, что U̲niC̲ode P̲roperties необходимо использовать для \w
.
Без него \w
будет соответствовать буквенно-цифровым символам языка и подчеркивать, но только для однобайтовых символов. Это не сработает в UTF-8 регионах (норма в настоящее время), где будут сопоставлены только ASCII. (* UCP)
также работает для UTF-8. Он будет совпадать на основе собственного представления PCRE о свойствах символов, которые могут отличаться от ваших языковых стандартов, но в системах GNU, это так же, как и UTF-8 определения языковых стандартов, есть неполные и устаревшие (по крайней мере, на 2015-04 гг.).
эхо не может вернуться за положение, в котором оно было запущено. Независимо от того, сколько задних пространств вы используете, после того, как вы стерли все, что вы вывели, оно остается в начальной позиции. Вот почему вы всегда видите символ 'c', однако много раз вы backspace.