Продвинутым
Текст в картинку (делаем скриншот консоли)
Учитываются системные шрифты, а вот цветовые схемы консоли не работают
$ ifconfig | convert label:@- ip.png $ ping -c 5 ya.ru | convert label:@- ya.png $ echo "Hello World" | convert label:@- hello.png
Активация странных кнопок ноутбука
Совсем странные кнопки (например, на ноутбуке) не видны в XOrg до тех пор, пока возвращают совсем странные keycode. Утилита setkeycodes позволяет исправить ситуацию, а xbindkeys в сочетании с xte из пакета xautomation — превратить нажатие клавиши в нажатие кнопки мыши.
Статическая линковка в cmake
Указываем через флаг "DCMAKE_EXE_LINKER_FLAGS":
# cmake -DCMAKE_EXE_LINKER_FLAGS=-static -DCMAKE_INSTALL_PREFIX=/usr ./Colorfly PocketHiFi и другие нестандартные устройства хранения в Linux
Linux можно заставить работать с нестандартными устройствами, которые видны как USB-флешки, но не распознаются. На помощь приходит параметр quirks модуля usb-storage.
Оживление запоротого насмерть BIOS
Рассказ о том, как я восстановил свой BIOS после неудачной прошивки coreboot. Примеры прошивки под DOS и Linux, немного фотографий и рассказ об одном из самых брутальных способов оживления мертвой материнки.
Замена песочным часам в терминале
Иногда в окне терминала требуется функциональность песочных часов. Предлагается решение:
Вывод сообщений статуса в bash скрипте
При написании shell скриптов часто возникает необходимость отображать действия скрипта и информацию о то выполнилось действие или нет, чтобы примерно выглядело как выполнение init.d скриптов при загрузке системы.
Примерно вот так:
* Производится действие 1 [DONE] * Производится действие 2 [FAIL] это ошибка действия 2
Мультибут разных LiveCD ISO
Порой возникает желание или необходимость посмотреть на что способен тот или иной дистрибутив Linux без его установки на HDD.
Сейчас это не так сложно, многие дистрибутивы сейчас выкладывают свои LiveCD, однако, каждый раз ждать пока запишется CD или тем более DVD диск, а кроме того каждый раз тратить болванку на каждую Альфу и Бэту очень грустно.
Если у Вас уже установлен Linux и grub, то можно существенно облегчить себе жизнь...
Как скопировать файлы из другой ветки репозитория git
Что же делать, если нужно скопировать файлик из одной ветки git в другую? Браться за голову и делать это руками? Совсем нет. :)
Достаточно сделать в нашей ветке, где файла нет вот такое действие:
$ git checkout другая_ветка путь_к_файлуи файл магически скопируется из другая_ветка. Останется добавить его и закоммитить.
Узнать время в другом часовом поясе
Иногда нам хочется узнать время в другом часовом поясе. Иногда (но еще реже) нам нужно, чтобы таймзона нашего пользователя была не такой, как системная. Для этого существует переменная окружения TZ, в которую можно записать значение и получить нужный эффект.
$ date Fri Feb 18 10:22:53 EET 2011 $ TZ="America/Chicago" date Fri Feb 18 02:22:53 CST 2011
Узнать название зоны поточнее всегда можно в каталоге /usr/share/zoneinfo.
автоматическое создание временных каталогов при переходе в них
Часто бывает, что хочешь зайти в /tmp/somedir и натворить там гадостей. А оказывается, что /tmp/somedir уже нету. Или не было никогда и надо её сначала создать. Тогда приходится поступать так:
$ cd /tmp/somedir cd: no such file or directory: /tmp/somedir $ mkdir -p $_ && cd $_
Но надоело!
Хочу, чтобы если я пытаюсь перейти в несуществующий подкаталог в /tmp, оболочка автоматически создавала этот подкаталог и переходила в него.
Вот этот алиас, в виде bash-функции, для добавления в ~/.bashrc
function cd_alias () { targetdir=$(readlink -m "$@") [[ ${targetdir:1:5} == "/tmp/" ]] && [[ ! ( -d "${targetdir}" ) ]] && mkdir -p "${targetdir}" cd ${targetdir} } alias cd="cd_alias "
под катом объяснение как это работает.
KVM: добавление паравиртуального диска в ВМ без перезагрузки
В KVM паравиртуальный диск добавлятся как обычный SCSI (?) диск, но подключенный к отдельному SCSI-контроллеру, подключенному к шине PCI, а шина PCI в KVM поддерживает hotplug :) Т.е. со стороны ВМ потребуется пересканировать не SCSI, а PCI шину.
Итак
- Добавляем диск со стороны KVM. Проще всего сделать это через virt-manager, но я пример будет консольного virsh.
virsh -c qemu:///system attach-disk vm_test /dev/mapper/vgpool-lvtest--ch vdb
Название добавляемого диска должно быть вида vd*. Если указать sd*, добавлен будет полностью виртуализуемый scsi-диск. - Со стороны ВМ пересканируем PCI шину:
# echo '1' > /sys/bus/pci/rescan # dmesg | tail [ 4080.181985] virtio-pci 0000:00:06.0: irq 30 for MSI/MSI-X [ 4080.183123] vdb: vdb1
Удалённо задействовать magic keys (SysRq)
Оказывается, SysRq ( http://ru.wikipedia.org/wiki/SysRq ) ключи можно использовать и удалённо, через /proc/sysrq-trigger
Например, перезагрузка
# echo b > /proc/sysrq-trigger
Понадобится может редко, зато спасёт в сложной ситуации
Руководство по запуску игры StarCraft II: Wings of Liberty
Игра существует в вариантах для Windows и MAC OS X. Завайте запустим Windows-версию с помощью Wine!
Лично я использовал версию Wine 1.2. Ваша версия Wine может отличаться. Я буду рассматривать особенности именно версии 1.2 (или примерно такой).
Вставляем установочный компакт-диск и видим, что почти всех установочных файлов на диске нет! В чём дело?! Лично я не знаю, знаю только, что нужно поключать DVD-диск с опцией unhide.
1). Подключение DVD-диска.
Не знаю, почему нигде нельзя это сделать из графического интерфейса. Лично мне этот парамент понадобился первый раз.
# mount -o ro,unhide,uid=1000 /dev/cdrom /mnt/cdrom
Сборка VirtualBox с интерфейсом Qt 3
Не любитель KDE4. Поэтому во всех популярных дистрибутивах, которые я установил на свой жёсткий диск, у меня графический рабочий стол KDE 3. Никаких проблем нет: ни с новым компилятором GCC 4.4, ни с ядром 2.6.34, ни с X-Server 1.8 - всё работает отлично! Программа Opera и менеджер печати у драйвера hplip тоже имеют Qt3-интерфейс, который прекрасно работает!
Захотел я сделать себе VirtulBox с Qt3, за компанию. Поискал, в какой версии этот интерфейс исключили из программы - выяснилось, что из 2.2. Но я могу и ошибаться: это нигде не указано явно. Какая версия последняя перед 2.2? 2.1.4. Компилируем её!
когда лень читать много букав
...Можно выделить текст, кликнуть мышкой на нужную иконку тут где-нибудь на панели, и прослушать. Но сперва...
Conky network widget
Даже не знаю как начать :) Ибо для тех кто в теме, могу сразу дать скрины и конфигу :)

