Вставить новую строку в жемчуг-e оператор?

Рассмотрите следующую остроту Perl:

perl -e '$x; $y;'

Я выполняю эту команду в ударе, и я хотел бы вставить новую строку (\n) между; и $y. Я хотел бы знать, как сделать это двумя подобными, но немного отличающимися способами:

  1. Как я могу вставить новую строку в то положение путем нажатия некоторой последовательности метаклавиши для вставки новой строки?

  2. Как я могу вставить новую строку в то положение путем ввода некоторой последовательности неметасимвола? (например, '$x;\n$y;')

В обеих ситуациях я хочу, чтобы интерпретатор Perl видел фактическую новую строку, как это:

$x;
$y;
1
задан 25.03.2010, 14:14

4 ответа

Удалите пространство, затем введите CtrlV, CtrlJ.
Затем возвратитесь.

Ctrl-V предотвращает оболочку, интерпретирующую следующий символ (новая строка) буквально.

2
ответ дан 12.12.2019, 07:54

Вопрос Вы спросили только проблемы, как оболочка интерпретирует свой вход и передает его другим программам. Это не имеет никакого отношения к Perl по сути.

Этот ответ адреса, вводящие новый вход к оболочке. Используйте другие ответ ^V^J вставить новую строку в существующую командную строку при использовании редактирования командной строки.

Необходимо просто смочь поместить это в сценарий:

foo '$x;
$y;'

Аргумент, данный команде, будет иметь новую строку в том же месте, как это делает в самом сценарии. Вы, возможно, должны заботиться для сохранения такого сценария таким способом, который использует стиль Unix (LF-only) разрывы строки, иначе Вы могли бы получить CR+LF (разрывы строки DOS/Windows) или просто CR (старый стиль Mac lineb сильные запахи).

Можно также сделать это при интерактивной подсказке, но Вы будете видеть подсказку продолжения перед вторым и любыми последующими строками:

$ foo '$x;
> $y;'

В ударе можно также использовать $'' заключение в кавычки синтаксиса для кодирования символа новой строки как это:

foo $'$x;\n$y;'

Аргумент, переданный программе, будут рассматривать способом, подобным струне до ANSI. Если Вы хотите фактическую обратную косую черту в строке, необходимо будет выйти из нее как \\, вместо этого.

Так, если Вы действительно хотите литеральную строку, заключающую это в кавычки, одинарные кавычки дают Вам, необходимо, вероятно, придерживаться встроенной новой строки так, чтобы Вы не волновались о дополнительном выходе.

3
ответ дан 12.12.2019, 07:54

Переместитесь Ваш курсор в положение затем нажимают Ctrl-V Ctrl-J

2
ответ дан 12.12.2019, 07:54

Если Вы хотите иметь pico, vi или редактирование emacs, можно использовать встроенное fc команда, которая обозначает fix command.

Можно использовать fc и Bash откроет Вашу последнюю команду в определенном редакторе, таком как vi, emacs, и т.д. Я использую pico для этого. Можно затем использовать мультилинию, редактирующую очень легко.

Можно использовать переводы строки и формат для редактирования команды. После того как Вы выходите из редактора, команда сохраняется к буферу Bash и сразу выполняется.

В Bash попробуйте это:

$ FCEDIT=pico
$ perl -e ''
$ fc

Команда FCEDIT=pico просто устанавливает редактора на pico. Установите любого редактора, которого Вы хотите. Можно экспортировать это и сделать постоянным, если Вы желаете.

Команда perl -e '' пустая обертка вокруг Вашего нового один сценарий жемчуга строки. Когда Вы вводите fc последняя команда открыта в определенном редакторе.

Теперь в Pico, подойдите '' и вставьте свой сценарий Perl. Помните, что сценарий не является тем же, как будто Вы сохраняли его в текстовый файл, и подвергается той же потребности знать, как оболочка собирается интерпретировать вход между одинарными кавычками. Главным образом необходимо будет выйти из одинарной кавычки с \

В pico введите любой код Perl, который Вы хотите, (подвергающийся интерпретации Bash его...)

Я сделал это:

perl -e  '
print "hello\n";
print "here is a second line\n";
$i=1;
$y=2;
print "\$i=$i, \$y=$y\n\n";
'

Теперь сохраните файл к имени по умолчанию. (В pico, Ctl+O выписывают), и выйдите из pico (Ctl+x). Bash теперь отзовется эхом, затем выполняют Вашу команду.

fc документируется в раздел 9.2 из руководства гну ЗДЕСЬ

1
ответ дан 12.12.2019, 07:54

Теги

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