Журнал лабораторных работ

Содержание

Журнал

Среда (09/30/15)

/dev/pts/0
09:26:13
#c=10

09:28:28
#echo $c
10
09:28:36
#bash
root@debian6:~# l3script
09:29:54
#echo $c

/dev/pts/1
09:29:54
#echo $c

/dev/pts/0
09:30:09
#set | grep ^c

/dev/pts/1
09:30:09
#set | grep ^c

/dev/pts/0
09:30:40
#c=10

/dev/pts/1
09:30:40
#c=10

/dev/pts/0
09:30:54
#echo $c
10
/dev/pts/1
09:30:54
#echo $c
10
/dev/pts/0
09:30:56
#set | grep ^c
c=10
/dev/pts/1
09:30:56
#set | grep ^c
c=10
/dev/pts/0
09:30:59
#export c

/dev/pts/1
09:30:59
#export c

/dev/pts/0
09:31:37
#env
SHELL=/bin/bash
TERM=xterm
SSH_CLIENT=192.168.16.101 49910 22
L3_PARENT_TTY=/dev/pts/1
L3_TAMPERED_EDITORS= vi vim pico nano vi vim pico nano
SSH_TTY=/dev/pts/0
USER=root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAIL=/var/mail/root
L3_SESSION_ID=8037179322752329896-1443598194
PWD=/root
c=10
LANG=ru_RU.UTF-8
/dev/pts/1
09:31:37
#env
SHELL=/bin/bash
TERM=xterm
SSH_CLIENT=192.168.16.101 49910 22
L3_PARENT_TTY=/dev/pts/1
L3_TAMPERED_EDITORS= vi vim pico nano vi vim pico nano
SSH_TTY=/dev/pts/0
USER=root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAIL=/var/mail/root
L3_SESSION_ID=8037179322752329896-1443598194
PWD=/root
c=10
LANG=ru_RU.UTF-8
/dev/pts/0
09:31:45
#bash
root@debian6:~# echo $c
10
root@debian6:~# exit
exit
/dev/pts/1
09:31:45
#bash
root@debian6:~# echo $c
10
root@debian6:~# exit
exit
/dev/pts/0
09:32:14
#env
SHELL=/bin/bash
TERM=xterm
SSH_CLIENT=192.168.16.101 49910 22
L3_PARENT_TTY=/dev/pts/1
L3_TAMPERED_EDITORS= vi vim pico nano vi vim pico nano
SSH_TTY=/dev/pts/0
USER=root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAIL=/var/mail/root
L3_SESSION_ID=8037179322752329896-1443598194
PWD=/root
c=10
LANG=ru_RU.UTF-8
/dev/pts/1
09:32:14
#env
SHELL=/bin/bash
TERM=xterm
SSH_CLIENT=192.168.16.101 49910 22
L3_PARENT_TTY=/dev/pts/1
L3_TAMPERED_EDITORS= vi vim pico nano vi vim pico nano
SSH_TTY=/dev/pts/0
USER=root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAIL=/var/mail/root
L3_SESSION_ID=8037179322752329896-1443598194
PWD=/root
c=10
LANG=ru_RU.UTF-8
/dev/pts/0
09:32:31
#bash
root@debian6:~# PS1='[\u \A]\$ '
[root 10:34]# exit
exit
/dev/pts/1
09:32:31
#bash
root@debian6:~# PS1='[\u \A]\$ '
[root 10:34]# exit
exit
/dev/pts/0
09:34:56
#test

/dev/pts/1
09:34:56
#test

/dev/pts/0
09:39:48
#test 4 -eq 4

/dev/pts/1
09:39:48
#test 4 -eq 4

/dev/pts/0
09:40:47
#echo $?
0
/dev/pts/1
09:40:47
#echo $?
0
/dev/pts/0
09:40:58
#test 4 -eq 5

/dev/pts/1
09:40:58
#test 4 -eq 5

/dev/pts/0
09:41:06
#echo $?
1
/dev/pts/1
09:41:06
#echo $?
1
/dev/pts/0
09:41:08
#help test
test: test [expr]
    Evaluate conditional expression.
    Exits with a status of 0 (true) or 1 (false) depending on
    the evaluation of EXPR.  Expressions may be unary or binary.  Unary
    expressions are often used to examine the status of a file.  There
    are string operators and numeric comparison operators as well.
    The behavior of test depends on the number of arguments.  Read the
    bash manual page for the complete specification.
    File operators:
      -a FILE        True if file exists.
