Разработка, HowTo, linux

Обновление нескольких git-репозитариев в папке

2016-03-08-22:48:31_580x134 Порой у нас в каталоге накапливается много-много git-репозитариев, которые хочется обновить в один заход. Для этого есть маленький скрипт, который обновляет все репозитарии, которые сможет найти в папке, переданной в качестве аргумента.

#!/bin/bash

if test "$#" -ne 1; then
    echo "usage: $0 <dirname>"
		echo "Find and update all git repos in specified folder"
    exit 1
fi

if [ -d $1 ]; then
	find $1 -type d -name .git | xargs -n 1 dirname | sort | while read line; do echo "Update repo $line" && pushd `pwd` > /dev/null && cd $line && git pull && popd > /dev/null; done
else
	echo "\"$1\" does not exists"
fi

Использование очень простое

$ gitup ~/projects

Репозитарий на github.

Разработка, linux

Bash: копирование файлов из списка

Copy files (screenshot) Задача: у нас есть файл со списком стилей/скриптов/бинарников (нужное подчернуть) которые надо скопировать или переместить в другое место.
Да. Такие задачи бывают. 🙂

Допустим выглядит файл как-то так

$ cat css.txt 
css/reset-ls.css
css/b-browser.css
css/reg-form.css
css/old/pop-up.css

Пути либо относительные, либо полные.

Скопировать все в новый локейшн можно простым однострочником

$ for i in $(cat css.txt); do cp $i /tmp/; done
HowTo

Многопоточная компрессия и tar

Сколько можно? 🙂 Ядер все больше и больше, а

$ tar -cjf /mnt/_backup/`date '+%Y-%m-%d_%H-%M-%S'`.tbz2 /home

как работал в один поток, так и работает.

Есть два многопоточных решения:

  • pbzip2 — параллельный bzip
  • pigz — параллельный gzip
$ tar -c /home | pbzip2 -vc -9 -p7 /mnt/_backup/`date '+%Y-%m-%d_%H-%M-%S'`.tbz2

Опцией -p# можно управлять количеством ядер, которые будет использовать архиватор. Нормально — это N-1.

Аналогично и для gzip

$ tar -c /home | pigz -vc -9 -p7 /mnt/_backup/`date '+%Y-%m-%d_%H-%M-%S'`.tbz2

С удивлением открыл для себя, что — в bash по дефолту означает stdout. И

$ tar -cf - file

будет использовать в качестве файла stdout. 🙂

HowTo

Делаем подсветку синтаксиса для less

Подсветка синтаксиса в lessДефолтный вывод less  в консоли чрезвычайно скучный. И рассматривать километры одинаковых черно-белых листингов утомляет (или зеленых если у вас Ъ-хакерский терминал :)).

Так привнесем же цветность в наши черно-белые терминал.

 $ sudo yum install python-pygments

А затем прописываем в .bashrc

export LESS="-R"
export LESSOPEN="|pygmentize -g -O encoding=utf8 %s"

Кодировку ставим на выбор. Но если чаще всего работаем в юникоде, то и оставляем юникод.

При этом будет подсвечиваться только вывод less, который вызван в дефолтной форме

 $ less filename

Вывод же less, который работает с перенаправленным вводом подсвечиваться на будет. 🙂

Проект pygments.