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

Содержание

Журнал

Среда (09/06/17)

/dev/pts/2
13:06:46
#./shell.sh bash
./shell.sh: line 7: unexpected EOF while looking for matching `"'
./shell.sh: line 11: ошибка синтаксиса: неожиданный конец файла
13:06:49
#vi shell.sh
--- /tmp/l3-saved-11890.13402.1905	2017-09-06 14:06:59.875199020 +0300
+++ shell.sh	2017-09-06 14:07:22.567176715 +0300
@@ -4,7 +4,7 @@
 #echo $users
 for user in $users
   do 
-   echo "Changing shell $shell for $user...hell 
+   echo "Changing shell $shell for $user...hell" 
    usermod -s /bin/$shell $user
    sleep 2
   done
13:07:22
#./shell.sh bash
Changing shell bash for user...hell
Changing shell bash for ivan...hell
Changing shell bash for petr...hell
13:07:37
#vi shell.sh
--- /tmp/l3-saved-11890.6737.29850	2017-09-06 14:07:52.823193523 +0300
+++ shell.sh	2017-09-06 14:08:13.995251722 +0300
@@ -4,7 +4,7 @@
 #echo $users
 for user in $users
   do 
-   echo "Changing shell $shell for $user...hell" 
+   echo "Changing shell $shell for $user..." 
    usermod -s /bin/$shell $user
    sleep 2
   done
13:08:14
#./shell.sh bash
Changing shell bash for user...
usermod: изменения не внесены
Changing shell bash for ivan...
usermod: изменения не внесены
Changing shell bash for petr...
usermod: изменения не внесены
^C
13:08:21
#./shell.sh zsh
Changing shell zsh for user...
Changing shell zsh for ivan...
Changing shell zsh for petr...
13:08:33
#./shell.sh bash
Changing shell bash for user...
Changing shell bash for ivan...
Changing shell bash for petr...
13:08:48
#vi shell.sh
--- /tmp/l3-saved-11890.15505.23671	2017-09-06 14:10:34.915200828 +0300
+++ shell.sh	2017-09-06 14:12:45.315201178 +0300
@@ -1,6 +1,6 @@
 #!/bin/bash
 users=$(awk -F: '$3>=1000 && $3!=65534{print $1}' /etc/passwd | tr "\n" " ")
-shell=$1
+shell=$(1:-bash)
 #echo $users
 for user in $users
   do 
13:12:45
#./shell.sh zsh
./shell.sh: line 3: 1:-bash: команда не найдена
Changing shell  for user...
Changing shell  for ivan...
Changing shell  for petr...
13:12:56
#vi shell.sh
--- /tmp/l3-saved-11890.11694.9798	2017-09-06 14:13:05.715198523 +0300
+++ shell.sh	2017-09-06 14:13:39.671190393 +0300
@@ -1,6 +1,6 @@
 #!/bin/bash
 users=$(awk -F: '$3>=1000 && $3!=65534{print $1}' /etc/passwd | tr "\n" " ")
-shell=$(1:-bash)
+shell=${1:-bash}
 #echo $users
 for user in $users
   do 
13:13:39
#./shell.sh zsh
Changing shell zsh for user...
Changing shell zsh for ivan...
Changing shell zsh for petr...
13:13:48
#cat /etc/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/zsh
sshd:x:102:65534::/var/run/sshd:/usr/sbin/nologin
ivan:x:1001:1001::/home/ivan:/bin/zsh
petr:x:1002:1002::/home/petr:/bin/zsh
13:14:00
#./shell.sh
Changing shell bash for user...
Changing shell bash for ivan...
Changing shell bash for petr...
13:14:17
#cat /etc/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
13:14:19
#t=25

13:23:43
#echo $t
25
13:23:50
#bash
root@debian2:/usr/share/man# pstree
init─┬─acpid
     ├─cron
     ├─exim4
     ├─6*[getty]
     ├─2*[l3-agent]
     ├─rsyslogd───3*[{rsyslogd}]
     ├─2*[script───l3script]
     ├─sshd─┬─sshd───bash───script───script───l3script───bash───pstree
     │      └─sshd───sshd───bash───script───script───l3script
     └─udevd
root@debian2:/usr/share/man# echo $t
root@debian2:/usr/share/man# exit
exit
13:25:03
#echo $t
25
13:25:06
#export t

13:26:12
#bash
root@debian2:/usr/share/man# echo $t
25
root@debian2:/usr/share/man# exit
exit
13:27:00
#env
SHELL=/bin/bash
TERM=xterm
HISTSIZE=2000
SSH_CLIENT=192.168.16.176 49158 22
L3_PARENT_TTY=/dev/pts/2
OLDPWD=/root
L3_TAMPERED_EDITORS= vi vim pico nano
SSH_TTY=/dev/pts/2
USER=root
HISTFILESIZE=2000
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAIL=/var/mail/root
L3_SESSION_ID=2642526237808327667-1504677564
PWD=/usr/share/man
LANG=ru_RU.UTF-8
13:27:22
#echo $?
0
13:30:14
#test 5 -eq 5

13:38:46
#echo $?
0
13:38:51
#test 5 -eq 6

13:38:55
#echo $?
1
13:38:56
#ping -c100 8.8.8.8&> report.txt &
[1] 14136
13:45:59
#jobs
[1]+  Running                 ping -c100 8.8.8.8 &>report.txt &
13:46:24
#kill %1
[1]+  Завершено      ping -c100 8.8.8.8 &>report.txt
13:47:03
#jobs

13:47:11
#ping -c100 8.8.8.8&> report.txt
^Z
[1]+  Stopped                 ping -c100 8.8.8.8 &>report.txt
13:48:04
#jobs
[1]+  Stopped                 ping -c100 8.8.8.8 &>report.txt
13:48:09
#bg
[1]+ ping -c100 8.8.8.8 &>report.txt &
13:48:20
#bg %1
l3script: bg: job 1 already in background
13:48:36
#test -x shell.sh; echo $?
0
[1]+  Done                    ping -c100 8.8.8.8 &>report.txt
13:52:58
#test -x passwd

13:53:21
#echo $?
1
13:53:31
#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.
13:54:24
#l='ls'

13:55:32
#$l
cs  da  de  es  fi  fr  gl  hu  id  it  ja  ko  man1  man2  man3  man4  man5  man6  man7  man8  nl  pl  pt  pt_BR  report.txt  ru  shell.sh  sl  sv  tr  zh_CN  zh_TW
13:55:35
#help [
[: [ arg... ]
    Evaluate conditional expression.
    This is a synonym for the "test" builtin, but the last argument must
    be a literal `]', to match the opening `['.
[[ ... ]]: [[ expression ]]
    Execute conditional command.
    Returns a status of 0 or 1 depending on the evaluation of the conditional
    expression EXPRESSION.  Expressions are composed of the same primaries used
    by the `test' builtin, and may be combined using the following operators:
      ( EXPRESSION )    Returns the value of EXPRESSION
      ! EXPRESSION              True if EXPRESSION is false; else false
      EXPR1 && EXPR2    True if both EXPR1 and EXPR2 are true; else false
      EXPR1 || EXPR2    True if either EXPR1 or EXPR2 is true; else false
    When the `==' and `!=' operators are used, the string to the right of
    the operator is used as a pattern and pattern matching is performed.
    When the `=~' operator is used, the string to the right of the operator
    is matched as a regular expression.
    The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to
    determine the expression's value.
    Exit Status:
    0 or 1 depending on value of EXPRESSION.
13:59:33
#cd /etc/init.d/

14:02:44
#vi cron
14:07:04
# 30 [ -r /etc/default/cron ] && . /etc/default/cron

14:07:23
#vi proc.sh
14:07:50
#~
  2 i=1
  3
  4 while [ $i -lt 1000000]
  5  do
  6   echo $i > /dev/pts/2
  8   clear > /dev/pts/2
  9 2 i=$[$i+1]
 10  done
~
~
...
~
~
~
~
~
~
~
~
~
"proc.sh" [Новый] 10L, 108C записано
14:12:35
#chmod u+x proc.sh

14:12:51
#who
root     pts/2        2017-09-06 08:59 (192.168.16.176)
user     pts/6        2017-09-06 09:01 (192.168.16.176)
14:12:58
#vi proc.sh
--- /tmp/l3-saved-11890.23650.16498	2017-09-06 15:13:26.659189430 +0300
+++ proc.sh	2017-09-06 15:14:07.495196491 +0300
@@ -5,6 +5,6 @@
 while [ $i -lt 1000000]
  do
   echo $i > /dev/pts/2
-  clear > /dev/pts/2
+  clear > /dev/pts/6
   i=$[$i+1]
  done
14:14:07
#./proc.sh
./proc.sh: line 5: [: пропущен `]'
14:14:24
#vi proc.sh
--- /tmp/l3-saved-11890.32206.6955	2017-09-06 15:14:31.419145632 +0300
+++ proc.sh	2017-09-06 15:16:39.783191451 +0300
@@ -2,9 +2,9 @@
 
 i=1
 
-while [ $i -lt 1000000]
+while [ $i -lt 100000 ]
  do
-  echo $i > /dev/pts/2
+  echo $i > /dev/pts/6
   clear > /dev/pts/6
   i=$[$i+1]
  done
14:16:39
#./proc.sh
^C
14:20:17
#stty -a
speed 38400 baud; rows 48; columns 173; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
Параметры терминала
14:22:46
#еуtest --help

прошло 20 минут
14:43:38
#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.
14:43:44
#test -z "$STRING"

14:48:40
#echo $?
0
14:48:52
#test -z $STRING

14:49:25
#echo $?
0
14:49:27
#test "$P" != print

14:52:30
#echo $?
0
14:52:33
#P=print

14:52:46
#test "$P" != print

14:52:53
#echo $?
1
14:52:56
#test $P != print

14:53:22
#echo $?
1
14:53:26
#test -e /etc/motd