Для не знающих conky - это
Потом читаем сначала ;)
ps: я знаю, что conky бесконечен, и мой виджет далеко не идеал! :) И мне есть куда стремиться, но сами знаете... ;)
Спасибо, жду ОЦУ и идей
Листинг без ls
Случилось поковыряться в ADSL-модеме (конкретно, в D-Link DSL-2500U). Оказалось, что Busybox там без поддержки ls и еще нескольких нужных команд. Но выкрутиться можно.
К примеру, просмотреть директорию можно однострочником:
$ for i in * ; do echo $i ; doneлибо указывая конкретную директорию:
$ for i in /usr/bin/* ; do echo $i ; doneДля большего комфорта можно зарядить это в скриптик:
$ echo -e '#!/bin/sh\ntest !$1 && p=`pwd`\ntest $1 && p=$1\nfor i in $p/* ; do echo $i ; done' >/var/ls $ chmod +x /var/ls $ export PATH=PATH:/var/
Пример замены n-го появления строки в файле
Задача была озвучена так:
20:19 < todd_dsm> hey all, I have 1 file to modify (httpd.conf) I need to change the 2nd of for occurrences of "AllowOverride None". Is there a way do change the 2nd occurrence and leave 1,3, and 4 untouched?
Примерный перевод
У меня есть httpd.conf. Мне надо заменить второе появление в файле "AllowOverride None". Есть возможность заменить второе появление, не тронув первое, третье и четвертое?
Ответ:
Пример заменяет второе появление "AllowOverride None" на "replace".
$ printf "AllowOverride None\nAllowOverride None\nAllowOverride None\nAllowOverride None\n" |
awk '/AllowOverride None/ && (++i == 2) {print "replace";next}{print}'На sed
$ printf "AllowOverride None\nAllowOverride None\nAllowOverride None\nAllowOverride None\n" |
sed -e '/AllowOverride None/{x;/^1$/{x;s/.*/replace/;x};s/$/1/;x}'Потоковое редактирование на месте с помощью ed
Для того что бы заменить строчку в файле часто используется sed с ключиком -i.
Но не все знают что sed на самом деле создает копию файла и заменяет его на оригинал (не лишнее будет прочитать в man sed что на самом деле обозначает -i).
Проверить это можно так:
$ echo 1 > z.txt && ls -li z.txt && sed -i 'i1' z.txt && ls -li z.txt && rm z.txt 5290353 -rw-rw-r-- 1 ramok ramok 2 Апр 7 13:00 z.txt 5290354 -rw-rw-r-- 1 ramok ramok 4 Апр 7 13:00 z.txt
Здесь создается пустой текстовый файл, выводится номер его inode, затем с помощью sed добавляется '1', и снова выводится inode файла.
Видно что inode изменился.
При этом копия файла создается в текущей директории. Увидеть это можно так:
$ echo 1 > z.txt && ls -li z.txt && strace sed -i 'i1' z.txt 2>&1 | grep open && ls -li z.txt && rm z.txt
879149 -rw-rw-r-- 1 komar komar 2 Апр 7 13:06 z.txt
open("/etc/ld.so.cache", O_RDONLY) = 3- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- следующая ›
- последняя »




