Как отменить текущий ввод в ed

Если что

PASSWORD=xpto#123

был кодом в любом Bourne -подобном оболочке (bash, dash, ksh, zsh... ), что #не будет восприниматься как комментарий. В этих оболочках #вводит комментарий только в начале токена оболочки (, поэтому в начале строки или после пробелов или ;, |, &&... ).

Это будет восприниматься как символ комментария в оболочке rcили производных¹ (, которые являются другими оболочками, имеющими назначение в форме var=value), но я сомневаюсь, что вы их используете.

Скорее всего, вы пытаетесь использовать это в каком-то файле конфигурации, где также часто #вводят комментарии.

Не существует настоящего стандарта для конфигурационных файлов, поэтому экранирование этого символа, если он рассматривается как комментарий, зависит от фактического конфигурационного файла.

Лучше всего прочитать руководство для этого файла конфигурации или программного обеспечения, для которого он предназначен.

Распространенными способами экранирования символов являются двойные кавычки ("..."), одинарные кавычки('...')или обратная косая черта перед символом. Также возможно ввести символ, используя восьмеричные последовательности²(\043)или шестнадцатеричные²(\x23)или Unicode (\u0023)...Также могут быть некоторые различия в том, как обрабатываются кавычки (независимо от того, является ли обратная косая черта или другие символы специальными в кавычках... ).


¹ В оболочке rcединственным оператором кавычек является '...'(, а сама одинарная кавычка представлена ​​''внутри этих одинарных кавычек ). В оболочке es(, полученной из клона Байрона Ракитциса rcдля Unix ), вы также можете использовать \#, \043или \x23.

² Обратите внимание, что они представляют значение байта , поэтому \x43будет кодировать только #в наборе символов ASCII или совместимом, что должно быть подавляющим большинством кодировок, используемых в настоящее время, единственными исключениями будут некоторые редкие системы IBM, которые все еще используют EBCDIC. Но об этом следует помнить при использовании символов, отличных от -ASCII. \u0023, с другой стороны, гарантирует, что (Unicode )будет символом #.

1
13.11.2021, 05:53
1 ответ

Вы не можете «отменить» ввод, например, «начав добавлять несколько строк текста, но не добавляя их на самом деле».

При добавлении текста, например, с помощью. команда a, одиночная строка текста может быть отменена двойным нажатием Ctrl+D перед нажатием Enter . Это также завершает текущую команду редактирования. Вы не можете отменить добавление более чем текущей строки таким образом. В зависимости от вашей системы и варианта ed, двойное нажатие Ctrl+D в режиме вставки может дать или не дать вам новую строку для ввода следующей команды на (в OpenBSD, не в Ubuntu Линукс ).

Приведенный выше «трюк» (недокументированная функция )не работает, если вы используете edвместе с rlwrapдля получения истории команд и возможностей редактирования Readline.

Вы можете отменить всю операцию, как только закончите ее, как показано на рисунке. Вы заканчиваете вставку текста с помощью .в отдельной строке, а затем вводите командуu(отмены ). Вы также можете закончить вставку текста с помощью Ctrl+D на новой строке, а затем использовать команду u.

Редактор edимеет один уровень отмены, что означает, что вы можете отменить только самую последнюю команду. Двойная отмена отменяет отмену. Если вы применяете к тексту несколько команд с помощью одной команды g, v, Gили V, это считается одной командой, которую вы можете отменить, если вам это нужно.

0
13.11.2021, 06:09

Теги

Похожие вопросы