Crontab для лентяев

Время от времени требуется запустить задание по расписанию в cron, и линуксоид начинает судорожно вспоминать в какой последовательности идут звездочки в crontab. Вот функция, позволяющая облегчить эту задачу:

crontest () { date "-d +$1 minutes" '+%M %k %d %m *'; }


Эту строчку можно добавить в ~/.bashrc. Использовать так:

crontest 5


— показать, как будет выглядеть в crontab время, чтобы задание запустилось через 5 минут.

Источник.

Быстро посмотреть статистику по сетевым подключениям

netstat -tn | awk 'NR>2 {print $6}' | sort | uniq -c | sort -rn


Output примерно такой будет:

9 ESTABLISHED
3 TIME_WAIT
1 CLOSE_WAIT


Источник.

Linux: выводим в консоль все имеющиеся в css цвета

Сегодня настроение для консольного кунг-фу. Задача — вывести список используемых в css цветов. Часто возникающая задача при работе над оформлением.

Warning! Hardcore content!

grep -ihr color *.css | sed "s/.*color.*:\ *\"\?\([^\"|^\;|^\!]*\)\(.*\)/color:\1;/" | grep ";" > 1.colors
grep -ihr "background[^\-]" *.css | sed "s/.*background.*:\ *\"\?\([^\"|^\;|^\!|\S]*\)\(.*\)/color:\1;/" | grep ";" >> 1.colors
grep -ihr "border[^\-]" *.css | sed "s/.*border.*:\ *\"\?\([^\"|^\;|^\!|\S]*\)\(.*\)/color:\1;/" | grep ";" >> 1.colors
grep -v url 1.colors > 2.colors
grep -v "\/\*" 2.colors > 3.colors
sort 3.colors | uniq > 4.colors
more 4.colors


Под конец желательно сделать:

cat 4.colors | grep '#' > 5.colors


Найдено здесь

Консольная бубнилка

Очередную bash-няшечку опубликовали на уже хорошо знакомом читателям Мтааламу сайте консольных джыдаев. Вместо того, чтобы для озвучивания текстов использовать громоздкий и специфически настраемаемый синтезатор речи Festival, можно просто добавить в .bashrc

say() { mplayer "http://translate.google.com/translate_tts?q=$1"; }


а потом обращаться к ней как

say hello


Упражнения из разряда "Ваш кролик написа'л", думаю, каждый выполнит самостоятельно

Vim как читалка электронных книг

Освоив загрузку текстов для чтения с помощью консольного браузера lynx, пришел к выводу, что лучше, все-таки, хранить их не в виде html-документов, а в plain-формате. Для этого, загрузив нужное литературное произведение в lynx, нужно нажать клавишу «p» (от print) — текст будет сохранен на диск с подходящим именем. Открывать же txt-документы привычнее всего с помощью редактора vim:

vim -R foo.txt


где ключ -R означает «только для чтения». Одно плохо: при открытии текста появляется его начало, а не то место, где остановился. Оказывается, и это решаемо. Для создания закладки нужно набрать в vim m{метка}, где {метка} — любая последовательность латинских букв. В большинстве случаев достаточно набрать просто

ma


где a — метка.

Чтобы перейти к метке можно использовать `{метка} или '{метка}, например

`a


или

'a

Синхронизация времени по ssh

Симпатичная команда:

$ date --set="$(ssh [email protected] date)"


Отсюда.

Консольный скриншот

Конечно, легче всего скопировать содержимое консоли через обычный буфер обмена, но, оказывается, можно также получить его в виде картинки:

/sbin/ifconfig | convert label:@- ip.png




Изврат, но прикольно.

Консольное рисование

Не только недавно упоминавшаяся программа sdedit создает графику на основе текстовых команд. В таком режиме могут работать AutoCad, InkScape и другие серьезные редакторы. Но можно, оказывается, создавать графику вообще без графического редактора:

c=blue;convert -size 50x50 xc:$c $c.png; for i in red green yellow; do convert $c.png -background $i -rotate 20 $i.png; c=$i; done; mv yellow.png logo.png; display logo.png


Результат:



Источник.

Linux: просмотр информации об установленной оперативке

Узнать что за память установлена в Linux можно так:

dmidecode --type 17


Array Handle: 0x0015
	Error Information Handle: Not Provided
	Total Width: 64 bits
	Data Width: 64 bits
	Size: 1024 MB
	Form Factor: DIMM
	Set: None
	Locator: J2
	Bank Locator: CHAN A DIMM 0
	Type: DDR2
	Type Detail: Synchronous
	Speed: 533 MHz (1.9 ns)
	Manufacturer: XXXXXXXXXXXXXX
	Serial Number: 0x00000000
	Asset Tag: Unknown
	Part Number: XXXXXXXXXXXXXXXXXXXXXXXXX

bash: выполнение команд с пробелами в именах файлов

Иногда в качестве аргументов скрипту передаются имена файлов с пробелами. Пробелы, естественно, экранированы слешем \. Но, тем не менее, при подстановке аргумента в скрипте могут возникнуть проблемы. Например, если в такой скрипт передать имя файла с экранированными пробелами, это вызовет ошибку:

#!/bin/bash

rsync -avz /source/$1 rsync://192.168.0.1/dest/


Тем не менее, если просто выполнить в консоли…

rsync -avz /source/имя\ файла\ с\ пробелами rsync://192.168.0.1/dest/


… то проблем не возникнет.

Используем в скрипте такой трюк: временно меняем глобальную переменную IFS (в ней содержатся образцы разделителей), сменив разделитель на \n. Теперь bash будет рассматривать строку в переменной $1 как единое целое.

#!/bin/bash

tmpIFS=$IFS; IFS='\n'

rsync -avz /source/$1 rsync://192.168.0.1/dest/

IFS=$tmpIFS


Такой скрипт будет работать без проблем.