...
      arg1 OP arg2   Arithmetic tests.  OP is one of -eq, -ne,
                     -lt, -le, -gt, or -ge.
    Arithmetic binary operators return true if ARG1 is equal, not-equal,
    less-than, less-than-or-equal, greater-than, or greater-than-or-equal
    than ARG2.
    See the bash manual page bash(1) for the handling of parameters (i.e.
    missing parameters).
    Exit Status:
    Returns success if EXPR evaluates to true; fails if EXPR evaluates to
    false or an invalid argument is given.
/dev/pts/1
09:41:08
#help test
test: test [expr]
    Evaluate conditional expression.
    Exits with a status of 0 (true) or 1 (false) depending on
    the evaluation of EXPR.  Expressions may be unary or binary.  Unary
    expressions are often used to examine the status of a file.  There
    are string operators and numeric comparison operators as well.
    The behavior of test depends on the number of arguments.  Read the
    bash manual page for the complete specification.
    File operators:
      -a FILE        True if file exists.
...
      arg1 OP arg2   Arithmetic tests.  OP is one of -eq, -ne,
                     -lt, -le, -gt, or -ge.
    Arithmetic binary operators return true if ARG1 is equal, not-equal,
    less-than, less-than-or-equal, greater-than, or greater-than-or-equal
    than ARG2.
    See the bash manual page bash(1) for the handling of parameters (i.e.
    missing parameters).
    Exit Status:
    Returns success if EXPR evaluates to true; fails if EXPR evaluates to
    false or an invalid argument is given.
/dev/pts/0
09:41:39
#ls -l
итого 8
-rw-r--r-- 1 root root 5268 Окт 13  2014 install
/dev/pts/1
09:41:39
#ls -l
итого 8
-rw-r--r-- 1 root root 5268 Окт 13  2014 install
/dev/pts/0
09:42:12
#test -x shell.sh

/dev/pts/1
09:42:12
#test -x shell.sh

