Групповое переименование файлов по маске

По долгу службы встала задача переименовать группу файлов в директории по маске ( убрать у php файлов префикс и постфикс ). Исходные файлы вида aqNameClass.class.php нужно привести к виду NameClass.php Решается эта задача одной командой shell:
 for i in *.class.php; do mv "$i" `echo "$i" | sed "s/\.class//" | sed "s/^aq//"`; done 
Unix – это круто =)

Монтирование SD карты с правами пользователя в arch linux

Задача: примонтировать SD карту на 64G как дополнительный жесткий диск, чтобы не-root мог читать ее и записывать в нее. Решение:
mount -o uid=<uid> /dev/<dev_id> /mnt/<mount_point>
где, <uid> - id пользователя ( узнать можно командой id или посмотреть в /etc/passwd ) <dev_id> - устройство sd карты <mount_point> - каталог в который будет примонтирована SD-карта. в /etc/fstab добавляем опцию монтированя uid=<uid> и всё.

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

[announce]Как-то поднадоело мне постоянно редактировать вручную httpd.conf и /etc/hosts и я решил написать скрипт, который бы позволил автоматизировать этот процесс[/announce]
Вот такой скрипт:

#!/bin/sh

# Константы:
HOSTS='/tc/hosts'; # Путь к файлу hosts
HTTPD_CONF='/etc/httpd/conf/extra/httpd-vhosts.conf';

# Путь к файлу с настройками виртуальных хостов
DIR_HTTP='/srv/http/'; # Путь к директориям с хостами
IP_MASK='127.0.0.'; # Маска по которой будет формироваться новый IP
INDEX_FILE='index.php'; # Index файл в корневой папке нового виртуального хоста
DIR_LOG='/var/log/httpd/'; # Путь к папке с логами
EMAIL_ADMIN='wikide@gmail.com'; # Email админестратора

# Функция вывода ошибок
get_error() {
    echo $1;
    exit 0;
}

# Функция проверки ip
check_ip() {
    if [ "`cat $HOSTS | grep \"$ip\"`" ]; then
        echo 1;
    fi
}

# Проверяем наличея параметра с именем хоста
if [ "$1" ]; then
    if [ "$2" ]; then
        # Если задан свой IP
        new_ip=$2;
        if [ "`check_ip $new_ip`" ]; then # Проверка на наличее в файле
            get_error 'Такой ip адрес - '$new_ip' уже занят. Введите другой или пусть скрипт '$0' сам сгенерирует ip адресс для нового хоста.';
        fi;
    else
        # Получаем IP автоматически
        new_ip=$IP_MASK$((`tail -1 $HOSTS | awk '{ split($1, ip, "."); print ip[4]}'`+1));
    fi

    # Если корневая папка нового хоста уже существует
    if [ -d $DIR_HTTP$1/ ]; then
        get_error 'Директория '$1' уже есть в '$DIR_HTTP'. Подберите другое имя.';
    else
        # Создаем корневую директорию виртуального хоста
        mkdir $DIR_HTTP$1;
        echo -e "
    <html>
     <head>
      <title>New host</title>
     </head>
     <body>
        <h1>Created host '$1'!</h1>
     </body>
    </html>"
> $DIR_HTTP$1'/index.php';
  
    # Запись в hosts
        sudo echo $new_ip  $1 | sudo tee -a $HOSTS 1>/dev/null;

    # Запись в конфиг Apache
        sudo echo -e "#Create date: `date '+%F %T'`
          DirectoryIndex $INDEX_FILE
          ServerAdmin $EMAIL_ADMIN
          DocumentRoot \"$DIR_HTTP$1/\"
          ServerName $1
          ServerAlias $1
          ErrorLog \"$DIR_LOG$1.log\"
          CustomLog \"$DIR_LOG$1\" common"
| sudo tee -a $HTTPD_CONF 1>/dev/null;

        # Перезапускаем сервер
        sudo apachectl restart;

        # Выводими сообщение

        echo 'Виртуальный хост "'$1'" успешно создан'
    fi
else
    get_error 'Нужно обязательно указать название нового хоста $0 NAME_HOST [IP_HOST]';
fi

exit 0;

Скрипт запуска wifi в ARCH Linux

