Глупый пингвин робко прячет, умный - смело достает...


Alexander Ufimtsev аватар

Есть совет? Добавьте его сюда! sticky icon

Долго ковырялся с компом и что-то настраивал? Не смог наскоком найти ответ на вопрос в Гугле? Тогда добавь сюда свой совет, мы будем рады его опубликовать! Неважно, если это "рецепт по боданию" с каким-то из вариантов Linux, Unix или другого СПО проекта. Опубликуем, поможем улучшить и сохранить сию крупицу знания!

Жмите сюда, чтобы ДОБАВИТЬ СОВЕТ.
Рекомендации по оформлению советов. Модераторы помогут поправить форматирование, если у вас возникли проблемы.

Регистрация на сайте необязательна, но чтобы не возиться с captcha, рекомендуем все-таки зарегистрироваться или войти по OpenID. По любым вопросам обращайтесь в наш форум или стучитесь в обратную связь.

Благодарим за визит и отклики!

3.25
Ваша оценка: Ничего Рейтинг: 3.3 (4 голоса)
ramok аватар

Пройти свой путь до конца...

Если множество символических ссылок ссылаются одна на другую, то бывает сложно разобраться что куда указывает в результате.

Яркий пример это Debian alternatives system. Эта подсистема позволяет использовать однотипные программы под одним и тем же именем, в зависимости от предпочтений. И основана она на символических ссылках.

Помочь в этом может команда namei.
Например что бы узнать куда в результате указывает x-terminal-emulator можно сделать так

$ namei $(which x-terminal-emulator)
f: /usr/bin/x-terminal-emulator
 d /
 d usr
 d bin
 l x-terminal-emulator -> /etc/alternatives/x-terminal-emulator
   d /
   d etc
   d alternatives
   l x-terminal-emulator -> /usr/bin/urxvt
     d /
     d usr
     d bin
     - urxvt

Хотя если разобраться в системе альтернатив, то можно найти другую команду:

$ update-alternatives --config x-terminal-emulator 
5
Ваша оценка: Ничего Рейтинг: 5 (1 vote)
romy4 аватар

Статистика tcp соединений

netstat -npat|grep ESTABLISHED |
  awk 'BEGIN{counter=0;} {split($5,a,":");ip=a[1];if(ip in ips)ips[ip]+=1;else ips[ip]=1;counter++;} END{for(i in ips)print i" = "ips[i]"\n"}'|
  sort | grep -vP '^\s*$'

Если убрать grep ESTABLISHED, то это добавит список ожидающих соединений.
Если оставить netstat -n то добавятся UDP

0
Ваша оценка: Ничего
ramok аватар

sed и локализаци или "почему .* не работает так как надо"

Небольшая головоломка Ж:-)

Почему эта команда

$ wget -qO- "http://farmanager.com/download.php?l=ru" |
    sed -rn 's#.*href="(files/Far20[^"]+7z).*#http://farmanager.com/\1#p'


выводит мусор, вместо предполагаемого

0
Ваша оценка: Ничего
ramok аватар

Путь начинающийся с двойного слеша

Наверное многие замечали "баг" bash/zsh в существовании "двойного root".

$ cd //
$ pwd
//
$ /bin/pwd
/

Это не ошибка, а буквальное следование стандарту POSIX (IEEE Std 1003.1-2001. 4.11 Pathname Resolution ), в котором говорится:

Цитата:

A pathname that begins with two successive slashes may be interpreted in an
implementation-defined manner, although more than two leading slashes shall be
treated as a single slash.

То есть два слеша в начале пути может быть интерпретировано в зависимости от системы. Например в cygwin таким образом можно адресовать windows share. В linux // никакого значения не имеет.

5
Ваша оценка: Ничего Рейтинг: 5 (2 голоса)
ramok аватар

Слияние двух деревьев каталогов

Перемещал я как то огромное дерево каталогов из одной директории в другую. Так как директории были на windows share, то дело было долгим и в процессе были проблемы со связью и перенос прервался.
В результате у меня оказалось частично перенесённое дерево каталогов большой вложенности. Запустить опять mv я не мог, так как mv не позволяет "сливать" такие директории. cp -r тоже не спасал, так как лишнего места не было.

Выход нашелся с помощью команды rsync с ключиком --remove-source-files.

