Как изменить эффект Ctrl + L в bash? [dубликат]

chown -R <username>:<groupname> <folder>

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

35
задан 14 March 2014 в 21:16

8 ответов

ctrl + L просто очистит экран терминала.

Это комбинация клавиш, эквивалентная команде clear.

Это свойство bash, поэтому вы сделали не нашел его под сочетаниями клавиш в вашем гном-терминале. Из man bash:

clear-screen (C-l) Clear the screen leaving the current line at the top of the screen. With an argument, refresh the current line without clearing the screen.

См. Подробный список ярлыков клавиш Bash.

50
ответ дан 17 July 2018 в 15:32

ctrl + L просто очистит экран терминала.

Это комбинация клавиш, эквивалентная команде clear.

Это свойство bash, поэтому вы сделали не нашел его под сочетаниями клавиш в вашем гном-терминале. Из man bash:

clear-screen (C-l) Clear the screen leaving the current line at the top of the screen. With an argument, refresh the current line without clearing the screen.

См. Подробный список ярлыков клавиш Bash.

50
ответ дан 23 July 2018 в 16:28

Control-L перехватывается и интерпретируется bash (фактически библиотекой readline, которая обрабатывает интерактивное редактирование в командной строке). Он связан с функцией clear-screen, как писал @souravc.

Замечание о значении Control-L: оно определено как Feed формы в таблице символов ASCII, но это ничего не значит, если какая-либо программа не интерпретирует его соответствующим образом. Терминал не очищает экран, когда видит канал формы, как вы можете проверить, сохраняя ^ L в файле и печатая файл с помощью cat. Когда bash/readline видит ^L, он выполняет функцию clear-screen. Это отправляет последовательность символов, которая понимается вашим эмулятором терминала (как описано termcap или terminfo), и имеет эффект очистки экрана.

