[терминал]Отрадактировать вставленную команду перед выполнением

dangerr

проблема такова:
допустим на каком-нибудь сайте есть строка
rm -fr /*
у меня отктыт этот сайт и мне захотелось очистить /tmp. Но мне к примеру лень набирать, а рука зачем-то уже дотянулась до крысы.... Я выделяю эту строчку, переношу крысу на эмулятор терминала и нажимаю на колесо в надежде, что команда просто вставится, а я потом отредактирую на rm -fr /tmp/* и запущу.
Но в ряде случаев произойдёт именно так, тогда как в ряде случаев команда запустится, не дав мне сделать эту правку. Так вот, может есть всё-таки возможность заставить терминал игнорировать символы '\n' при вставке из буфера? Конечно описаная выше ситуация слишком гипотетична, чтобы её опасаться, но когда я читаю какое-нить howto и вставляю оттуда команды, такое поведение как минимум напрягает.
Использую терминал vte (на его основе сделаны терминалы из гнома и xfce).

procenkotanya

Для urxvt можно писать плагины на перле.
Если не влом тянуться до клавы, можно перед вставкой набрать #

dangerr

urxvt к сожалению неправильно работает с хоткеями.
а насчёт # - идея элементарная, но я бы сам не додумался, спасибо! :)

kruzer25

Если не влом тянуться до клавы, можно перед вставкой набрать #
Не спасёт от \n в начале скопированного текста.

Serab

имхо вставка # с последующим удалением должна напрягать не меньше.

Serab

А в начале я ни разу не видел чтобы так было, это надо самому себя не любить :grin:

Serab

Да, и еще "не спасет от \n rm -rf --no-preserve-root / \n" в середине скопированного текста :mad:

Serab

О, а что не так с хоткеями в urxvt?

procenkotanya

urxvt к сожалению неправильно работает с хоткеями.
Ни разу не замечал. Можно пример, плиз?

yroslavasako

используй gtk emacs для работы с башем

ramsit

топикстартеру предложение вместо # перед вставкой забить " (кавычку)
у себя проверил: \n rm -rf / не отрабатывает :)

kruzer25

Попробуй выполнить такую команду:
И все засмеялись."
rm -rf /*

ramsit


И все засмеялись."
rm -rf /*
и все засмеялись,
ибо ничего не произошло. пока не вобью закрывающую скобку, очевидно ничего не будет.
проверил в zsh и posix shell. в bash предполагаю то же самое

Serab

Т.е. ты представляешь себе чувака, который чтобы предохраниться ставит в начале строки кавычку, а потом вставляет подобную команду? Точно, как у Лебедева, люди-компьютеры...

dangerr

У него они работают по текущей раскладке, а должны работать по первой.

procenkotanya

С чего там закрывающая скобка нужна?

ramsit

ну он как бы считает, что я еще не закончил:
И все засмеялись. "
dquote> rm -rf /*

Serab

во-первых, кавычка, а во-вторых, прочитай, на что пенартур отвечал, там надо еще в начале строчки открывающую поставить.

procenkotanya

Ты первую кавычку (вместо #) ввёл? И кавычка таки не скобка!
[upd] бдлж, апиридили

ramsit

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

Serab

оговорка
не оговорка, а описка! :mad::grin:

dangerr

используй gtk emacs для работы с башем

Можно подробнее что под этим подразумевается?

kruzer25

пока не вобью закрывающую скобку,
Какую закрывающую скобку? Ты ничего ни о каких скобках не говорил, только о кавычках.

kruzer25

Смотреть, что копируешь, надо всегда. Никакими символами перед вставляемой строкой ты не добьёшься того, чтобы она не интерпретировалась - если, конечно, это будет не "exit "; тебе всё равно надо будет обрабатывать вставляемую строку.

Serab

У него они работают по текущей раскладке, а должны работать по первой.
вот хз, пришел домой, проверил, работают с первой. Ну либо поясни, я проверил только в bash'е: накалякал символов, перешл в русскую раскладку, нажал C-u.

dangerr

В русской не проверял.
В двораке, когда он стоит не как первая раскладка, хоткеи слетают напрочь (тот же ctrl-u становится ctrl-f)

Serab

Ясно. Так сноси qwerty нафиг, без него прекрасно живется :grin:

dangerr

я и живу в общем-то без него. На него переключение по далёкому скролл-локу.
Но если его совсем убрать, то не только в терминале, а вообще везде хоткеи слетят.

Serab

А, я вспомнил, ты пошел по странному пути и хоткеи юзаешь от qwerty. Тогда да. Тем не менее странно, я думал, что это все реализуется на уровне xkb.

dangerr

Ну имхо странный путь - это как раз привыкать к новым неудобным хоткеям, стремясь увеличить своё удобство (изучая дворака).
А например нажатие вместо ctrl-c ctrl-i для посылания 15 сигнала неудобно. Так как хоткеи чаще всего продумываются исходя из расположения клавиш.
Ну да ладно - каждому своё.
К сожалению, идя по своему "странному" пути, я наталкиваюсь на то, что разные программы совершенно по разному работают в этом плане: кто-то выясняет у системы какая кнопка была нажата, а кто-то - кнопка с каким символом была нажата. Единственный терминал, который заработал адекватно - это vte.
Как выяснилось единого стандарта на эту тему не существует, поэтому я даже не знаю как доходчиво объяснить авторам второго типа программ, что они не правы.
Иначе бы я не поленился бы написать в десяток-другой багзилл. :)
Оставить комментарий
Имя или ник:
Комментарий: