/l3/users/4-9-2017/NT-Ladm/debian1.net.nt/root :1 :2 :3 :4 :5 :6 |
|
#ls ?i*
dir findmnt kill nisdomainname pidof ping ping6 |
#cd
|
#touch 54564 4564as 123123 sd4sdf 12423412 sdfsd45s4 4sds4sdf
|
#ls
123123 12423412 4564as 4sds4sdf 54564 d1 d2 f1 f1H install messages sd4sdf sdfsd45s4 syslog |
#shopt
autocd off cdable_vars off cdspell off checkhash off checkjobs off checkwinsize on cmdhist on compat31 off compat32 off compat40 off ... no_empty_cmd_completion off nocaseglob off nocasematch off nullglob off progcomp on promptvars on restricted_shell off shift_verbose off sourcepath on xpg_echo off |
#shopt -s extglob
|
#shopt
autocd off cdable_vars off cdspell off checkhash off checkjobs off checkwinsize on cmdhist on compat31 off compat32 off compat40 off ... no_empty_cmd_completion off nocaseglob off nocasematch off nullglob off progcomp on promptvars on restricted_shell off shift_verbose off sourcepath on xpg_echo off |
#ls +([[:digit:]])
123123 12423412 54564 |
#shopt -u extglob
|
#ls +([[:digit:]])
![]() l3script: syntax error near unexpected token `(' |
#shopt -s extglob
|
#ls +([[:digit:]])
123123 12423412 54564 |
#ls *([[:digit:]])
123123 12423412 54564 |
#rm *([[:digit:]])
|
#ls
4564as 4sds4sdf d1 d2 f1 f1H install messages sd4sdf sdfsd45s4 syslog |
#ls *([[1-9]])
![]() ls: невозможно получить доступ к *([[1-9]]): Нет такого файла или каталога |
#ls *([[:1-9:]])
![]() ls: невозможно получить доступ к *([[:1-9:]]): Нет такого файла или каталога |
#ls *([[:1-9:]])*
4564as 4sds4sdf f1 f1H install messages sd4sdf sdfsd45s4 syslog d1: f1 f2 d2: d3 |
#find . -mmin -10 -type f
./.lilalo/59212332172429021-1504596001.info ./.lilalo/.report.dat ./.lilalo/59212332172429021-1504596001.script |
#find . -mmin -20 -type f
./4sds4sdf ./.lilalo/59212332172429021-1504596001.info ./.lilalo/.report.dat ./.lilalo/2411425643282601169-1504595156.script ./.lilalo/2411425643282601169-1504595156.info ./.lilalo/59212332172429021-1504596001.script ./.bash_history ./sd4sdf ./sdfsd45s4 ./4564as |
#find . -mmin -30 -type f
./4sds4sdf ./.lilalo/59212332172429021-1504596001.info ./.lilalo/.report.dat ./.lilalo/2411425643282601169-1504595156.script ./.lilalo/2411425643282601169-1504595156.info ./.lilalo/59212332172429021-1504596001.script ./.lilalo/2411425643282601169-1504595156_1504595531_etc_skel_.bashrc.diff ./.bash_history ./sd4sdf ./sdfsd45s4 ./.viminfo ./4564as |
#find . -mmin -30 -type f -maxdept 1
![]() find: unknown predicate `-maxdept' |
#find --help
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression] default path is the current directory; default expression is -print expression may consist of: operators, options, tests, and actions: operators (decreasing precedence; -and is implicit where no others are given): ( EXPR ) ! EXPR -not EXPR EXPR1 -a EXPR2 EXPR1 -and EXPR2 EXPR1 -o EXPR2 EXPR1 -or EXPR2 EXPR1 , EXPR2 positional options (always true): -daystart -follow -regextype normal options (always true, specified before other expressions): -depth --help -maxdepth LEVELS -mindepth LEVELS -mount -noleaf --version -xdev -ignore_readdir_race -noignore_readdir_race ... -readable -writable -executable -wholename PATTERN -size N[bcwkMG] -true -type [bcdpflsD] -uid N -used N -user NAME -xtype [bcdpfls] actions: -delete -print0 -printf FORMAT -fprintf FILE FORMAT -print -fprint0 FILE -fprint FILE -ls -fls FILE -prune -quit -exec COMMAND ; -exec COMMAND {} + -ok COMMAND ; -execdir COMMAND ; -execdir COMMAND {} + -okdir COMMAND ; Report (and track progress on fixing) bugs via the findutils bug-reporting page at http://savannah.gnu.org/ or, if you have no web access, by sending email to <bug-findutils@gnu.org>. |
#find . -maxdepth 1 -mmin -30 -type f
./4sds4sdf ./.bash_history ./sd4sdf ./sdfsd45s4 ./.viminfo ./4564as |
#find . -maxdepth 1 -mmin -20 -type f
./4sds4sdf ./sd4sdf ./sdfsd45s4 ./4564as |
#find . -maxdepth 1 -mmin -20 -type f | xargs rm -v
удалён «./4sds4sdf» удалён «./sd4sdf» удалён «./sdfsd45s4» удалён «./4564as» |
#ls
d1 d2 f1 f1H install messages syslog |
#ls -l $(wich passwd)
l3script: wich: команда не найдена итого 24 drwxr-xr-x 2 root root 4096 Сен 4 12:36 d1 drwxr-xr-x 3 root root 4096 Сен 4 12:31 d2 lrwxrwxrwx 1 root root 11 Сен 4 13:51 f1 -> /root/d1/f1 -rw-r--r-- 2 root root 0 Сен 4 12:15 f1H -rw-r--r-- 1 root root 5268 Окт 13 2014 install -rw-r----- 1 root root 292 Сен 4 15:49 messages -rw-r----- 1 root root 1100 Сен 4 15:51 syslog |
#ls -l $(which passwd)
-rwsr-xr-x 1 root root 51096 Май 26 2012 /usr/bin/passwd |
#ls -l `which passwd`
-rwsr-xr-x 1 root root 51096 Май 26 2012 /usr/bin/passwd |
#echo $(($ps ax | wc -l)-4))
![]() l3script: syntax error near unexpected token `)' |
#echo $(($(ps ax | wc -l)-4))
64 |
#top
top - 11:21:36 up 3 days, 20:07, 2 users, load average: 0,00, 0,03, 0,05 Tasks: 65 total, 1 running, 58 sleeping, 6 stopped, 0 zombie %Cpu(s): 0,1 us, 0,0 sy, 0,0 ni, 99,8 id, 0,1 wa, 0,0 hi, 0,0 si, 0,0 st KiB Mem: 507368 total, 312120 used, 195248 free, 86952 buffers KiB Swap: 0 total, 0 used, 0 free, 115312 cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 10648 832 696 S 0,0 0,2 0:06.32 init 2 root 20 0 0 0 0 S 0,0 0,0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0,0 0,0 0:00.52 ksoftirqd/0 5 root 20 0 0 0 0 S 0,0 0,0 0:00.00 kworker/u:0 ... 2303 root 20 0 18368 968 812 S 0,0 0,2 0:00.00 getty 2304 root 20 0 18368 968 812 S 0,0 0,2 0:00.00 getty 2549 root 20 0 0 0 0 S 0,0 0,0 0:11.78 kworker/0:1 3371 root 20 0 0 0 0 S 0,0 0,0 0:00.71 flush-202:0 3414 root 20 0 51404 13m 1740 S 0,0 2,7 3:42.79 l3-agent 7051 user 20 0 18168 472 308 S 0,0 0,1 0:00.08 script 7052 user 20 0 24396 3160 1836 S 0,0 0,6 0:00.54 l3script 7181 user 20 0 34356 3372 2108 T 0,0 0,7 0:00.02 vi 7253 user 20 0 34428 3452 2132 T 0,0 0,7 0:00.04 vi 7346 user 20 0 34416 3748 2416 T 0,0 0,7 0:00.06 vi |
#echo $[$(ps ax | wc -l)-4]
64 |
#du -sh /* >2 /dev/null
![]() du: невозможно получить доступ к «/proc/10300/task/10300/fd/11»: Нет такого файла или каталога du: невозможно получить доступ к «/proc/10300/task/10300/fdinfo/11»: Нет такого файла или каталога du: невозможно получить доступ к «/proc/10300/fd/11»: Нет такого файла или каталога du: невозможно получить доступ к «/proc/10300/fdinfo/11»: Нет такого файла или каталога |
#du -sh /* 2> /dev/null >f1
![]() |
#ls
2 d1 d2 f1 f1H install messages syslog |
#du -sh /* 2> /dev/null >f1
![]() |
#set -o | wc -l
27 |
#set -o noclobber
|
#du -sh /* 2> /dev/null >f1
![]() |
#du -sh /* 2> /dev/null >f1
![]() |
#du -sh /* 1>f1 2> /dev/null
![]() |
#du -sh /* 1>f1
![]() du: невозможно получить доступ к «/proc/10478/task/10478/fd/11»: Нет такого файла или каталога du: невозможно получить доступ к «/proc/10478/task/10478/fdinfo/11»: Нет такого файла или каталога du: невозможно получить доступ к «/proc/10478/fd/11»: Нет такого файла или каталога du: невозможно получить доступ к «/proc/10478/fdinfo/11»: Нет такого файла или каталога |
#du -sh /* 1>f1
du: невозможно получить доступ к «/proc/10507/task/10507/fd/11»: Нет такого файла или каталога du: невозможно получить доступ к «/proc/10507/task/10507/fdinfo/11»: Нет такого файла или каталога du: невозможно получить доступ к «/proc/10507/fd/11»: Нет такого файла или каталога du: невозможно получить доступ к «/proc/10507/fdinfo/11»: Нет такого файла или каталога |
#du -sh /* 1>f1
![]() l3script: f1: не могу переписать уже существующий файл |
#set +o noclobber
|
#ls
![]() ls lsattr lsblk lscpu lsinitramfs lsmod lspci lspgpot lsusb |
#ls
![]() ls lsattr lsblk lscpu lsinitramfs lsmod lspci lspgpot lsusb |
#lsattr f1
![]() lsattr: Неподдерживаемая операция While reading flags on f1 |
#lsattr files
![]() lsattr: Нет такого файла или каталога while trying to stat files |
#lsattr f1
![]() lsattr: Неподдерживаемая операция While reading flags on f1 |
#ls
2 d1 d2 f1 f1H install messages syslog |
#ls -l
итого 32 -rw-r--r-- 1 root root 255 Сен 5 11:27 2 drwxr-xr-x 2 root root 4096 Сен 4 12:36 d1 drwxr-xr-x 3 root root 4096 Сен 4 12:31 d2 lrwxrwxrwx 1 root root 11 Сен 4 13:51 f1 -> /root/d1/f1 -rw-r--r-- 2 root root 255 Сен 5 11:34 f1H -rw-r--r-- 1 root root 5268 Окт 13 2014 install -rw-r----- 1 root root 292 Сен 4 15:49 messages -rw-r----- 1 root root 1100 Сен 4 15:51 syslog |
#lsattr f1h
![]() lsattr: Нет такого файла или каталога while trying to stat f1h |
#lsattr f1H
-------------e-- f1H |
#lsattr +a f1H
![]() lsattr: Нет такого файла или каталога while trying to stat +a -------------e-- f1H |
#chattr +a f1H
|
#ls -l
итого 32 -rw-r--r-- 1 root root 255 Сен 5 11:27 2 drwxr-xr-x 2 root root 4096 Сен 4 12:36 d1 drwxr-xr-x 3 root root 4096 Сен 4 12:31 d2 lrwxrwxrwx 1 root root 11 Сен 4 13:51 f1 -> /root/d1/f1 -rw-r--r-- 2 root root 255 Сен 5 11:34 f1H -rw-r--r-- 1 root root 5268 Окт 13 2014 install -rw-r----- 1 root root 292 Сен 4 15:49 messages -rw-r----- 1 root root 1100 Сен 4 15:51 syslog |
#ls -l >f1H
![]() l3script: f1H: Операция не позволяется |
#ls -l >>f1H
|
#chattr -a f1H
|
#chattr +i f1H
|
#rm f1H
![]() rm: невозможно удалить «f1H»: Операция не позволяется |
#chattr
![]() Usage: chattr [-RVf] [-+=AaCcDdeijsSu] [-v version] files... |
#chattr help
![]() Must use '-v', =, - or + |
#chattr --help
![]() Usage: chattr [-RVf] [-+=AaCcDdeijsSu] [-v version] files... |
#lsattr
lsattr: Неподдерживаемая операция While reading flags on ./f1 ----i--------e-- ./f1H -------------e-- ./d2 -------------e-- ./messages -------------e-- ./d1 -------------e-- ./2 -------------e-- ./syslog -------------e-- ./install |
#lsattr --help
![]() lsattr: неверный ключ -- «-» Usage: lsattr [-RVadlv] [files...] |
#chattr -i f1H
|
#la *a
![]() l3script: la: команда не найдена |
#cp /etc/pa
![]() pam.conf pam.d/ passwd passwd- |
#cp /etc/passwd .
|
#ls
2 d1 d2 f1 f1H install messages passwd syslog |
#cat passwd
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh lp:x:7:7:lp:/var/spool/lpd:/bin/sh mail:x:8:8:mail:/var/mail:/bin/sh news:x:9:9:news:/var/spool/news:/bin/sh ... list:x:38:38:Mailing List Manager:/var/list:/bin/sh irc:x:39:39:ircd:/var/run/ircd:/bin/sh gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh nobody:x:65534:65534:nobody:/nonexistent:/bin/sh libuuid:x:100:101::/var/lib/libuuid:/bin/sh Debian-exim:x:101:103::/var/spool/exim4:/bin/false user:x:1000:1000:user,,,:/home/user:/bin/bash sshd:x:102:65534::/var/run/sshd:/usr/sbin/nologin ivan:x:1001:1001::/home/ivan:/bin/bash petr:x:1002:1002::/home/petr:/bin/bash |
#cat passwd | grep 100
libuuid:x:100:101::/var/lib/libuuid:/bin/sh user:x:1000:1000:user,,,:/home/user:/bin/bash ivan:x:1001:1001::/home/ivan:/bin/bash petr:x:1002:1002::/home/petr:/bin/bash |
#cat passwd | grep ^ivan
ivan:x:1001:1001::/home/ivan:/bin/bash |
#cat passwd | grep bash$
root:x:0:0:root:/root:/bin/bash user:x:1000:1000:user,,,:/home/user:/bin/bash ivan:x:1001:1001::/home/ivan:/bin/bash petr:x:1002:1002::/home/petr:/bin/bash |
#cat passwd | grep bash$
root:x:0:0:root:/root:/bin/bash user:x:1000:1000:user,,,:/home/user:/bin/bash ivan:x:1001:1001::/home/ivan:/bin/bash petr:x:1002:1002::/home/petr:/bin/bash |
#cat passwd | grep bash$
root:x:0:0:root:/root:/bin/bash user:x:1000:1000:user,,,:/home/user:/bin/bash ivan:x:1001:1001::/home/ivan:/bin/bash petr:x:1002:1002::/home/petr:/bin/bash |
#cat passwd | grep bash$1
root:x:0:0:root:/root:/bin/bash user:x:1000:1000:user,,,:/home/user:/bin/bash ivan:x:1001:1001::/home/ivan:/bin/bash petr:x:1002:1002::/home/petr:/bin/bash |
#cat passwd | grep bash$2
root:x:0:0:root:/root:/bin/bash user:x:1000:1000:user,,,:/home/user:/bin/bash ivan:x:1001:1001::/home/ivan:/bin/bash petr:x:1002:1002::/home/petr:/bin/bash |
#cat passwd | grep bash$a
root:x:0:0:root:/root:/bin/bash user:x:1000:1000:user,,,:/home/user:/bin/bash ivan:x:1001:1001::/home/ivan:/bin/bash petr:x:1002:1002::/home/petr:/bin/bash |
#cat passwd | grep bash$f
root:x:0:0:root:/root:/bin/bash user:x:1000:1000:user,,,:/home/user:/bin/bash ivan:x:1001:1001::/home/ivan:/bin/bash petr:x:1002:1002::/home/petr:/bin/bash |
#cat passwd | grep bash$
root:x:0:0:root:/root:/bin/bash user:x:1000:1000:user,,,:/home/user:/bin/bash ivan:x:1001:1001::/home/ivan:/bin/bash petr:x:1002:1002::/home/petr:/bin/bash |
#f=1
|
#cat passwd | grep bash$f
![]() |
#cat passwd | grep 'bash$f'
![]() |
#cat passwd | grep 'bash$'
root:x:0:0:root:/root:/bin/bash user:x:1000:1000:user,,,:/home/user:/bin/bash ivan:x:1001:1001::/home/ivan:/bin/bash petr:x:1002:1002::/home/petr:/bin/bash |
#cat passwd | grep 'h..e'
user:x:1000:1000:user,,,:/home/user:/bin/bash ivan:x:1001:1001::/home/ivan:/bin/bash petr:x:1002:1002::/home/petr:/bin/bash |
#cat passwd | grep '0{2}'
![]() |
#cat passwd | grep '0{2,}'
![]() |
#cat passwd | egrep '0{2,}'
libuuid:x:100:101::/var/lib/libuuid:/bin/sh user:x:1000:1000:user,,,:/home/user:/bin/bash ivan:x:1001:1001::/home/ivan:/bin/bash petr:x:1002:1002::/home/petr:/bin/bash |
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh lp:x:7:7:lp:/var/spool/lpd:/bin/sh mail:x:8:8:mail:/var/mail:/bin/sh news:x:9:9:news:/var/spool/news:/bin/sh uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh proxy:x:13:13:proxy:/bin:/bin/sh www-data:x:33:33:www-data:/var/www:/bin/sh backup:x:34:34:backup:/var/backups:/bin/sh list:x:38:38:Mailing List Manager:/var/list:/bin/sh irc:x:39:39:ircd:/var/run/ircd:/bin/sh gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh nobody:x:65534:65534:nobody:/nonexistent:/bin/sh libuuid:x:100:101::/var/lib/libuuid:/bin/sh Debian-exim:x:101:103::/var/spool/exim4:/bin/false user:x:1000:1000:user,,,:/home/user:/bin/bash sshd:x:102:65534::/var/run/sshd:/usr/sbin/nologin ivan:x:1001:1001::/home/ivan:/bin/bash petr:x:1002:1002::/home/petr:/bin/bash
Время первой команды журнала | 09:21:44 2017- 9- 5 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Время последней команды журнала | 14:35:48 2017- 9- 5 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Количество командных строк в журнале | 101 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Процент команд с ненулевым кодом завершения, % | 30.69 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Процент синтаксически неверно набранных команд, % | 0.99 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Суммарное время работы с терминалом *, час | 1.27 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Количество командных строк в единицу времени, команда/мин | 1.32 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Частота использования команд |
|
В журнал автоматически попадают все команды, данные в любом терминале системы.
Для того чтобы убедиться, что журнал на текущем терминале ведётся, и команды записываются, дайте команду w. В поле WHAT, соответствующем текущему терминалу, должна быть указана программа script.
Команды, при наборе которых были допущены синтаксические ошибки, выводятся перечёркнутым текстом:
$ l s-l bash: l: command not found |
Если код завершения команды равен нулю, команда была выполнена без ошибок. Команды, код завершения которых отличен от нуля, выделяются цветом.
$ test 5 -lt 4 |
Команды, ход выполнения которых был прерван пользователем, выделяются цветом.
$ find / -name abc find: /home/devi-orig/.gnome2: Keine Berechtigung find: /home/devi-orig/.gnome2_private: Keine Berechtigung find: /home/devi-orig/.nautilus/metafiles: Keine Berechtigung find: /home/devi-orig/.metacity: Keine Berechtigung find: /home/devi-orig/.inkscape: Keine Berechtigung ^C |
Команды, выполненные с привилегиями суперпользователя, выделяются слева красной чертой.
# id uid=0(root) gid=0(root) Gruppen=0(root) |
Изменения, внесённые в текстовый файл с помощью редактора, запоминаются и показываются в журнале в формате ed. Строки, начинающиеся символом "<", удалены, а строки, начинающиеся символом ">" -- добавлены.
$ vi ~/.bashrc
|
Для того чтобы изменить файл в соответствии с показанными в диффшоте изменениями, можно воспользоваться командой patch. Нужно скопировать изменения, запустить программу patch, указав в качестве её аргумента файл, к которому применяются изменения, и всавить скопированный текст:
$ patch ~/.bashrc |
Для того чтобы получить краткую справочную информацию о команде, нужно подвести к ней мышь. Во всплывающей подсказке появится краткое описание команды.
Если справочная информация о команде есть, команда выделяется голубым фоном, например: vi. Если справочная информация отсутствует, команда выделяется розовым фоном, например: notepad.exe. Справочная информация может отсутствовать в том случае, если (1) команда введена неверно; (2) если распознавание команды LiLaLo выполнено неверно; (3) если информация о команде неизвестна LiLaLo. Последнее возможно для редких команд.
Большие, в особенности многострочные, всплывающие подсказки лучше всего показываются браузерами KDE Konqueror, Apple Safari и Microsoft Internet Explorer. В браузерах Mozilla и Firefox они отображаются не полностью, а вместо перевода строки выводится специальный символ.
Время ввода команды, показанное в журнале, соответствует времени начала ввода командной строки, которое равно тому моменту, когда на терминале появилось приглашение интерпретатора
Имя терминала, на котором была введена команда, показано в специальном блоке. Этот блок показывается только в том случае, если терминал текущей команды отличается от терминала предыдущей.
Вывод не интересующих вас в настоящий момент элементов журнала, таких как время, имя терминала и других, можно отключить. Для этого нужно воспользоваться формой управления журналом вверху страницы.
Небольшие комментарии к командам можно вставлять прямо из командной строки. Комментарий вводится прямо в командную строку, после символов #^ или #v. Символы ^ и v показывают направление выбора команды, к которой относится комментарий: ^ - к предыдущей, v - к следующей. Например, если в командной строке было введено:
$ whoami
user
$ #^ Интересно, кто я?в журнале это будет выглядеть так:
$ whoami
user
Интересно, кто я? |
Если комментарий содержит несколько строк, его можно вставить в журнал следующим образом:
$ whoami
user
$ cat > /dev/null #^ Интересно, кто я?
Программа whoami выводит имя пользователя, под которым мы зарегистрировались в системе. - Она не может ответить на вопрос о нашем назначении в этом мире.В журнале это будет выглядеть так:
$ whoami user
|
Комментарии, не относящиеся непосредственно ни к какой из команд, добавляются точно таким же способом, только вместо симолов #^ или #v нужно использовать символы #=
1 2 3 4Группы команд, выполненных на разных терминалах, разделяются специальной линией. Под этой линией в правом углу показано имя терминала, на котором выполнялись команды. Для того чтобы посмотреть команды только одного сенса, нужно щёкнуть по этому названию.
LiLaLo (L3) расшифровывается как Live Lab Log.
Программа разработана для повышения эффективности обучения Unix/Linux-системам.
(c) Игорь Чубин, 2004-2008