Замена стандартной Windows-консоли. Вкладки-табы и выбор оболочки

Стандартная консоль Windows XP (та, что вызывается командой cmd) — весьма бедна возможностями. Основное, от чего я страдал, пользуясь ей или консолью из состава cygwin — отсутствие вкладок (табов), без которых приходится открывать несколько окон, занимающих место на рабочем столе. После gnome-terminal, rxvt дома или screen на хостинге — очень неудобно. Впрочем, такие «мелочи», как невозможность изменить ширину окна растягиванием (надо лезть в настройки окна) тоже не добавляют удовольствия от работы с консолью.

Console

И вот случайно наткнулся в интернете на замечательный проект с незамысловатым названием Console (домашняя страница) — альтернативную консоль для Windows. Она мне понравилась, так что решил поделиться с читателями.
Перечислю основные достоинства:

  • лаконичный интерфейс
  • сохраняются настройки геометрии окна после выхода из программы
  • поддержка табов
  • для каждого таба можно настроить внешний вид, иконку и главное — задать оболочку (shell), с которой будет открываться данная вкладка (например — тот же bash из состава cygwin)
  • для таба/консоли задаётся каталог запуска по умолчанию
  • удобный скроллинг

Альтернативная консоль для Windows

В общем Console не требует долгого и подробного описания — это приятная глазу альтернативная консоль для Windows с поддержкой табов (вкладок) и оболочек. Рекомендую просто попробовать и сравнить со следующим эмулятором консоли — ConEmu.

ConEmu

В комментариях к этой заметке подсказали еще один эмулятор консоли для Windows под названием ConEmu. Она точно также поддерживает вкладки, выбор оболочки командной строки, имеет возможность задавать умолчальный каталог для запуска новой оболочки.

Что мне понравилось в ConEmu по сравнению с Console — во-первых, это скорость работы — ConEmu работает заметно быстрее. Во-вторых — наличие хорошего моноширинного консольного шрифта прямо из коробки. В-третьих — корректная поддержка кириллицы, как в консоли windows, так и в bash — везде русские буквы отображаются как надо. И в-четвёртых — нормально реализованная псевдографика, файловый менеджер MidnightCommander в ConEmu, в отличае от Console, работает правильно.

Из минусов ConEmu можно отметить пожалуй только отсутствие возможности свернуть её в трей, что можно сделать в Console. В остальном на мой взгляд ConEmu у Console выигрывает, я перешел на неё, а вам предлагаю сравнить самостоятельно и выбрать подходящий для вас многовкладочный эмулятор консоли для Windows.

Эмулятор Windows-консоли ConEmu

Дополнение из комментариев:
> Единственное, чего не хватило – возможности прятать в трей не нашел
Два способа для сворачивания ConEmu в трей:
а) Правый клик на крестике («закрыть окно») в заголовке;
б) Опция «Auto minimize to TSA» (Setup tasks -> Features);

> Как указать автосоздаваемые при старте табы с нужными оболочками:
Создать именованый «Task» на одноименной вкладке (Setup tasks -> Tasks, путь к нужной оболочке (или нескольким оболочкам) выбрать через кнопку Add application), выбрать этот Task на вкладке Startup. Причем конкретные табы можно запускать с конкретными параметрами – AsAdmin, Working dir, и т.п. смотреть в сторону -cur_console

BASH [born again shell] — оболочка командной строки

Краткая история Bash

bash, bashrc, настройка bash linux

bash представляет собой модернизированную и усовершенствованную версию оболочки командной строки Bourne shell. В системах семейства *NIX bash на данный момент является одной из наиболее популярных и распространённых оболочек, на многих таких ОС (и например в эмуляторе unix-подобного окружения Cygwin) эта оболочка предустановлена.

Корнями bash уходит к оболочке sh за авторством Стивена Борна, разработанной им в 1978 г. и усовершенствованной в 1987 году Брайаном Фоксом. Дословно Bash можно расшифровать как Biurne-again-shell или «Ещё одна оболочка Борна». Также фамилия Борн созвучна со словом born (родившийся), что порождает альтернативное название: «вновь рождённая оболочка».

Порядок запуска Bash

При запуске bash во-первых считывает и исполняет команды из основного файла профиля /etc/profile (при условии существования такого файла). Затем происходит чтение файлов из домашней директории пользователя: $HOME/.bash_profile, $HOME/.bash_login, и $HOME/.profile и исполнение записанных в них команд. В момент завершения работы при выходе из оболочки вызываются команды из файла $HOME/.bash_logout.

Помимо перечисленных выше файлов, bash также распознаёт команды, описанные в так называемом дот-файле (или .rc-файле) $HOME/.bashrc (примеры — файлы .vimrc и .wgetrc) Обычно здесь содержатся пользовательские настройки внешнего вида оболочки, переопределения пользовательских команд и т.п. Пользовательские функции для bash в целях удобства восприятия полезно выносить в отдельный файл (например $HOME/.bash_function), который затем подключать из .bashrc командой source (source $HOME/.bash_function).