$ rsync --remove-source-files -r bak1/* ~/backup/bak1
0
Ваша оценка: Ничего
ramok аватар

tar + ssh

GNU tar умеет создавать архив на удалённой системе через ssh

$ tar --rsh-command=/usr/bin/ssh -jcvf host:/tmp/archive.tar.bz2 dir-or-files
5
Ваша оценка: Ничего Рейтинг: 5 (1 vote)

Текст в картинку (делаем скриншот консоли)

Учитываются системные шрифты, а вот цветовые схемы консоли не работают

$ ifconfig | convert label:@- ip.png
$ ping -c 5 ya.ru | convert label:@- ya.png
$ echo "Hello World" | convert label:@- hello.png
5
Ваша оценка: Ничего Рейтинг: 5 (2 голоса)

Активация странных кнопок ноутбука

Совсем странные кнопки (например, на ноутбуке) не видны в XOrg до тех пор, пока возвращают совсем странные keycode. Утилита setkeycodes позволяет исправить ситуацию, а xbindkeys в сочетании с xte из пакета xautomation — превратить нажатие клавиши в нажатие кнопки мыши.

5
Ваша оценка: Ничего Рейтинг: 5 (1 vote)

Текстовые браузеры

Новички когда устанавливаете Arch и вы еще не дошли до установки DE, но уже настроили интернет, не забывайте про консольные(текстовые) браузеры: lynx, elinks, w3m, links. Это всегда поможет когда вам надо заглянуть в арчвики.

0
Ваша оценка: Ничего

Краткий ликбез по меткам и (без)условным переходам в sed

sed во многом аналогичен специфичному диалекту ассемблера. Он предоставляет для работы два регистра - "pattern space" и "hold space". Во многом эти регистры аналогичны регистрам обычного процессора, типа EAX или EBX x86-ой архитектуры, но специфичных тем, что хранят они не некое 32-битное число, а некую строку текста. В любой конкретный момент возможна работа только с одним регистром, являющимся текущим. Переключать текущий регистр можно с помощью команды x. Так же, sed предоставляет механизм "меток", тоже аналогичный lable'ам ассемблеров, включая возможность условного и безусловного переходов к заданным меткам, что делает sed тьюринг-полным языком программирования.

Работают они следующим образом:

Создание метки:

:имяметки

Метка создаётся посредством оператора : со следующим именем метки. Именно это имя будет использоваться при условных и безусловных переходах

Переходы:
Безусловный:

bимяметки
0
Ваша оценка: Ничего
itakingiteasyyuyuyu аватар

Конфигурация ядра linux и сопутсвующих драйверов для Asus Eee PC 1215P

Конфигурация ядра 2.6.38 с патчами tuxonice на EeePC 1215P.

0
Ваша оценка: Ничего

Архивация динамического списка файлов, с отображением прогресса

Стояла задача - в страшно разветвленной помойке директорий и файлов выцепить все файлы определенных типов и затарить их в архив /tmp/archive.tar.gz. Дополнительно хотелось наблюдать за прогрессом с прогнозом времени выполнения. Было решено средствами find, pv, gawk (только gawk, с mawk не заработало) следующим образом:

find -type f -o -name \*.c -o -name \*.h -o -name \*.xsl -print0 |
    xargs -0 du -bs |
        awk '{s+=$1;sub(/^[0-9]*\t/,"");n=$0"\0"n;printf"scan files: %d\r",++i}END{ORS="";print n|"tar --null -cT-|pv -s "s"|gzip -9> /tmp/archive.tar.gz"}'
0
Ваша оценка: Ничего

Статическая линковка в cmake

Указываем через флаг "DCMAKE_EXE_LINKER_FLAGS":

# cmake -DCMAKE_EXE_LINKER_FLAGS=-static -DCMAKE_INSTALL_PREFIX=/usr  ./
0
Ваша оценка: Ничего
ramok аватар

Как правильно закрыть дескриптор процесса в expect

Если в expect скрипте множество раз вызывается spawn, то нужно уметь правильно закрывать дескриптор процесса. exp_close не достаточно, нужно дополнительно вызывать exp_wait. В противном случае дескриптор не будет освобождаться, и процесс повиснет в виде зомби.

Этот упрощенный скрипт вызывает sensors и выводит каждую секунду только температуру процессора.
Если убрать wait, то будут порождаться зомби.

while 1 {
 
    spawn sensors
 
    expect -timeout 1 -re {Core 0:\s+(\+?[^\s]+)} {
        send_user -- $expect_out(1,string)
        exp_continue
    } timeout {
        close
    } eof {
    }
 
    wait
 
    sleep 1
}
0
Ваша оценка: Ничего

Установка Oracle Java (JRE и JDK) в современные дистрибутивы

Открыв однажды окно "О программе" торрент-клиента/сервера Azureus (Vuze), написанного на Java, я очень удивился, увидев установленную версию Java 1.6.0.22! Но я регулярно читаю новостные ресуры по Linux, и там постоянно пишут, что "вышел корректирующий релиз Java 1.6.0.x+1, в нём исправлено 200 критических уязвимостей...". Какой ужас! Я пользуюсь ОЧЕНЬ старой версией Java, хотя мой дистрибутив самый новый и содержит себе все самые последние обновления!

Что произошло? Выяснилось, что компания Oracle, которая владеет правами на Java, в августе 2011 года отозвала выданную компанией Sun, приобретённой ей, лицензию на поставку Java в дистрибутивы Linux (новость на ресурсе opennet.ru). На старые версии Oracle Java (а именно ветка 1.6 и версия 1.6.0.22 и ранее) это не распространяется, а на более новые версии - распространяется. К счастью, есть OpenJDK, тот же самый Java, код OpenJDK открыт под лицензией GPL. И если для версии 1.6 совместимость между OpenJDK и Sun/Oracle Java была не полной (не удалось открыть примерно 1% исходного кода), то ветвь Oracle Java 1.7 базируется как раз на OpenJDK, и совместимость на этот раз полная (новость на ресурсе opennet.ru).

В этом совете я покажу вам то, как компания Oracle предполагает теперь устанавливать Java пользователям. Не ждите новую Java в обновлениях! Подробности ниже...

0
Ваша оценка: Ничего

Пять способов использовать Linux веб-камеру

(Автор Разван Т.Коложа, February 12, 2008 (9:00:00 PM))

Итак, вы только что установили линукс-совместимую вебкамеру. Протестировали ее в Kopete, теперь вы можете отправлять свои фото в MSN и Yahoo! Что дальше? Вот несколько вещей которые еще можно сделать.

Сделайте видеозаписи
Один из самых простых способов записать видео это использовать mencoder, входящий в пакет mplayer. Используя Video4Linux драйвер, mencoder может получить ввод с веб-камеры и сохранить в несжатый AVI файл. Используйте следующую команду для записи AVI с разрешением 320x240.

$ mencoder tv:// -tv driver=v4l:width=320:height=240:device=/dev/video0 -nosound -ovc lavc -o wcrecording.avi

Предполагается что /dev/video0 используется вашей вебкамерой. Так как моя недорогая камера не имеет микрофона, я использовал опцию -nosound чтоб отключить запись звука.

0
Ваша оценка: Ничего

Экспорт .mbox в gmail

Очень простой способ экспорта .mbox в gmail:
1. Скачиваем отсуда скрипт imap_upload.py.
2. gmail -> Настройки -> Пересылка и POP/IMAP -> Включить IMAP
3. gmail -> Настройки -> Ярлыки -> Создать ярлык (например, Imported)
4. Закачиваем почту из .mbox файла:

$ python imap_upload.py --gmail --box imported my.mbox
0
Ваша оценка: Ничего

Тап на тачпаде - другой метод

ramok предложил интересные варианты - http://linsovet.com/touchpad-enable-tapping - но есть метод (имхо) попроще

# nano /usr/share/X11/xorg.conf.d/50-synaptics.conf
Section "InputClass"
   Identifier "touchpad catchall"
   Driver "synaptics"
   MatchIsTouchpad "on"
   Option "TapButton1" "1"
   Option "TapButton2" "2"
   Option "TapButton3" "3"
   #...и другие свои опции...
EndSection

проверено на debian 5,6,7, arch, gentoo

#kstn

0
Ваша оценка: Ничего

ImageMagick, png и размер холста

При работе с изображениями в формате PNG не стоит забывать о «размере холста». В частности, утилиты из ImageMagick часто вычисляют смещение и размер, исходя именно из размера холста; чтобы этого избежать, используйте +repage.

0
Ваша оценка: Ничего