powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Script vim
5 сообщений из 5, страница 1 из 1
Script vim
    #37377972
Avatar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго здоровья.
Есть у меня задумка, раз в месяц собирать объем почтовых ящиков и отсылать его себе на почту. Выполняю четыре ручных действий в vim для получения удобного для себя файла. Как мне действия выполняемые в vim запихать в какой-нибудь скрипт?

1) Получаем список каталогов больше 10Mb
du -sh /var/CommuniGate/Accounts/* | sort -rn | grep M | grep -v "," > /home/user/AccSize.txt

2) С помощью VI редактируем получившийся файл:

- Удаляем все строки, содержащие 2 цифры и букву M. Остаются ящики более 99Mb
:g/\<\d\dM\>/d

- Заменяем концовку ящиков(.macnt) на @usk.domain.ru
:%s/.macnt/@usk.domain.ru/g

- Убираем начальные символы: первые 3 цифры и букву M
:%s/\<\d\d\dM\>//g

- Убираем начальные пробелы и путь (/var/CommuniGate/Accounts)
:%s/\s\/var\/CommuniGate\/Accounts\///g
...
Рейтинг: 0 / 0
Script vim
    #37382138
Avatar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ, дай какую-нибудь идею!!!
...
Рейтинг: 0 / 0
Script vim
    #37382385
tempestadept
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Удалить строки можно хоть ещё одним grep-ом, хоть sed-ом, сделать замены - sed-ом.
...
Рейтинг: 0 / 0
Script vim
    #37382833
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как скриптовать vim? Можно просто Here Document:


Код: plaintext
1.
2.
3.
4.
5.
vi -e myfile.txt << FFF
%s/\<\d\d\dM\>//g
w
q
FFF


или именно скрипт

cat script.txt
:%s/\<\d\d\dM\>//g
:w
:q


vi -s script.txt myfile.txt
...
Рейтинг: 0 / 0
Script vim
    #37383033
Фотография basename
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как пример, может поможет

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
#!/bin/bash
#
sname=mx
archdir=/tmp/arch/msize
tdate=`date '+%d-%m-%Y'`
success="Mailboxes size for each user in example.com"
email=root
#
# Define variables
mdir=/var/spool/imap
#

#echo -n "Check $archdir... press Enter:"
#read

if [ ! -d $archdir ] ; then
    mkdir -p $archdir
    chown root.root $archdir
    chmod  750  $archdir
fi

#echo -n "Purge $archdir... press Enter:"
#read

for file in `ls $archdir`
    do
      rm -f $archdir/$file
    done
              
#echo -n "Start calculate mailboxes size... press Enter:"
#read

cd $archdir

for dir in `ls $mdir --hide=lost+found --hide=stage. --hide=sync.`
    do
	for mbox in `ls $mdir/$dir/user`
	    do 
		du -sh $mdir/$dir/user/$mbox >> $archdir/mboxes-$tdate.size
	    done
    done

echo "" >> $archdir/mboxes-$tdate.size
echo "Total size:" >> $archdir/mboxes-$tdate.size
du -sh --exclude=lost+found --exclude=stage. --exclude=sync. $mdir >> $archdir/mboxes-$tdate.size

#echo -n "Start report... press Enter:"
#read

report() {
    touch $archdir/report
    echo "Mailboxes size for each user:" >> $archdir/report
    echo "" >> $archdir/report
    cat $archdir/mboxes-$tdate.size >> $archdir/report
    echo "" >> $archdir/report
    echo "`date`"  >> $archdir/report
    cat $archdir/report | mail -s "$success" $email
    }

report

#echo -n "Remove local bak files... press Enter:"
#read

for file in `ls $archdir --hide=report`
    do
      rm -f $archdir/$file
    done

#echo -n "End... press Enter:"
#read

...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Script vim
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]