/l3/users/07-09-2009/nt-ladm/debian1.net.nt/user :1 :2 :3 :4 :5 :6 :7 :8 :9 :10 :11 :12 :13 :14 :15 :16 :17 |
|
$sudo pstree -pl | less
|
$CHEREP=123
|
$echo $CHEREP
123 |
$bash
|
$echo $$
![]() 23549 |
$echo $CO
![]() init(1)-+-cron(1216)do pstree -pl | less |-events/0(4) |-gdm(1204)---gdm(1205)-+-Xvnc(1215) | `-fluxbox(20268)-+-ssh-agent(20305) | `-xterm(20309)---script(20313)---script(20361)---bash(20362)---putty(20399) |-getty(1238) |-getty(1239) |-getty(1240) |-getty(1241) |-getty(1242) ... ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
$echo $CO
![]() init(1)-+-cron(1216)do pstree -pl | less |-events/0(4) |-gdm(1204)---gdm(1205)-+-Xvnc(1215) | `-fluxbox(20268)-+-ssh-agent(20305) | `-xterm(20309)---script(20313)---script(20361)---bash(20362)---putty(20399) |-getty(1238) |-getty(1239) |-getty(1240) |-getty(1241) |-getty(1242) ... ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ |
$echo $CO
![]() |
$ecport
![]() bash: ecport: command not found |
$ex
|
$bash
|
$echo $
![]() $_ $BASH_VERSION $HOME $LS_COLORS $RANDOM $BASH $CHEREP $HOSTNAME $MACHTYPE $SECONDS $bash205 $COLUMNS $HOSTTYPE $MAIL $SHELL $bash205b $COMP_WORDBREAKS $IFS $MAILCHECK $SHELLOPTS $bash3 $DIRSTACK $L3_HOME $OPTERR $SHLVL $BASH_ARGC $editor_file $L3_PARENT_TTY $OPTIND $SSH_CLIENT $BASH_ARGV $editor_name $L3_SESSION_ID $OSTYPE $SSH_CONNECTION $BASH_COMMAND $EUID $L3_TAMPERED_EDITORS $PATH $SSH_TTY $BASH_COMPLETION $GROUPS $LANG $PIPESTATUS $STY $BASH_COMPLETION_DIR $HISTCMD $LESSCLOSE $PPID $TERM $BASH_LINENO $HISTCONTROL $LESSOPEN $PS1 $TERMCAP $BASH_SOURCE $HISTFILE $LINENO $PS2 $UID $BASH_SUBSHELL $HISTFILESIZE $LINES $PS4 $USER $BASH_VERSINFO $HISTSIZE $LOGNAME $PWD $WINDOW |
$echo $CHEREP
![]() 123 |
$echo $
![]() $_ $BASH_VERSION $HOME $LS_COLORS $RANDOM $BASH $CHEREP $HOSTNAME $MACHTYPE $SECONDS $bash205 $COLUMNS $HOSTTYPE $MAIL $SHELL $bash205b $COMP_WORDBREAKS $IFS $MAILCHECK $SHELLOPTS $bash3 $DIRSTACK $L3_HOME $OPTERR $SHLVL $BASH_ARGC $editor_file $L3_PARENT_TTY $OPTIND $SSH_CLIENT $BASH_ARGV $editor_name $L3_SESSION_ID $OSTYPE $SSH_CONNECTION $BASH_COMMAND $EUID $L3_TAMPERED_EDITORS $PATH $SSH_TTY $BASH_COMPLETION $GROUPS $LANG $PIPESTATUS $STY $BASH_COMPLETION_DIR $HISTCMD $LESSCLOSE $PPID $TERM $BASH_LINENO $HISTCONTROL $LESSOPEN $PS1 $TERMCAP $BASH_SOURCE $HISTFILE $LINENO $PS2 $UID $BASH_SUBSHELL $HISTFILESIZE $LINES $PS4 $USER $BASH_VERSINFO $HISTSIZE $LOGNAME $PWD $WINDOW |
$echo $CHEREP
123 |
$unset CHEREP
|
$echo $
$_ $BASH_VERSION $HOSTNAME $MACHTYPE $SECONDS $BASH $COLUMNS $HOSTTYPE $MAIL $SHELL $bash205 $COMP_WORDBREAKS $IFS $MAILCHECK $SHELLOPTS $bash205b $DIRSTACK $L3_HOME $OPTERR $SHLVL $bash3 $editor_file $L3_PARENT_TTY $OPTIND $SSH_CLIENT $BASH_ARGC $editor_name $L3_SESSION_ID $OSTYPE $SSH_CONNECTION $BASH_ARGV $EUID $L3_TAMPERED_EDITORS $PATH $SSH_TTY $BASH_COMMAND $GROUPS $LANG $PIPESTATUS $STY $BASH_COMPLETION $HISTCMD $LESSCLOSE $PPID $TERM $BASH_COMPLETION_DIR $HISTCONTROL $LESSOPEN $PS1 $TERMCAP $BASH_LINENO $HISTFILE $LINENO $PS2 $UID $BASH_SOURCE $HISTFILESIZE $LINES $PS4 $USER $BASH_SUBSHELL $HISTSIZE $LOGNAME $PWD $WINDOW $BASH_VERSINFO $HOME $LS_COLORS $RANDOM |
$readonly CHEREP=123
|
$echo $
![]() $_ $BASH_VERSION $HOME $LS_COLORS $RANDOM $BASH $CHEREP $HOSTNAME $MACHTYPE $SECONDS $bash205 $COLUMNS $HOSTTYPE $MAIL $SHELL $bash205b $COMP_WORDBREAKS $IFS $MAILCHECK $SHELLOPTS $bash3 $DIRSTACK $L3_HOME $OPTERR $SHLVL $BASH_ARGC $editor_file $L3_PARENT_TTY $OPTIND $SSH_CLIENT $BASH_ARGV $editor_name $L3_SESSION_ID $OSTYPE $SSH_CONNECTION $BASH_COMMAND $EUID $L3_TAMPERED_EDITORS $PATH $SSH_TTY $BASH_COMPLETION $GROUPS $LANG $PIPESTATUS $STY $BASH_COMPLETION_DIR $HISTCMD $LESSCLOSE $PPID $TERM $BASH_LINENO $HISTCONTROL $LESSOPEN $PS1 $TERMCAP $BASH_SOURCE $HISTFILE $LINENO $PS2 $UID $BASH_SUBSHELL $HISTFILESIZE $LINES $PS4 $USER $BASH_VERSINFO $HISTSIZE $LOGNAME $PWD $WINDOW |
$echo $
$ |
$echo $CHEREP
123 |
$CHEREP=234
![]() bash: CHEREP: readonly variable |
$unset CHEREP
![]() bash: unset: CHEREP: cannot unset: readonly variable |
$bash
|
$export CHEREP
|
$lynx http://nt.ua/doc/ip
![]() |
$ps aux | grep lynx
user 24103 0.0 0.6 9692 4148 ttyp5 T 10:16 0:00 lynx http://nt.ua/doc/ip user 24112 0.0 0.1 4620 740 ttyp5 R+ 10:16 0:00 grep lynx |
$kill -9 24103
[1]+ Killed lynx http://nt.ua/doc/ip |
$lynx -dump
|
$lynx -dump http://nt.ua/doc/ip | grep ^MY
MY IP:77.123.86.60 |
$lynx -dump http://nt.ua/doc/ip | grep ^MY | awk -F ':' '{print $2}'
77.123.86.60 |
$myip {} (lynx -dump http://nt.ua/doc/ip | grep ^MY | awk -F ':' '{print $2}')
![]() bash: syntax error near unexpected token `(' |
$myip {} ( lynx -dump http://nt.ua/doc/ip | grep ^MY | awk -F ':' '{print $2}'
![]() bash: syntax error near unexpected token `(' |
$myip {} (
![]() bash: syntax error near unexpected token `(' |
$myip {}
![]() bash: myip: command not found |
$myip () {
![]() > |
$myip () { lynx -dump http://nt.ua/doc/ip | grep ^MY | awk -F ':' '{print $2}';
|
$myip
77.123.86.60 |
$unset -f myip
|
$myip
![]() bash: myip: command not found |
$vim .bash_profile
--- /tmp/l3-saved-23380.14490.27103 2009-09-09 10:20:27.000000000 +0300 +++ .bash_profile 2009-09-09 10:20:53.000000000 +0300 @@ -16,3 +16,4 @@ PATH=~/bin:"${PATH}" fi +export CHEREP=cherepenin |
$echo "myip () { lynx -dump http://nt.ua/doc/ip | grep ^MY | awk -F ':' '{print $2}'; }" >> .bash_profile
|
$vim .bash_profile
|
$bash
|
$echo $
![]() $_ $BASH_VERSION $HOME $LS_COLORS $RANDOM $BASH $CHEREP $HOSTNAME $MACHTYPE $SECONDS $bash205 $COLUMNS $HOSTTYPE $MAIL $SHELL $bash205b $COMP_WORDBREAKS $IFS $MAILCHECK $SHELLOPTS $bash3 $DIRSTACK $L3_HOME $OPTERR $SHLVL $BASH_ARGC $editor_file $L3_PARENT_TTY $OPTIND $SSH_CLIENT $BASH_ARGV $editor_name $L3_SESSION_ID $OSTYPE $SSH_CONNECTION $BASH_COMMAND $EUID $L3_TAMPERED_EDITORS $PATH $SSH_TTY $BASH_COMPLETION $GROUPS $LANG $PIPESTATUS $STY $BASH_COMPLETION_DIR $HISTCMD $LESSCLOSE $PPID $TERM $BASH_LINENO $HISTCONTROL $LESSOPEN $PS1 $TERMCAP $BASH_SOURCE $HISTFILE $LINENO $PS2 $UID $BASH_SUBSHELL $HISTFILESIZE $LINES $PS4 $USER $BASH_VERSINFO $HISTSIZE $LOGNAME $PWD $WINDOW |
$echo $CHEREP
![]() 123 |
$echo $
![]() $_ $BASH_VERSION $HOME $LS_COLORS $RANDOM $BASH $CHEREP $HOSTNAME $MACHTYPE $SECONDS $bash205 $COLUMNS $HOSTTYPE $MAIL $SHELL $bash205b $COMP_WORDBREAKS $IFS $MAILCHECK $SHELLOPTS $bash3 $DIRSTACK $L3_HOME $OPTERR $SHLVL $BASH_ARGC $editor_file $L3_PARENT_TTY $OPTIND $SSH_CLIENT $BASH_ARGV $editor_name $L3_SESSION_ID $OSTYPE $SSH_CONNECTION $BASH_COMMAND $EUID $L3_TAMPERED_EDITORS $PATH $SSH_TTY $BASH_COMPLETION $GROUPS $LANG $PIPESTATUS $STY $BASH_COMPLETION_DIR $HISTCMD $LESSCLOSE $PPID $TERM $BASH_LINENO $HISTCONTROL $LESSOPEN $PS1 $TERMCAP $BASH_SOURCE $HISTFILE $LINENO $PS2 $UID $BASH_SUBSHELL $HISTFILESIZE $LINES $PS4 $USER $BASH_VERSINFO $HISTSIZE $LOGNAME $PWD $WINDOW |
$echo $CHEREP
123 |
$. .bash_profile
![]() l3-agent is already running: pid=1406; pidfile=/home/user/.lilalo/l3-agent.pid |
$. .bash_profile
l3-agent is already running: pid=1406; pidfile=/home/user/.lilalo/l3-agent.pid |
$echo $
![]() $_ $BASH_VERSION $HOME $LS_COLORS $RANDOM $BASH $CHEREP $HOSTNAME $MACHTYPE $SECONDS $bash205 $COLUMNS $HOSTTYPE $MAIL $SHELL $bash205b $COMP_WORDBREAKS $IFS $MAILCHECK $SHELLOPTS $bash3 $DIRSTACK $L3_HOME $OPTERR $SHLVL $BASH_ARGC $editor_file $L3_PARENT_TTY $OPTIND $SSH_CLIENT $BASH_ARGV $editor_name $L3_SESSION_ID $OSTYPE $SSH_CONNECTION $BASH_COMMAND $EUID $L3_TAMPERED_EDITORS $PATH $SSH_TTY $BASH_COMPLETION $GROUPS $LANG $PIPESTATUS $STY $BASH_COMPLETION_DIR $HISTCMD $LESSCLOSE $PPID $TERM $BASH_LINENO $HISTCONTROL $LESSOPEN $PS1 $TERMCAP $BASH_SOURCE $HISTFILE $LINENO $PS2 $UID $BASH_SUBSHELL $HISTFILESIZE $LINES $PS4 $USER $BASH_VERSINFO $HISTSIZE $LOGNAME $PWD $WINDOW |
$echo $CHEREP
![]() cherepenin |
$echo $
![]() $_ $BASH_VERSION $HOME $LS_COLORS $RANDOM $BASH $CHEREP $HOSTNAME $MACHTYPE $SECONDS $bash205 $COLUMNS $HOSTTYPE $MAIL $SHELL $bash205b $COMP_WORDBREAKS $IFS $MAILCHECK $SHELLOPTS $bash3 $DIRSTACK $L3_HOME $OPTERR $SHLVL $BASH_ARGC $editor_file $L3_PARENT_TTY $OPTIND $SSH_CLIENT $BASH_ARGV $editor_name $L3_SESSION_ID $OSTYPE $SSH_CONNECTION $BASH_COMMAND $EUID $L3_TAMPERED_EDITORS $PATH $SSH_TTY $BASH_COMPLETION $GROUPS $LANG $PIPESTATUS $STY $BASH_COMPLETION_DIR $HISTCMD $LESSCLOSE $PPID $TERM $BASH_LINENO $HISTCONTROL $LESSOPEN $PS1 $TERMCAP $BASH_SOURCE $HISTFILE $LINENO $PS2 $UID $BASH_SUBSHELL $HISTFILESIZE $LINES $PS4 $USER $BASH_VERSINFO $HISTSIZE $LOGNAME $PWD $WINDOW |
$echo $CHEREP
cherepenin |
$vim .bash_profile
![]() --- /tmp/l3-saved-24360.4806.32633 2009-09-09 10:23:06.000000000 +0300 +++ .bash_profile 2009-09-09 10:23:23.000000000 +0300 @@ -17,4 +17,4 @@ fi export CHEREP=cherepenin -myip () { lynx -dump http://nt.ua/doc/ip | grep ^MY | awk -F ':' '{print }'; } +myip () { lynx -dump http://nt.ua/doc/ip | grep ^MY | awk -F ':' '{print$2}'; } |
$. .bash_profile
![]() l3-agent is already running: pid=1406; pidfile=/home/user/.lilalo/l3-agent.pid |
$. .bash_profile
l3-agent is already running: pid=1406; pidfile=/home/user/.lilalo/l3-agent.pid |
$vim script
![]() --- /dev/null 2009-09-07 08:26:30.044750476 +0300 +++ script 2009-09-09 10:26:31.000000000 +0300 @@ -0,0 +1,2 @@ +#!/bin/bash + |
$vim script
![]() --- /tmp/l3-saved-24360.1609.8847 2009-09-09 10:26:33.000000000 +0300 +++ script 2009-09-09 10:29:06.000000000 +0300 @@ -1,2 +1,7 @@ #!/bin/bash - +echo "Script name: $0 " +echo "First positional parameter: $1" +echo "Second positional parameter: $2" +echo "Third positional parameter: $3" +echo "Four positional parameter: $4" +echo "Five positional parameter: $5" |
$chmod +x script
![]() [user@debian1:~]$ ls -l script -rw-r--r-- 1 user user 225 2009-09-09 10:29 script |
$chmod +x script
[user@debian1:~]$ ls -l script -rw-r--r-- 1 user user 225 2009-09-09 10:29 script |
$./script
![]() Script name: ./script First positional parameter: Second positional parameter: Third positional parameter: Four positional parameter: Five positional parameter: |
$./script
Script name: ./script First positional parameter: Second positional parameter: Third positional parameter: Four positional parameter: Five positional parameter: |
$./script Sergey Cherepenin unix instructor
![]() Script name: ./script First positional parameter: Sergey Second positional parameter: Cherepenin Third positional parameter: unix Four positional parameter: instructor Five positional parameter: |
$./script Sergey Cherepenin unix instructor
Script name: ./script First positional parameter: Sergey Second positional parameter: Cherepenin Third positional parameter: unix Four positional parameter: instructor Five positional parameter: |
$cat script
![]() #!/bin/bash echo "Script name: $0 " echo "First positional parameter: $1" echo "Second positional parameter: $2" echo "Third positional parameter: $3" echo "Four positional parameter: $4" echo "Five positional parameter: $5" |
$cat script
#!/bin/bash echo "Script name: $0 " echo "First positional parameter: $1" echo "Second positional parameter: $2" echo "Third positional parameter: $3" echo "Four positional parameter: $4" echo "Five positional parameter: $5" |
$ssh 192.168.16.3 -l root
![]() The authenticity of host '192.168.16.3 (192.168.16.3)' can't be established. RSA key fingerprint is 51:5b:32:d8:70:19:6d:04:c7:b4:11:49:13:74:dc:bc. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.16.3' (RSA) to the list of known hosts. root@192.168.16.3's password: Last login: Tue Sep 8 19:28:35 2009 from pleased.page.volia.net Linux debiant 2.6.18-5-xen-686 #1 SMP Fri Jun 1 05:05:24 UTC 2007 i686 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. l3-agent is already running: pid=3719; pidfile=/root/.lilalo/l3-agent.pid |
$ssh 192.168.16.3 -l root
The authenticity of host '192.168.16.3 (192.168.16.3)' can't be established. RSA key fingerprint is 51:5b:32:d8:70:19:6d:04:c7:b4:11:49:13:74:dc:bc. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.16.3' (RSA) to the list of known hosts. root@192.168.16.3's password: Last login: Tue Sep 8 19:28:35 2009 from pleased.page.volia.net Linux debiant 2.6.18-5-xen-686 #1 SMP Fri Jun 1 05:05:24 UTC 2007 i686 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. l3-agent is already running: pid=3719; pidfile=/root/.lilalo/l3-agent.pid |
#/etc/init.d/gdm restart
![]() Stopping GNOME Display Manager: gdm. Starting GNOME Display Manager: gdm. |
#/etc/init.d/gdm restart
Stopping GNOME Display Manager: gdm. Starting GNOME Display Manager: gdm. |
#/etc/init.d/gdm restart
Stopping GNOME Display Manager: gdm. Starting GNOME Display Manager: gdm. |
#!/bin/bash echo "Script name: $0 " echo "First positional parameter: $1" echo "Second positional parameter: $2" echo "Third positional parameter: $3" echo "Four positional parameter: $4" echo "Five positional parameter: $5"
Время первой команды журнала | 09:07:33 2009- 9- 9 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Время последней команды журнала | 09:57:47 2009- 9- 9 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Количество командных строк в журнале | 101 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Процент команд с ненулевым кодом завершения, % | 10.89 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Процент синтаксически неверно набранных команд, % | 3.96 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Суммарное время работы с терминалом *, час | 0.84 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Количество командных строк в единицу времени, команда/мин | 2.01 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Частота использования команд |
|
В журнал автоматически попадают все команды, данные в любом терминале системы.
Для того чтобы убедиться, что журнал на текущем терминале ведётся, и команды записываются, дайте команду 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