Последовательности управления XTerm для удаления слов вперед/назад?

Чтобы изменить все файлы в /usr/share/mimeи ниже (без каталогов )с разрешением 640 на 644, вы можете запустить

find /usr/share/mime -type f -perm 640 -exec chmod 644 {} \;
  • find /usr/share/mimeнайти файлы в/usr/share/mime
  • -type fограничиться обычными файлами (не -каталогами)
  • -perm 640и ограничить поиск файлами с разрешением 640
  • -exec chmod 644 {} \;выполняет chmod 644для найденных файлов
0
27.11.2019, 03:49
2 ответа

Ничего подобного нет, вы можете видеть, что вctlseqдокументе нет ни единого упоминания слова слова. Также возникает вопрос, какой цвет фона использовать для стирания и сдвигать ли то, что справа от слова, влево или нет. Возможно, вам придется рассмотреть слова, которые переносятся на правый край терминала.

Некоторые из ваших вариантов::

  • отправьте столько символов BS, сколько ячеек в слове, которое вы хотите стереть, а затем столько SPC (будьте осторожны, он использует текущий цвет фона ), а затем снова столько символов BS (для перемещения курсор снова):

    $ printf 'foo bar\b\b\b   \b\b\b+\n'
    foo +
    

    что нужно работать практически на всех терминалах.

  • то же самое, но используйте tput cub x(, где x— количество ячеек ), чтобы переместить курсор назад на это количество вместо использования последовательности BS. И вы можете использовать tput ech x, чтобы стереть эти ячейки (с текущим цветом фона или без, в зависимости от терминала)

    $ printf 'foo bar'; tput cub 3; tput ech 3; printf '+\n'
    foo +
    
  • вместо tput ech xвы можете использовать tput elдля стирания до конца строки или tput dch xдля удалить x ячеек (и сдвинуть то, что после этого, влево ).

(tputвот интерфейс оболочки для базы данных terminfo, идея которого состоит в том, чтобы избежать жесткого кодирования escape-последовательностей, используйте эквивалент для вашего языка ).

Глядя на backward-kill-wordвиджеты некоторых оболочек (, использующие script, например, для регистрации их вывода ), я вижу, что readlineиспользует BS для движения и dchдля удаления, в то время как zshиспользует комбинацию BS и cubи перезаписывает. tcsh, кажется, выполняет некоторое абсолютное позиционирование столбца(hba)и использует dchдля удаления, ksh93 отправляет CR и перезаписывает всю строку.

2
28.01.2020, 02:17

Я никогда не видел такой последовательности. Если подумать, удаление слова довольно сложное, более сложное, чем другие операции, и я не думаю, что любая другая операция как-то заботится о том, что на экране. Например, что завершает слово? '_'? '-'? '.'?

2
28.01.2020, 02:17

Теги

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