Рассмотрите следующую остроту Perl:
perl -e '$x; $y;'
Я выполняю эту команду в ударе, и я хотел бы вставить новую строку (\n
) между; и $y
. Я хотел бы знать, как сделать это двумя подобными, но немного отличающимися способами:
Как я могу вставить новую строку в то положение путем нажатия некоторой последовательности метаклавиши для вставки новой строки?
Как я могу вставить новую строку в то положение путем ввода некоторой последовательности неметасимвола? (например, '$x;\n$y;'
)
В обеих ситуациях я хочу, чтобы интерпретатор Perl видел фактическую новую строку, как это:
$x;
$y;
Вопрос Вы спросили только проблемы, как оболочка интерпретирует свой вход и передает его другим программам. Это не имеет никакого отношения к Perl по сути.
Этот ответ адреса, вводящие новый вход к оболочке. Используйте другие ответ ^V^J
вставить новую строку в существующую командную строку при использовании редактирования командной строки.
Необходимо просто смочь поместить это в сценарий:
foo '$x;
$y;'
Аргумент, данный команде, будет иметь новую строку в том же месте, как это делает в самом сценарии. Вы, возможно, должны заботиться для сохранения такого сценария таким способом, который использует стиль Unix (LF-only) разрывы строки, иначе Вы могли бы получить CR+LF (разрывы строки DOS/Windows) или просто CR (старый стиль Mac lineb сильные запахи).
Можно также сделать это при интерактивной подсказке, но Вы будете видеть подсказку продолжения перед вторым и любыми последующими строками:
$ foo '$x;
> $y;'
В ударе можно также использовать $''
заключение в кавычки синтаксиса для кодирования символа новой строки как это:
foo $'$x;\n$y;'
Аргумент, переданный программе, будут рассматривать способом, подобным струне до ANSI. Если Вы хотите фактическую обратную косую черту в строке, необходимо будет выйти из нее как \\
, вместо этого.
Так, если Вы действительно хотите литеральную строку, заключающую это в кавычки, одинарные кавычки дают Вам, необходимо, вероятно, придерживаться встроенной новой строки так, чтобы Вы не волновались о дополнительном выходе.
Переместитесь Ваш курсор в положение затем нажимают Ctrl-V Ctrl-J
Если Вы хотите иметь 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 из руководства гну ЗДЕСЬ