четверг, 8 сентября 2011 г.

Мигель де Икаса даёт советы по Unix

Один из самых известных Unix-программистов Мигель де Икаса (основатель проектов GNOME и Mono) в своём блоге дал парочку советов, как повысить продуктивность работы в шелле Unix. Он говорит, что иногда встречает молодых хакеров и бывает поражён, насколько мало трюков они знают.

Мигель де Икаса рекомендует ликбез по-быстрому:

1. Прочитать «Unix. Программное окружение» Кернигана и Пайка [русское издание], займёт несколько дней, от силы неделю. Книжка очень старая (1984), но лучше всех разъясняет автоматизацию различных действий в консоли. Вторая книжка — UNIX for the Impatient, чтобы прокачать навыки.

2. Освоить Emacs. Эта программа оказала сильнейшее влияние на развитие Unix. Освоив горячие клавиши для Emacs, вы автоматически освоите их сразу для сотен других Unix-программ. Лучше всего сразу после запуска нажать Ctrl-H, потом t. Это онлайновое руководство, которое отнимет у вас всего два часа.

3, Использовать Midnight Commander. Этот файл-менеджер объединяет лучшее из двух миров: GUI-подобный интерфейс и полный доступ к текстовой консоли. На экране список файлов в двух директориях, а снизу командная строка Unix.



Навигация стрелочками, Ctrl-S для поиска по именам файлов, Ctrl-T для выделения, F для копирования, перемещения или удаления. По умолчанию копирование происходит в директорию на другую половину экрана.

Midnight Commander является клоном Norton Commander, программу написал сам Мигель.

4. Самая крутая книга по хитростям Unix: Unix Power Tools. Это сборник индивидуальных трюков от разных хакеров, каждый примерно на страничку. Уникальный материал скомпилирован из конференций Usenet и других книжек. Хорошо подходит для ежедневного чтения (по одному в день — хватит на четыре года, потому что фолиант на 1539 страниц).

5. Изучить слепой метод набора. Трудно и долго, но надо стараться.

Источник: http://habrahabr.ru/blogs/UNIX/127970/

вторник, 17 мая 2011 г.

Color Scripts

 Статья о том, как раскрашивать вывод своих скриптов.

http://habrahabr.ru/blogs/linux/119436/#habracut

суббота, 30 апреля 2011 г.

console tips

  • очень простой способ передать файлы с машины на машину — tar cz. | nc -l -p 2214 (на передающей стороне) и nc адрес 2214 | tar xz (на принимающей). 2214 — номер порта, выбирается по желанию. в разных версиях nc нужно писать nc -l -p или nc -l
  • в локальной сети из дефолтно-настроенных убунт, можно обращаться к машинам по имени, а не по айпи: username-desktop.local отрезольвится в ip машины, которую назвали username-desktop. это магия mdns, спасибо apple
  • avahi-browse -a быстро покажет список имен машин с в локальной сети, а ключ -r покажет сразу и их ip. как и в предыдущем хинте, требуется avahi, он есть в дефолтной убунте. сама команда — в пакете avahi-utils
  • пользуйтесь ctrl-R в консоли, чтобы не жать «вверх» по сто раз
  • history не резиновый. если что-то было забито в историю интерпретатора, рано или поздно оттуда может исчезнуть, не полагайтесь на него, как на справочник
  • используйте set -e в скриптах. неотработавший «cd» во временный каталог может надолго испортить настроение содержимое /home
  • проверяйте код возврата
  • чтобы вернуться в предыдущий каталог, есть команда cd -. в zsh еще есть команда d еще есть команда dirs -v, показывающая историю переходов. еще в zsh можно делать вот так: cd -2
  • пишите в скриптах длинные --варианты параметров
  • не пишите в скриптах rm -rf $VAR/
  • используйте visudo для редактирования sudoers
  • потеряли пароль рута? при загрузке укажите ядру параметр init=/bin/bash и сбростье пароль через passwd
  • у грепа есть полезный параметр --color
  • команда, чтобы перечитать отредактированный файл с переменными окружения: source /etc/environment .
  • пользуйтесь bash -x для отладки скриптов
  • пользуйтесь strace для отладки всего остального. от лишнего выхлопа спасет параметр -e имявызова
  • не путайте /bin/sh и /bin/bash, это не всегда одно и то же. особенно в дебиане, особенно в убунте
  • настройте алиасы
  • если на команду повешен алиас, то запустить ее «настоящую» можно, добавив в начале бэкслеш например: \ls
  • если терминал переклинило после некорректного выхода из псевдографической программы иили вырвашегося на просторы stdout мусора, есть волшебная команда reset
  • exec >file в скрипте перенаправит его вывод в файл и не перезапустит скрипт
  • уже написали вагон скриптов? забекапьте
  • не храните все в / или /home
  • lvm уже придумали
  • используйте в скриптах mktemp для создания временных файлов и каталогов
  • пишите переменные вот так: ${VAR}
  • VAR=X и export VAR=X — разные вещи
  • dd может показывать, сколько он уже скопировал, если пнуть его черз kill -USR1
  • kill может принимать аргументом номер задачи, а не только идентификатор процесса: kill %1
  • jobs, bg, fg, disown — тоже так умеют
  • если «вышли» из программы через ctrl-Z, вернуться можно командой fg
  • rsync нужен не только для сетевых операций
  • rm something и rm something/ — это разные вещи. и не только в rm, cp, ls и rsync — тоже
  • watch и repeat уже написаны, не надо велосипедить их через while true
  • at тоже уже написан, а sleep понимает время не только в секундах
  • sudo echo > file открывает файл на запись не с правами рута. это делается так: sudo sh -c 'echo > file'
  • если скрипт запускается в линуксе, это не значит, что он так же хорошо отработает в bsd или макоси
  • пишите --параметры перед аргументами, иначе ls file -l в bsd вас удивит
  • грепаете вывод ifconfig? ifconfig тоже бывает разный
  • нормально работающие версии утилит в bsd и макоси имеют приставку g: gsed, gmake
