Показаны сообщения с ярлыком эргономика. Показать все сообщения
Показаны сообщения с ярлыком эргономика. Показать все сообщения

понедельник, 9 ноября 2015 г.

Чистка конфиг-файлов от комментариев

Многие конфиг-файлы Ubuntu идут с огромным количеством комментариев, описывающих настройки, или предлагающих закомментированные варианты настроек под разные конкретные задачи. Чтобы легко окинуть глазом, какие настройки из этого разнообразия реально работают, а какие закомментированы, надо пропустить конфиг-файл через скрипт, который удаляет из него закомментированные строки и оставляет прочие.
Вот команда, которая выводит на экран реальное содержимое конфига, игнорируя комментарии. Конфиг-файл при этом сокращается иногда раз в двадцать. Кроме того, в нём становится гораздо проще искать ошибки.
grep ^[^#] CONFIGFILE.conf
Другой вариант использования этого скрипта - когда настраиваем мы исходный конфиг-файл, со всеми комментариями и пояснениями. А потом пропускаем его через фильтр и подаём на вход программе уже отфильтрованный вариант, который обрабатывается проще и быстрее:
grep ^[^#] CONFIGFILE-COMMENTED.conf > CONFIGFILE-WORKING.conf

вторник, 29 октября 2013 г.

Управление фоновыми заданиями (background jobs)

Ctrl-Z - приостановить программу и вернуться в командную строку
$ bg - продолжить выполнение приостановленной программы в фоне
$ fg - продолжить выполнение приостановленной программы в интерактивном режиме
$ jobs - список фоновых заданий и приостановленных программ
$ kill %1 - прервать выполнение задания № 1 из списка, показанного командой jobs
$ fg %1 - вернуть задание № 1 в интерактивный режим
$ disown %1 - отвязать фоновое задание № 1 от текущего консольного сеанса
Если добавить значок & в конце консольной команды, она уйдёт на фоновое выполнение сразу после запуска.
Все фоновые задания (кроме отвязанных командой disown) аварийно завершаются при закрытии консольного сеанса из которого их запустили. Передать фоновые процессы от одного консольного сеанса другому нельзя. Можно передать только целиком весь консольный сеанс из одного терминала в другой, если он был создан при помощи команды screen.
Процессы, отвязанные командой disown в интерактивный режим вернуть уже нельзя. (Из списка jobs они пропадают.) Их можно убить только по номеру процесса:
$ pstree -p
$ kill <номер процесса>
Примечание: вместо системы фоновых заданий рекомендуется использовать менеджеры терминалов типа screen и tmux.

понедельник, 28 октября 2013 г.

Copy-Paste при работе с mcedit через SSH-клиент putty

При работе с текстовым редактором mcedit через SSH-клиент putty возникает проблема: у программы mcedit свой буфер обмена и она не даёт привычным образом работать с буфером Windows.
Решение проблемы: чтобы что-то скопировать из mcedit в буфер обмена винды или обратно - надо удерживать нажатым shift.

Т.е. shift + выделение мышью при работе с mcedit копирует текст в буфер Windows.
shift + правый клик на окне mcedit вставляет текст из буфера Windows в mcedit.

В остальных программах копирование в буфер Windows работает без шифта, а вот mcedit любые клики мышью "без шифта" монополизирует для своих целей.

суббота, 20 июля 2013 г.

Первичная настройка оболочки Bash после установки системы

Для комфортной работы с историей команд, необходимо после установки системы сделать следующие настройки.

1) Быстрый поиск. В файл .inputrc в домашнем каталоге пользователя (если файла нет - его надо создать) необходимо добавить следующие строки:

"\e[A": history-search-backward
"\e[B": history-search-forward

После этого, набрав в командной строке один или несколько символов, вы сможете пробегать стрелками вверх-вниз не всю историю, а только те команды, которые начинаются с этих символов. Поиск по всей истории тоже останется: по нажатию вверх или вниз в пустой строке.
2) Сохранение лаконичности. В файл .bashrc рекомендуется добавить такую строку:

HISTCONTROL=ignorespace:erasedups

Первый из этих параметров запрещает сохранение в истории строк, начинающихся с пробела: теперь для того, чтобы не засорять историю лишними командами, достаточно ставить перед ними пробел. Второй параметр заставляет в момент добавления новой команды к истории, удалять оттуда все её более ранние вызовы - опять же для лаконичности истории.
(Автор советов - Тихон Тарнавский, учебник "Работа в командной строке", LXF145)

3) Несколько консолей. Чтобы история команд корректно работала при одновременном запуске нескольких консолей, надо добавить в .bashrc следующую строчку:

PROMPT_COMMAND='history -a; history -n'

Первый параметр - чтобы история команд сохранялась сразу после ввода (а не во время закрытия терминала). Второй параметр - "нажатие Enter в консоли обновляет историю".
(Автор совета - fnatoss, в комментариях на Хабре)

Полезные сочетания клавиш при работе с командной строкой Bash

Alt+F - курсор на слово вперёд
Alt-B - курсор на слово назад
Ctrl-W или Alt+Backspace - удалить до границы слова назад
Alt+D - удалить до границы слова вперёд
Ctrl+K - удалить до конца стоки
Ctrl+U - удалить до начала строки
Alt+T - поменять местами два соседних слова (если поставить курсор между словами - именно эти два слова и поменяются)
Alt+точка - поставить на место курсора последний аргумент предыдущей команды; следующие нажатия проматывают последние аргументы назад по истории
Ctrl+R - открыть ПОИСК по истории команд от конца к началу
Примечание:
Вместо комбинаций типа Alt+A возможно последовательное нажатие Esc и A.
(Автор - Тихон Тарнавский, учебник "Работа в командной строке", LXF145)

суббота, 12 мая 2012 г.

Памятка по ключам программы screen


Открыл для себя линуксовый screen.

Это настолько фантастическая штука, что странно, как я жил без неё. Немного усилий, и получаем "вечные" консольные сеансы, не зависящие от того, откуда мы с ними работаем - через SSH или локально, через Gnome Terminal. И программы не завершаются после отключения от SSH. Всего-то надо запомнить девять строчек, практически полностью покрывающих все варианты использования:

screen -S имя_сеанса [команда] - запуск команды/оболочки в отдельном не-фоновом сеансе (S - session name)
кнопки Ctrl-A, D - свернуть текущий активный сеанс в фоновый режим (D - detach)
screen -r имя_сеанса - вытащить сеанс "имя_сеанса" из фонового режима (r - restore)
screen -r - восстанавливает фоновый сеанс, либо показывает их список если фоновых сеансов несколько
screen -ls - показать список запущенных сеансов, и фоновых и активных (функционал покрывается предыдущей командой)
screen -d имя_сеанса - свернуть сеанс "имя_сеанса", открытый в другой консоли (d - detach)
screen -dr имя_сеанса - утащить сеанс из другого терминала и открыть его в этом (detach, restore)
screen -mdS имя_сеанса [команда] - создать сеанс, запустить в нём команду и свернуть в фон (m - make)
кнопки Ctrl-A, ? - показать хелп по доступным комбинациям клавиш

При управлении сервером только через SSH, вполне достаточно запомнить первые четыре строчки (выделены синим).

пятница, 23 сентября 2011 г.

Выделение "Shift + стрелка" при помощи клавиш NumPad

В Windows при выделении текста методом "Shift + стрелка", нет существенной разницы, используется ли стрелка или клавиша NumPad. В линуксе, к сожалению, есть. Если использовать NumPad, вместо выделения текста будут вводиться цифры. Это неудобно и дезориентирует.
Для исправления ситуации необходимо следующее. Создаём в рабочем каталоге файл .Xmodmap нижеследующего содержания:

keycode 79 = Home
keycode 80 = KP_Up
keycode 81 = KP_Prior
keycode 83 = KP_Left
keycode 84 = KP_Begin
keycode 85 = KP_Right
keycode 87 = End
keycode 88 = KP_Down
keycode 89 = KP_Next
keycode 90 = Insert
keycode 91 = Delete

Затем в автозапуск ставим команду:
$ xmodmap ~/.Xmodmap


К сожалению, данный метод для меня сродни шаманству, поэтому я не смог решить схожую проблему со "сбрасыванием состояния кнопки Shift, если она нажималась в составе комбинации Alt-Shift (переключение раскладок)". В Windows, если после английского слова необходимо ввести русское с заглавной буквы, мне достаточно удерживая Shift коротко нажать Alt и начать набор текста. В линуксе клавишу Shift после переключения раскладок обязательно надо отпустить и нажать ещё раз, поскольку её статус "нажатости" оказывается утерян.
Буду так же благодарен, если мне расскажут, как эти настройки сделать глобальными для всей системы.

Update:
Нарыл ещё одно решение. Явно более правильное, но тоже не абсолютное.
Меню System -> Preferences -> Keyboard
Закладка Layouts, кнопка Options.
Раздел Miscellaneous Compatibility Options.
Параметр "Shift with numeric keypad keys works as in MS Windows" - включить.
Работает достаточно неплохо, если не в консоли. В консоли нажатие shift+стрелка начинает выводить буквы.