В очень старых принтерах ^L будет продвигать бумага начинает печать на следующем листе, отсюда и название «feed feed». Но современные терминалы и терминальные эмуляторы следуют новому стандарту ANSI, в котором управляющие команды представляют собой многосимвольные библиотеки readline , которые начинаются с ^[ (escape). Когда bash видит ваш ^L, возможно, он отправляет последовательность из двух команд ESC [ H ESC [ J, которая перемещается в верхнюю левую часть экрана и очищает все под ней (отсюда весь экран).

7
ответ дан 17 July 2018 в 15:32

Как все хорошо объяснили, что такое Ctrl + L, но никто не объяснил, как «отменить» команду, вот несколько команд, которые вы можете ввести, чтобы вернуть вас к тому, что вы делали:

history

предоставит вам последние 20 команд, которые вы набрали.

tail --lines=20 /var/log/dpkg.log

предоставит вам последние 20 строк вывода любой установки пакета, которую вы выполняли

0
ответ дан 17 July 2018 в 15:32

Если оболочка, которую вы используете, не перехватывает ее, вы вводите символ «Form-feed» в своем терминале. Если приложение терминала не перехватывает или не использует какое-либо нажатие клавиши, Ctrl + Letter переводится в код ASCII буквы минус 64 (1). 65 - код ASCII 'A', 'L' - это 12-я буква -> код 76. Если оболочка не знает, что делать с кодом, она печатает ее.

Печать символа FF привела к появлению новой страницы на линейном принтере и четкому экрану на терминале (да, я тогда использовал VT-52, при 300 бодах).

Итак, Ctrl + L равно 12, что является FF. Точно так же Ctrl + I - TAB, а Ctrl + G - звонок, если терминал или оболочка не перехватывают его, например, Ctrl + C.

Обратите внимание на другой ответ: кажется, что bash перехватывает CTRL-L и делает clear. Приятно заметить, что авторы bash связали ключ с командой, которая будет делать более или менее то же самое, что код ASCII сделал на старых терминалах!

С другой стороны, в моей zsh комбинация CTRL-I работает как Ctrl и CTRL-H как Backspace (2).

Старый хороший ASCII ... (обратите внимание, что буква L находится в столбце 4, строка 12, имеет ASCII-код 4 * 16 + 12 = 76).

Оригинальное изображение VT-52 , из статьи Википедии по ASCII.

Сноски:

(1) Backspace действительно используется для очистки бит 7.

(2) это источник «не удалять слово», вы когда-нибудь находите, например, «это было плохо» H ^ H ^ Hnot такая хорошая идея »... (обычно это слово сильнее, чем плохо!)

16
ответ дан 17 July 2018 в 15:32

Control-L перехватывается и интерпретируется bash (фактически библиотекой readline, которая обрабатывает интерактивное редактирование в командной строке). Он связан с функцией clear-screen, как писал @souravc.

Замечание о значении Control-L: оно определено как Feed формы в таблице символов ASCII, но это ничего не значит, если какая-либо программа не интерпретирует его соответствующим образом. Терминал не очищает экран, когда видит канал формы, как вы можете проверить, сохраняя ^ L в файле и печатая файл с помощью cat. Когда bash/readline видит ^L, он выполняет функцию clear-screen. Это отправляет последовательность символов, которая понимается вашим эмулятором терминала (как описано termcap или terminfo), и имеет эффект очистки экрана.

В очень старых принтерах ^L будет продвигать бумага начинает печать на следующем листе, отсюда и название «feed feed». Но современные терминалы и терминальные эмуляторы следуют новому стандарту ANSI, в котором управляющие команды представляют собой многосимвольные библиотеки readline , которые начинаются с ^[ (escape). Когда bash видит ваш ^L, возможно, он отправляет последовательность из двух команд ESC [ H ESC [ J, которая перемещается в верхнюю левую часть экрана и очищает все под ней (отсюда весь экран).

7
ответ дан 23 July 2018 в 16:28

Как все хорошо объяснили, что такое Ctrl + L, но никто не объяснил, как «отменить» команду, вот несколько команд, которые вы можете ввести, чтобы вернуть вас к тому, что вы делали:

history

предоставит вам последние 20 команд, которые вы набрали.

tail --lines=20 /var/log/dpkg.log

предоставит вам последние 20 строк вывода любой установки пакета, которую вы выполняли

0
ответ дан 23 July 2018 в 16:28

Если оболочка, которую вы используете, не перехватывает ее, вы вводите символ «Form-feed» в своем терминале. Если приложение терминала не перехватывает или не использует какое-либо нажатие клавиши, Ctrl + Letter переводится в код ASCII буквы минус 64 (1). 65 - код ASCII 'A', 'L' - это 12-я буква -> код 76. Если оболочка не знает, что делать с кодом, она печатает ее.

Печать символа FF привела к появлению новой страницы на линейном принтере и четкому экрану на терминале (да, я тогда использовал VT-52, при 300 бодах).

Итак, Ctrl + L равно 12, что является FF. Точно так же Ctrl + I - TAB, а Ctrl + G - звонок, если терминал или оболочка не перехватывают его, например, Ctrl + C.

Обратите внимание на другой ответ: кажется, что bash перехватывает CTRL-L и делает clear. Приятно заметить, что авторы bash связали ключ с командой, которая будет делать более или менее то же самое, что код ASCII сделал на старых терминалах!

С другой стороны, в моей zsh комбинация CTRL-I работает как Ctrl и CTRL-H как Backspace (2).

Старый хороший ASCII ... (обратите внимание, что буква L находится в столбце 4, строка 12, имеет ASCII-код 4 * 16 + 12 = 76).

Оригинальное изображение VT-52 , из статьи Википедии по ASCII.

Сноски:

(1) Backspace действительно используется для очистки бит 7.

(2) это источник «не удалять слово», вы когда-нибудь находите, например, «это было плохо» H ^ H ^ Hnot такая хорошая идея »... (обычно это слово сильнее, чем плохо!)

16
ответ дан 23 July 2018 в 16:28
  • 1
    Ницца. Как я могу использовать эту схему? Я вижу, что буква L находится в строке 12 и столбце 4. Затем я просто минус 32 из 124 или как вы вычисляете код ASCII? – Parto 14 March 2014 в 21:35
  • 2
    @AvatarParto ups, написал 32 вместо 65. Ответ исправлен. Таблица является двоичной, поэтому код - столбец * 16 + строка. – Rmano 14 March 2014 в 21:52
  • 3
    Вставка букв ^H s или ^W s хороша, если вы не можете использовать зачеркивания. :) – Blacklight Shining 15 March 2014 в 05:47

Другие вопросы по тегам:

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