[announce]Небольшой скрипт для подключения к сетям wifi в ARCH linux [/announce]

 

#!/bin/bash

# Определяем интрфейс ( в моем случае это - wlan0)
if [ "$2" ]; then 
	dev=$2;
else 
	dev="wlan0";
fi

# Действие
case "$1" in
	start)
		sudo ifconfig $dev up;
		sudo wpa_supplicant -B -i$dev -c/etc/wpa_supplicant.conf;
		sleep 3;
		sudo dhcpcd $dev 2>/dev/null;
	;;
	stop)	
		sudo killall -9 dhcpcd 3>/dev/null;
		sudo killall -9 wpa_supplicant 3>/dev/null;
		sudo ifconfig $dev down;
	;;
	list)
		sudo ifconfig $dev up;
		sleep 1;
		sudo iwlist $dev scanning;
		sudo ifconfig $dev down;
	;;
	restart)
		$0 stop;
		$0 start;
	;;
	status)
		echo -n 'IP arrdess: '; ifconfig wlan0 | grep "inet addr" | awk '{print $2}' | sed 's/addr://'
		echo -n "Essid: "; iwconfig wlan0 | grep "Ralink STA" | awk '{print $4}' | sed 's/ESSID://'
	;;
	*)

	if [ "$1"  ]; then
		echo "usage: $0 {start|stop|list|restart}"; 
	else 
		echo "Restarting";
		$0 restart;
	fi

esac

exit 0



Вот такой вот скрипт :)
Идею взял с http://wiki.archlinux.org/index.php/Asus_Eee_PC_901с

 

Статус аккумулятора в приглашении командной строки

Вот очередной велосипед на тему показа статуса аккумулятора для нэтбука на ARCH Linux :) Вот такой получается скрипт на sh (думаю все ясно из комментов): #!/bin/zsh # Определяем уровень заряда аккумулятора на текущий момент remaining_bat=`cat /proc/acpi/battery/BAT0/state | grep remaining | awk {'print $3'}`; # Определяем 100% заряда для аккумулятора full_bat=`cat /proc/acpi/battery/BAT0/info | grep full | awk {'print $4'}`; # Определяем подключён сетевой провод или нет stat=`cat /proc/acpi/battery/BAT0/state | grep charging | awk {'print $3'}`; if [ $stat = 'charging' ]; then stat='+'; # Провод подключён ( ноут зяряжеается ) else if [ $stat = 'charged' ]; then stat=''; # ( Аккумулятор зяряжен) else stat='-'; # Провод не подключён ( ноут разряжается ) fi fi # получаем заряд батареи в % ( Школьная математика - Рулит! :) ) bat=$(($remaining_bat*100/$full_bat)); # основные цвета ( ESC - последовательности, подробнее - $ man console_codes ) RED="\033[31m"; # Красный YELLOW="\033[33m"; # Жёлтый WHITE="\033[38m"; # Белый # Цвет по-умолчанию DEFAULT="\033[0m"; if [ $bat -lt 10 ]; then # Если заряд аккамулятора меньше 10% (краасные цвет) result="$RED$stat$bat"; else if [ $bat -lt 30 ]; then # Если заряд аккамулятора меньше 30% (жёлтый цвет) result="$YELLOW$stat$bat"; else result="$WHTE$stat$bat"; # Заряд аккамулятора больше 30% ( белый цвет ) fi fi # Выводим результат echo -e $result%%$DEFAULT; exit 0; Далее говорим zsh о том, что нужно выводить в PROMPT результат этого скрипта. В файле ~/.zshrc в функции precmd() прописываем где-нибудь в начале:
precmd() {
   BAT=`binf.sh`;
   PROMPT="battery:(`echo $BAT`)::%{$reset_color%}%{$fg_bold[green]%}%m {$reset_color%}::%{$fg_bold[crey]%}[ %~ ]%{$rese    +t_color%}> "
.....
Как-то вот так, где binf.sh - скрипт выше. Обязательно нужно, чтобы binf.sh лежал по пути в переменной PATH, я для этой цели создал папку bin в домашней директории и сделал ссылку на файл в папке /bin В precmd() - можно запихнуть любые команды, которые будут выполнятся при обновлении командной строки.