/dev/pts/0
09:43:37
#echo $?
1
/dev/pts/1
09:43:37
#echo $?
1
/dev/pts/0
09:43:54
#vi
/dev/pts/1
09:43:54
#vi
/dev/pts/0
09:45:11
#~
GNU bash, version 4.2.37(1)-release (x86_64-pc-linux-gnu)
These shell commands are defined internally.  Type `help' to see this list.
Type `help name' to find out more about the function `name'.
Use `info bash' to find out more about the shell in general.
Use `man -k' or `info' to find out more about commands not in this list.
A star (*) next to a name means that the command is disabled.
 job_spec [&]                            history [-c] [-d offset] [n] or hist>
 (( expression ))                        if COMMANDS; then COMMANDS; [ elif C>
 . filename [arguments]                  jobs [-lnprs] [jobspec ...] or jobs >
 :                                       kill [-s sigspec | -n signum | -sigs>
...
 export [-fn] [name[=value] ...] or ex>  typeset [-aAfFgilrtux] [-p] name[=va>
 false                                   ulimit [-SHacdefilmnpqrstuvx] [limit>
 fc [-e ename] [-lnr] [first] [last] o>  umask [-p] [-S] [mode]
 fg [job_spec]                           unalias [-a] name [name ...]
 for NAME [in WORDS ... ] ; do COMMAND>  unset [-f] [-v] [name ...]
 for (( exp1; exp2; exp3 )); do COMMAN>  until COMMANDS; do COMMANDS; done
 function name { COMMANDS ; } or name >  variables - Names and meanings of so>
 getopts optstring name [arg]            wait [id]
 hash [-lr] [-p pathname] [-dt] [name >  while COMMANDS; do COMMANDS; done
 help [-dms] [pattern ...]               { COMMANDS ; }
/dev/pts/1
09:45:11
#~
GNU bash, version 4.2.37(1)-release (x86_64-pc-linux-gnu)
These shell commands are defined internally.  Type `help' to see this list.
Type `help name' to find out more about the function `name'.
Use `info bash' to find out more about the shell in general.
Use `man -k' or `info' to find out more about commands not in this list.
A star (*) next to a name means that the command is disabled.
 job_spec [&]                            history [-c] [-d offset] [n] or hist>
 (( expression ))                        if COMMANDS; then COMMANDS; [ elif C>
 . filename [arguments]                  jobs [-lnprs] [jobspec ...] or jobs >
 :                                       kill [-s sigspec | -n signum | -sigs>
...
 export [-fn] [name[=value] ...] or ex>  typeset [-aAfFgilrtux] [-p] name[=va>
 false                                   ulimit [-SHacdefilmnpqrstuvx] [limit>
 fc [-e ename] [-lnr] [first] [last] o>  umask [-p] [-S] [mode]
 fg [job_spec]                           unalias [-a] name [name ...]
 for NAME [in WORDS ... ] ; do COMMAND>  unset [-f] [-v] [name ...]
 for (( exp1; exp2; exp3 )); do COMMAN>  until COMMANDS; do COMMANDS; done
 function name { COMMANDS ; } or name >  variables - Names and meanings of so>
 getopts optstring name [arg]            wait [id]
 hash [-lr] [-p pathname] [-dt] [name >  while COMMANDS; do COMMANDS; done
 help [-dms] [pattern ...]               { COMMANDS ; }
/dev/pts/0
09:47:32
#help cd
cd: cd [-L|[-P [-e]]] [dir]
    Change the shell working directory.
    Change the current directory to DIR.  The default DIR is the value of the
    HOME shell variable.
    The variable CDPATH defines the search path for the directory containing
    DIR.  Alternative directory names in CDPATH are separated by a colon (:).
    A null directory name is the same as the current directory.  If DIR begins
    with a slash (/), then CDPATH is not used.
    If the directory is not found, and the shell option `cdable_vars' is set,
    the word is assumed to be  a variable name.  If that variable has a value,
    its value is used for DIR.
    Options:
        -L      force symbolic links to be followed
        -P      use the physical directory structure without following symbolic
        links
        -e      if the -P option is supplied, and the current working directory
        cannot be determined successfully, exit with a non-zero status
    The default is to follow symbolic links, as if `-L' were specified.
    Exit Status:
    Returns 0 if the directory is changed, and if $PWD is set successfully when
    -P is used; non-zero otherwise.
/dev/pts/1
09:47:32
#help cd
cd: cd [-L|[-P [-e]]] [dir]
    Change the shell working directory.
    Change the current directory to DIR.  The default DIR is the value of the
    HOME shell variable.
    The variable CDPATH defines the search path for the directory containing
    DIR.  Alternative directory names in CDPATH are separated by a colon (:).
    A null directory name is the same as the current directory.  If DIR begins
    with a slash (/), then CDPATH is not used.
    If the directory is not found, and the shell option `cdable_vars' is set,
    the word is assumed to be  a variable name.  If that variable has a value,
    its value is used for DIR.
    Options:
        -L      force symbolic links to be followed
        -P      use the physical directory structure without following symbolic
        links
        -e      if the -P option is supplied, and the current working directory
        cannot be determined successfully, exit with a non-zero status
    The default is to follow symbolic links, as if `-L' were specified.
    Exit Status:
    Returns 0 if the directory is changed, and if $PWD is set successfully when
    -P is used; non-zero otherwise.
/dev/pts/0
09:49:04
#which cd

/dev/pts/1
09:49:04
#which cd

/dev/pts/0
09:49:54
#which who
/usr/bin/who
/dev/pts/1
09:49:54
#which who
/usr/bin/who
/dev/pts/0
09:50:04
#vi .exrc
/dev/pts/1
09:50:04
#vi .exrc
--- /dev/null	2015-09-30 10:23:59.339999987 +0300
+++ .exrc	2015-09-30 10:53:40.187334833 +0300
@@ -0,0 +1,4 @@
+syntax on
+set wm=10
+set number
+set hlsearch
/dev/pts/0
09:53:40
#vi .exrc
/dev/pts/1
09:53:40
#vi .exrc
--- /tmp/l3-saved-2637.10788.18676	2015-09-30 10:53:42.515328410 +0300
+++ .exrc	2015-09-30 10:56:48.235318007 +0300
@@ -2,3 +2,5 @@
 set wm=10
 set number
 set hlsearch
+set mouse=a
+colorscheme desert
/dev/pts/0
09:56:48
#vi
/dev/pts/1
09:56:48
#vi
/dev/pts/0
09:57:29
# 1
~
~
~
~
~
~
~
~
~
~
...
~
~
~
~
~
~
~
~
~
"privet.sh" [Новый] 0L, 0C записано
/dev/pts/1
09:57:29
# 1
~
~
~
~
~
~
~
~
~
~
...
~
~
~
~
~
~
~
~
~
"privet.sh" [Новый] 0L, 0C записано
/dev/pts/0
09:58:00
#bash privet.sh

/dev/pts/1
09:58:00
#bash privet.sh

/dev/pts/0
09:58:15
#vi privet.sh
/dev/pts/1
09:58:15
#vi privet.sh
--- /tmp/l3-saved-2637.75.18878	2015-09-30 10:58:48.251324721 +0300
+++ privet.sh	2015-09-30 10:59:35.303320130 +0300
@@ -0,0 +1,2 @@
+#!/bin/bash
+echo Privet!
/dev/pts/0
09:59:35
#bash privet.sh
Privet!
/dev/pts/1
09:59:35
#bash privet.sh
Privet!
/dev/pts/0
09:59:37
#privet.sh
l3script: privet.sh: команда не найдена
/dev/pts/1
09:59:37
#privet.sh
l3script: privet.sh: команда не найдена
/dev/pts/0
09:59:44
#./privet.sh
l3script: ./privet.sh: Отказано в доступе
/dev/pts/1
09:59:44
#./privet.sh
l3script: ./privet.sh: Отказано в доступе
/dev/pts/0
09:59:54
#chmod u+x privet.sh

/dev/pts/1
09:59:54
#chmod u+x privet.sh

10:00:19
#pwd
/root
/dev/pts/0
10:00:19
#pwd
/root
10:00:23
#./privet.sh
Privet!
/dev/pts/1
10:00:23
#./privet.sh
Privet!
/dev/pts/0
10:00:28
#id -u
0
/dev/pts/1
10:00:28
#id -u
0
/dev/pts/0
10:01:24
#id
uid=0(root) gid=0(root) группы=0(root)
/dev/pts/1
10:01:24
#id
uid=0(root) gid=0(root) группы=0(root)
/dev/pts/0
10:01:30
#vi privet.sh
/dev/pts/1
10:01:30
#vi privet.sh
/dev/pts/0
10:02:16
#~
 18   else
                            then
 19     if [ "`id -u`" -eq 0 ]; then                                   n:/root"
 20       PS1='# '
 21     else
 22       PS1='$ ', 851C
 23     fi
 24   fi
 25 fi
 26
...
 31   for i in /etc/profile.d/*.sh; do
 32     if [ -r $i ]; then
 33       . $i
 34     fi
 35   done
~
~
~
~
"/etc/profile" 37L, 857C записано
/dev/pts/1
10:02:16
#~
 18   else
                            then
 19     if [ "`id -u`" -eq 0 ]; then                                   n:/root"
 20       PS1='# '
 21     else
 22       PS1='$ ', 851C
 23     fi
 24   fi
 25 fi
 26
...
 31   for i in /etc/profile.d/*.sh; do
 32     if [ -r $i ]; then
 33       . $i
 34     fi
 35   done
~
~
~
~
"/etc/profile" 37L, 857C записано
/dev/pts/0
10:04:00
#exit
exit
root@debian6:~# exit
exit
/dev/pts/0
10:04:45
#privet.sh
Privet!
10:05:24
#/etc/init.d/
l3script: /etc/init.d/: Это каталог
10:05:56
#/etc/init.d/rsyslog stop
[ ok ] Stopping enhanced syslogd: rsyslogd.
10:06:38
#/etc/init.d/rsyslog start
[ ok ] Starting enhanced syslogd: rsyslogd.
10:06:47
#service rsyslog stop
[ ok ] Stopping enhanced syslogd: rsyslogd.
10:07:06
#service rsyslog start
[ ok ] Starting enhanced syslogd: rsyslogd.
10:07:10
#less /etc/init.d/rsyslog
прошло 10 минут
10:17:36
#chmod u+x test.sh

10:17:54
#vi test.sh
--- /tmp/l3-saved-3123.25684.19483	2015-09-30 11:18:07.783334443 +0300
+++ test.sh	2015-09-30 11:18:36.295323340 +0300
@@ -2,7 +2,7 @@
 declare -i i=1
 while [ $i -le ${2:-10} ]
 	do
-		echo -n $i
+		echo -n "$i "
 		sleep ${1:-1}
 		i=$[$i+1]
 	done
10:18:36
#./test.sh
1 2 3 4 5 6 7 8 9 10
10:18:55
#./test.sh 2 5
1 2 3 4 5
10:19:44
#vi test.sh
10:20:50
#~
  2 declare -i i=1
    while [ $i -le ${2:-10} ]
  3 while [ $i -le $
  5                 echo -n "$i "
  4                 sleep ${1:-1}
  7                 i=$[$i+1]
  5         done    echo -n "$i "
  8                 i=$[  +1]
 10 echo
  9
...
~
~
~
~
~
~
~
~
~
"test.sh" 10L, 141C записано
10:24:15
#./test.sh 2 5
You enter 2 parametr
1 2 3 ^C
10:24:23
#./test.sh
You enter 0 parametr
1 2 3 4 5 6 7 8 9 10

Пятница (10/02/15)

/dev/pts/0
13:23:10
#vi /etc/ss

Статистика

Время первой команды журнала09:26:13 2015- 9-30
Время последней команды журнала13:23:10 2015-10- 2
Количество командных строк в журнале100
Процент команд с ненулевым кодом завершения, %21.00
Процент синтаксически неверно набранных команд, % 2.00
Суммарное время работы с терминалом *, час 0.97
Количество командных строк в единицу времени, команда/мин 1.72
Частота использования команд
vi15|==============| 14.42%
echo11|==========| 10.58%
bash9|========| 8.65%
test8|=======| 7.69%
privet.sh7|======| 6.73%
~5|====| 4.81%
test.sh4|===| 3.85%
env4|===| 3.85%
set4|===| 3.85%
id4|===| 3.85%
help4|===| 3.85%
grep4|===| 3.85%
which4|===| 3.85%
chmod3|==| 2.88%
c=103|==| 2.88%
pwd2|=| 1.92%
service2|=| 1.92%
export2|=| 1.92%
12|=| 1.92%
ls2|=| 1.92%
/etc/init.d/rsyslog2|=| 1.92%
/etc/init.d/1|| 0.96%
less1|| 0.96%
exit1|| 0.96%
____
*) Интервалы неактивности длительностью 30 минут и более не учитываются

Справка

Для того чтобы использовать LiLaLo, не нужно знать ничего особенного: всё происходит само собой. Однако, чтобы ведение и последующее использование журналов было как можно более эффективным, желательно иметь в виду следующее:
  1. В журнал автоматически попадают все команды, данные в любом терминале системы.

  2. Для того чтобы убедиться, что журнал на текущем терминале ведётся, и команды записываются, дайте команду w. В поле WHAT, соответствующем текущему терминалу, должна быть указана программа script.

  3. Команды, при наборе которых были допущены синтаксические ошибки, выводятся перечёркнутым текстом:
    $ l s-l
    bash: l: command not found
    

  4. Если код завершения команды равен нулю, команда была выполнена без ошибок. Команды, код завершения которых отличен от нуля, выделяются цветом.
    $ test 5 -lt 4
    Обратите внимание на то, что код завершения команды может быть отличен от нуля не только в тех случаях, когда команда была выполнена с ошибкой. Многие команды используют код завершения, например, для того чтобы показать результаты проверки

  5. Команды, ход выполнения которых был прерван пользователем, выделяются цветом.
    $ 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
    

  6. Команды, выполненные с привилегиями суперпользователя, выделяются слева красной чертой.
    # id
    uid=0(root) gid=0(root) Gruppen=0(root)
    

  7. Изменения, внесённые в текстовый файл с помощью редактора, запоминаются и показываются в журнале в формате ed. Строки, начинающиеся символом "<", удалены, а строки, начинающиеся символом ">" -- добавлены.
    $ vi ~/.bashrc
    2a3,5
    >    if [ -f /usr/local/etc/bash_completion ]; then
    >         . /usr/local/etc/bash_completion
    >        fi
    

  8. Для того чтобы изменить файл в соответствии с показанными в диффшоте изменениями, можно воспользоваться командой patch. Нужно скопировать изменения, запустить программу patch, указав в качестве её аргумента файл, к которому применяются изменения, и всавить скопированный текст:
    $ patch ~/.bashrc
    В данном случае изменения применяются к файлу ~/.bashrc

  9. Для того чтобы получить краткую справочную информацию о команде, нужно подвести к ней мышь. Во всплывающей подсказке появится краткое описание команды.

    Если справочная информация о команде есть, команда выделяется голубым фоном, например: vi. Если справочная информация отсутствует, команда выделяется розовым фоном, например: notepad.exe. Справочная информация может отсутствовать в том случае, если (1) команда введена неверно; (2) если распознавание команды LiLaLo выполнено неверно; (3) если информация о команде неизвестна LiLaLo. Последнее возможно для редких команд.

  10. Большие, в особенности многострочные, всплывающие подсказки лучше всего показываются браузерами KDE Konqueror, Apple Safari и Microsoft Internet Explorer. В браузерах Mozilla и Firefox они отображаются не полностью, а вместо перевода строки выводится специальный символ.

  11. Время ввода команды, показанное в журнале, соответствует времени начала ввода командной строки, которое равно тому моменту, когда на терминале появилось приглашение интерпретатора

  12. Имя терминала, на котором была введена команда, показано в специальном блоке. Этот блок показывается только в том случае, если терминал текущей команды отличается от терминала предыдущей.

  13. Вывод не интересующих вас в настоящий момент элементов журнала, таких как время, имя терминала и других, можно отключить. Для этого нужно воспользоваться формой управления журналом вверху страницы.

  14. Небольшие комментарии к командам можно вставлять прямо из командной строки. Комментарий вводится прямо в командную строку, после символов #^ или #v. Символы ^ и v показывают направление выбора команды, к которой относится комментарий: ^ - к предыдущей, v - к следующей. Например, если в командной строке было введено:

    $ whoami
    
    user
    
    $ #^ Интересно, кто я?
    
    в журнале это будет выглядеть так:
    $ whoami
    
    user
    
    Интересно, кто я?

  15. Если комментарий содержит несколько строк, его можно вставить в журнал следующим образом:

    $ whoami
    
    user
    
    $ cat > /dev/null #^ Интересно, кто я?
    
    Программа whoami выводит имя пользователя, под которым 
    мы зарегистрировались в системе.
    -
    Она не может ответить на вопрос о нашем назначении 
    в этом мире.
    
    В журнале это будет выглядеть так:
    $ whoami
    user
    
    Интересно, кто я?
    Программа whoami выводит имя пользователя, под которым
    мы зарегистрировались в системе.

    Она не может ответить на вопрос о нашем назначении
    в этом мире.
    Для разделения нескольких абзацев между собой используйте символ "-", один в строке.

  16. Комментарии, не относящиеся непосредственно ни к какой из команд, добавляются точно таким же способом, только вместо симолов #^ или #v нужно использовать символы #=

  17. Содержимое файла может быть показано в журнале. Для этого его нужно вывести с помощью программы cat. Если вывод команды отметить симоволами #!, содержимое файла будет показано в журнале в специально отведённой для этого секции.
  18. Для того чтобы вставить скриншот интересующего вас окна в журнал, нужно воспользоваться командой l3shot. После того как команда вызвана, нужно с помощью мыши выбрать окно, которое должно быть в журнале.
  19. Команды в журнале расположены в хронологическом порядке. Если две команды давались одна за другой, но на разных терминалах, в журнале они будут рядом, даже если они не имеют друг к другу никакого отношения.
    1
        2
    3   
        4
    
    Группы команд, выполненных на разных терминалах, разделяются специальной линией. Под этой линией в правом углу показано имя терминала, на котором выполнялись команды. Для того чтобы посмотреть команды только одного сенса, нужно щёкнуть по этому названию.

О программе

LiLaLo (L3) расшифровывается как Live Lab Log.
Программа разработана для повышения эффективности обучения Unix/Linux-системам.
(c) Игорь Чубин, 2004-2008

$Id$