Источник: http://habrahabr.ru/blogs/linux/118279/

понедельник, 7 февраля 2011 г.

Deluge и checking 0.00%

Если вы используете Deluge (и он прописан запускаться при старте системы) и вдруг раздел, где хранятся скачанные файлы у вас, как и у меня, в неправоверной NTFS — можете столкнуться с тем, что после перезагрузки торренты будут очень медленно чекаться, точнее большинство из них просто-напросто замрут с надписью "Checking 0.00%".

Проблема в том, что NTFS раздел у вас, быть может не успел смонтироваться и самый простой черновой способ с этим справиться - закрыть Deluge, открыть ntfs-раздел любым файл-браузером. После этого Deluge довольно шустро справится со своим "Checking".

воскресенье, 28 ноября 2010 г.

ALIAS

http://ru.wikipedia.org/wiki/Alias

Удобные сочетания клавиш в командной строке

Ctrl-a - перейти к началу строки.

Ctrl-e - перейти к концу строки

Alt-] x перемещает курсор прямо к следующему месту появления x

Alt-Ctrl-] x перемещает курсор назад к предыдущему месту появления x

Ctrl-u удалить все от курсора до начала стоки.

Ctrl-k удалить от курсора до конца строки.

Ctrl-w удалить от курсора до начала слова

Ctrl - y вставляет текст из буфера обмена

Ctrl - l очищает экран, перемещая текущую строку вверх на экран

Ctrl-x ctrl-u отмена последних изменений. ctrl-__

Alt-r отмена всех изменений в строке

Alt-Ctrl-e расширить командную строку

Ctrl-r инкрементальный обратный поиск в истории

Alt-p не инкрементальный обратный поиск в истории

!! выполнить последнюю команду из истории

!abc выполнить последнюю команду из истории, начинающуюся на abc

!n выполнить n-ую команду из истории

^abc^xyz заменить первое появление abc на xyz в последней команде и выполнить ее

пятница, 15 октября 2010 г.

NFS: Общие папки в Linux

Расшарили Интернет на два компьютера при помощи cross-over кабеля и двух сетевых карт на моем компьютере (об этом — отдельная песня, чуть позже). Встал вопрос об общей папке и решение было подсказано там же, где мне терпеливо давали советы о настройке сети — на русскоязычном Ubuntu форуме. Три буквы : NFS.

Network File System то есть. Это протокол сетевого доступа к файловым системам. То есть после того, как мы настроим всё что нужно, сетевые папки можно будет примонтировать и отмонтировать при помощи команды mount. Одной из основных идей разработчиков NFS была идея создать платформонезависимый протокол, аппаратнонезависимый и идея о том, что производительность должна быть сравнима с производительностью локальных дисков. Об этом я узнал в статье на Wikipedia и любителям историй предлагаю направиться туда за продолжением — там и ссылки на соответствующие RFC имеются : )

Важно отметить, что у нас сейчас две Linux машины, на моей — Ubuntu 9.10, на второй — XUbuntu с теми же циферками.

Настроилось всё очень быстро, благодаря вот этому руководству.

Выберите компьютер, где у вас побольше свободного дискового пространства — он у нас будет "сервером".

sudo apt-get install nfs-kernel-server nfs-common portmap
Это мы устанавливаем необходимые пакеты. Собственно сам nfs и portmap, который "является сервером, который преобразует программные номера RPC в номера портов протокола DARPA. Он обслуживает все обращения к RPC.", как подсказал мне Интернет. Мне, правда от этой подсказки легче понять, что именно делает portmap на данный момент не стало, но, надеюсь, настанет день, когда я смогу объяснить это предложение простыми словами : )
sudo dpkg-reconfigure portmap
sudo /etc/init.d/portmap restart
Запускаем настройку portmap.
Обратите внимание, конфигуратор задаст вам один вопрос — на него надо ответить "НЕТ" : )
После настройки перезапускаем portmap.
sudo vi /etc/exports
Открываем файл /etc/exports, куда мы сможем прописать адреса тех папок, которые мы хотим сделать общими по сети. Например, так, как у меня:
/common 192.168.0.1/24(rw,no_root_squash,async,no_subtree_check)
192.168.0.1 — внутреннего IP моего компьютера-"сервера".
Сохраняем этот файл, перезапускаем сервер NFS:
sudo /etc/init.d/nfs-kernel-server restart
Применяем настройки:
sudo exportfs -a
Настраиваем доступ на втором компьютере:

Устанавливаем необходимые пакеты:
sudo apt-get install portmap nfs-common
Создаем папку, в которую будем монтировать удаленную папку. Удобно, чтобы не путаться, положить её там же, где и на компьютере-"сервере".
cd /
sudo mkdir common
Монтируем удаленную папку:
sudo mount 192.168.0.1:/common /common
Чтобы удаленная папка монтировалась автоматически после перезагрузки компьютера, нужно дописать в файл /etc/fstab вот такую строку:
192.168.0.1:/common /common nfs rsize=8192,wsize=8192,timeo=14,intr
Теперь всё должно заработать : )