Примеры файлов настроек для bash

bashrc — основной файл настроек

Мой файл bashrc (открыть на новой странице) содержит основные настройки оболочки — алиасы, сохранение истории команд, вид приглашения командной строки, настройки вывода некоторых команд и т.п. Все пользовательские функции вынесены в отдельный файл .bash_functions, подгружаемый из .bashrc. Локальные настройки для разных машин (переменные окружения, цвета приглашения командной строки) также подгружаются из отдельных внешних файлов .bash_local.

bash_functions — функции оболочки

bash_functions (открыть на новой странице) — содержит определения пользовательских функций и подгружается по вызову изи .bashrc.

bash_usage — справка по использованию bash

А небольшая справка по использованию самописных функций и некоторых, не слишком часто нужных, программ, у меня вынесена в отдельный файл bash_usage, который также подгружается из .bashrc:
.bash_usage (открыть на новой странице) — содержит справку по пользовательским функцям и подгружается по вызову из .bashrc.

Остальные настройки оболочки, подключаемые в bashrc

Больше конфигов? Легко!

Примеры моих конфигурационных файлов для других программ можно найти на странице Конфиги / dotfiles

Адаптация Cygwin shred для Windows

Адаптация утилиты shred для windows

Набросал тут как-то в свободную минуту скрипт-оболочку для вызова утилиты безопасного удаления файлов shred, которой постоянно пользуюсь дома.
Win-аналоги искать было лень — попробовал как-то найти под win софтинку для конвертации mp3 в wav — ради того, что в линухе делается одной командой, пришлось час ползать по сети и засорять машину, а в итоге всё найденное было платным или кривым.

Поскольку у меня на работе всё равно установлен cygwin — воспользовался сборкой shred под него, а батник сделал для большего удобства использования. Дальше всё просто — батник на рабочий стол и перетаскиваем на него предназначенные для безопасного удаления файлы.

Код батника предельно примитивный, так что просто приведу его ниже (под катом). Достаточно скопировать в текстовый файл и изменить расширение на .bat.

(далее…)

PID — process ID (идентификатор процесса)

PID — уникальный идентификатор процесса (напр. выполняющейся программы). Позволяет обращаться к конкретному процессу.

PID присваивается каждому вновь запущенному процессу с целью персонифицировать его относительно других уже выполняющихся процессов.

По сути PID представляет собой «адрес» процесса, что позволяет другим процессам взаимодействовать с ним тем или иным образом.

В ОС Linux узнать PID процесса (процессов) можно например при помощи таких команд, как

1
top

или

1
ps

.

Команда

1
kill

являет собой характерный пример использования PID — она принимает его в качестве одного из аргументов и отправляет указанный сигнал нужному процессу.

Cygwin — бесплатная реализация unix-подобного окружения для Windows

Cygwin - бесплатное Unix-окружение для Windows

Как ясно из заголовка, Cygwin представляет собой unix-подобную среду, реализованную для ОС Windows.

Cygwin включает в себя следующие основные компоненты:

  • Динамическая библиотека cygwin1.dll, которая обеспечивает совместимость на уровне API и предоставляет реализацию значительной части стандарта POSIX.
  • Коллекция прикладных утилит, обеспечивающих UNIX-образное окружение (включают в себя как утилиты с интерфейсом командной строки — например — утилита для безопасного удаления файлов shred, так и графическое окружение типа Gnome/KDE).

Cygwin распространяется бесплатно под лицензией GNU GPL v.2, разработкой занимаются как сотрудники Red Hat, так и сообщество добровольцев. В качестве стандартной оболочки командной строки используется Bash. Cygwin имеет встроенный эмулятор терминала, однако также для окружения существует сборка популярного легковесного unicode-терминала urxvt

Посредством Cygwin обеспечивается существенная интеграция ресурсов, данных и прикладных программ Windows с ресурсами, прикладными программами и данными Unix, что позволяет как вызывать Windows-приложения из Cygwin, так и использовать Unix-утилиты из состава Cygwin в консоли Windows.

Последние версии Cygvin (старше версии 1.7) имеют встроенную поддержку Unicode (UTF-8), при использовании Windows-утилит из Cygwin, последняя автоматически перекодирует вывод в UTF-16, применяемую в Windows по умолчанию. Таким образом, в современных версиях Cygwin отсутствуют проблемы при работе с кириллицей (ввод-вывод осуществляются корректно).

Небольшое практическое дополнение.
Для того, чтобы в Cygwin использовался файл .bashrc, расположенный в домашней директории пользователя, можно воспользоваться следующим способом —
в файл путь_куда_установлен_cygwin\etc\defaults\etc\skel\.bash_profile дописать такие строки:

# source the users bashrc if it exists
if [ -e "${HOME}/.bashrc" ] ; then
  source "${HOME}/.bashrc"
fi