14:57:41
#echo $?
0
14:57:44
#test -d /usr/local/bin

14:58:15
#test -r /etc/shadow

14:58:51
#echo $?
0
14:58:53
#test -w /etc/passwd

14:59:20
#echo $?
0
14:59:22
#^C

14:59:32
#x=5

15:00:22
#y=10

15:00:26
#test $x -gl $y
l3script: test: -gl: ожидается использование бинарного оператора
15:00:45
#test $x -ge $y

15:00:55
#echo $?
1
15:00:59
#x=10

15:01:14
#y=5

15:01:19
#test $x -ge $y

15:01:22
#echo $?
0
15:01:26
#test -z "\$STRING"

15:02:19
#echo $?
1
15:02:27
#read --help
l3script: read: --: неправильная опция
read: usage: read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
15:04:03
#help read
read: read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
    Read a line from the standard input and split it into fields.
    Reads a single line from the standard input, or from file descriptor FD
    if the -u option is supplied.  The line is split into fields as with word
    splitting, and the first word is assigned to the first NAME, the second
    word to the second NAME, and so on, with any leftover words assigned to
    the last NAME.  Only the characters found in $IFS are recognized as word
    delimiters.
    If no NAMEs are supplied, the line read is stored in the REPLY variable.
    Options:
...
    changed by subsequent assignment.  If VALUE is supplied, assign VALUE
    before marking as read-only.
    Options:
      -a        refer to indexed array variables
      -A        refer to associative array variables
      -f        refer to shell functions
      -p        display a list of all readonly variables and functions
    An argument of `--' disables further option processing.
    Exit Status:
    Returns success unless an invalid option is given or NAME is invalid.
15:04:17
#echo "Ваш цвет?" ; read FAV_COL; \
> echo Ваш цвет - $FAV_VOL
Ваш цвет?
green
Ваш цвет -
15:06:09
#echo "Ваш цвет?" ; read FAV_COL; echo Ваш цвет - $FAV_COL
Ваш цвет?
R
Ваш цвет - R
15:06:22
#echo $E
$ERR   $EUID
15:06:22
#help euid
l3script: help: no help topics match `euid'.  Try `help help' or `man -k euid' or `info euid'.
15:07:52
#help EUID
l3script: help: no help topics match `EUID'.  Try `help help' or `man -k EUID' or `info EUID'.
15:08:09
#help $EUID
l3script: help: no help topics match `0'.  Try `help help' or `man -k 0' or `info 0'.
15:08:13
#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.
15:08:43
#test $EUID -ne 0 -ar /etc/shadow && \
> echo Warning!!! File /etc/shad is readable!
echo Warningtest $EUID -ne 0 -ar /etc/shadow && \! File /etc/shad is readable!
l3script: test: слишком много аргументов
15:11:59
#test $EUID -ne 0 -ar /etc/shadow && echo "Warning! File /etc/shad is readable!"
l3script: !": event not found
15:12:59
#test $EUID -ne 0 -ar /etc/shadow
l3script: test: слишком много аргументов
15:13:26
#test $EUID -ne 0 -a -r /etc/shadow

15:13:38
#echo $?
1
15:13:59
#ls -l /etc/shadow
-rw-r----- 1 root shadow 1029 Сен  4 10:30 /etc/shadow

Файлы

  • /etc/passwd
  • /etc/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
    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
    

    Статистика

    Время первой команды журнала13:06:46 2017- 9- 6
    Время последней команды журнала15:13:59 2017- 9- 6
    Количество командных строк в журнале100
    Процент команд с ненулевым кодом завершения, %26.00
    Процент синтаксически неверно набранных команд, % 0.00
    Суммарное время работы с терминалом *, час 2.12
    Количество командных строк в единицу времени, команда/мин 0.79
    Частота использования команд
    echo23|====================| 20.00%
    test21|==================| 18.26%
    help8|======| 6.96%
    shell.sh8|======| 6.96%
    vi8|======| 6.96%
    &3|==| 2.61%
    read3|==| 2.61%
    jobs3|==| 2.61%
    bg2|=| 1.74%
    cat2|=| 1.74%
    \2|=| 1.74%
    ping2|=| 1.74%
    >2|=| 1.74%
    proc.sh2|=| 1.74%
    bash2|=| 1.74%
    report.txt2|=| 1.74%
    x=51|| 0.87%
    y=51|| 0.87%
    chmod1|| 0.87%
    env1|| 0.87%
    cd1|| 0.87%
    $l1|| 0.87%
    .1|| 0.87%
    #^1|| 0.87%
    ~1|| 0.87%
    ls1|| 0.87%
    еуtest1|| 0.87%
    x=101|| 0.87%
    y=101|| 0.87%
    export1|| 0.87%
    301|| 0.87%
    l='ls'1|| 0.87%
    stty1|| 0.87%
    P=print1|| 0.87%
    who1|| 0.87%
    t=251|| 0.87%
    ^C1|| 0.87%
    kill1|| 0.87%
    ____
    *) Интервалы неактивности длительностью 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$