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

Содержание

Журнал

Среда (07/31/13)

/dev/pts/0
10:39:53
#echo $b

10:39:54
#unset c
l3script: unset: c: не могу сбросить: доступно только для чтения variable
10:39:59
#unset -f c

10:40:24
#echo $c
2
10:40:29
#c=1
l3script: c: доступная только на чтение переменная
10:40:46
#echo $
$_                           $L3_TAMPERED_EDITORS
$BASH                        $LANG
$BASH_ALIASES                $LANGUAGE
$BASH_ARGC                   $LINENO
$BASH_ARGV                   $LINES
$BASH_CMDS                   $LOGNAME
$BASH_COMMAND                $MACHTYPE
$BASH_COMPLETION             $MAIL
$BASH_COMPLETION_COMPAT_DIR  $MAILCHECK
$BASH_COMPLETION_DIR         $old_file
...
$BASH_SOURCE                 $OSTYPE
$BASH_SUBSHELL               $PATH
$BASH_VERSINFO               $PIPESTATUS
$BASH_VERSION                $PPID
$c                           $PS1
$COLUMNS                     $PS2
$COMP_WORDBREAKS             $PS4
$DIFFNAME                    $PWD
$DIR                         $RANDOM
$DIRSTACK                    $_scp_path_esc
10:40:46
#set
BASH=/usr/local/bin/l3script
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_COMPLETION=/etc/bash_completion
BASH_COMPLETION_COMPAT_DIR=/etc/bash_completion.d
BASH_COMPLETION_DIR=/etc/bash_completion.d
BASH_LINENO=()
...
MACHTYPE=i486-pc-linux-gnu
MAIL=/var/mail/root
MAILCHECK=60
OLDPWD=/home/user
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PIPESTATUS=([0]="1")
PPID=3185
10:41:12
#set|less
10:42:35
#echo $*

10:42:52
#echo $@

10:43:22
#echo $#
0
10:43:43
#echo $-
himBH
10:43:50
#echo $$
3186
10:44:25
#bash
root@debian2:~# echo $$
9126
root@debian2:~# exit
exit
10:44:42
#echo $$
3186
10:44:43
#echo $?
0
10:44:54
#ls -l /123
ls: невозможно получить доступ к /123: Нет такого файла или каталога
10:45:06
#echo $?
2
10:45:10
#ls /etc
acpi                    gai.conf          lynx-cur        rc5.d
adduser.conf            groff             magic           rc6.d
adjtime                 group             magic.mime      rc.local
aliases                 group-            mailcap         rcS.d
alternatives            grub.d            mailcap.order   reportbug.conf
anacrontab              gshadow           mailname        resolvconf
apm                     gshadow-          mail.rc         resolv.conf
apt                     gssapi_mech.conf  manpath.config  rmt
at.deny                 host.conf         mc              rpc
bash.bashrc             hostname          mime.types      rsyslog.conf
...
dictionaries-common     ld.so.conf.d      profile         ucf.conf
discover.conf.d         lilalo            profile.d       udev
discover-modprobe.conf  locale.alias      protocols       ufw
dpkg                    locale.gen        python          updatedb.conf
emacs                   localtime         python2.6       vim
email-addresses         logcheck          rc0.d           w3m
environment             login.defs        rc1.d           wgetrc
exim4                   logrotate.conf    rc2.d           X11
fonts                   logrotate.d       rc3.d           xml
fstab                   lsb-base          rc4.d
10:45:13
#echo $?
0
10:45:17
#man pass
10:45:36
#man passwd
10:46:05
#echo $USER
root
10:48:11
#echo $LOGNAME
root
10:48:16
#mutt

10:50:19
#echo $PPID
3185
10:51:09
#ps -p 3185
  PID TTY          TIME CMD
 3185 pts/0    00:00:01 script
10:51:19
#echo $PWD
/root
10:51:42
#pwd
/root
10:51:44
#echo $OLDPWD
/home/user
10:51:49
#echo $UID
0
10:52:44
#id root
uid=0(root) gid=0(root) группы=0(root)
10:52:49
#echo $RUID

10:52:59
#echo $RID

10:53:01
#echo $EUID
0
10:53:10
#echo $BASH
/usr/local/bin/l3script
10:53:50
#echo $BASH
$BASH                        $BASH_COMPLETION_DIR
$BASH_ALIASES                $BASH_LINENO
$BASH_ARGC                   $BASHOPTS
$BASH_ARGV                   $BASHPID
$BASH_CMDS                   $BASH_SOURCE
$BASH_COMMAND                $BASH_SUBSHELL
$BASH_COMPLETION             $BASH_VERSINFO
$BASH_COMPLETION_COMPAT_DIR  $BASH_VERSION
10:53:50
#echo $BASH_VERSI

10:53:59
#echo $BASH_VERSION
4.1.5(1)-release
10:54:01
#echo $OSTYPE
linux-gnu
10:54:14
#echo $HOST
$HOSTNAME  $HOSTTYPE
10:54:14
#echo $HOSTTYPE
i486
10:54:38
#echo $PS1

10:54:48
#ssh root@192.168.13.253
blkid.tab               kbd              rc2.d
blkid.tab.old           kernel           rc3.d
ca-certificates         kernel-img.conf  rc4.d
ca-certificates.conf    ldap             rc5.d
calendar                ld.so.cache      rc6.d
chatscripts             ld.so.conf       rc.local
console-setup           ld.so.conf.d     rcS.d
cron.d                  libpaper.d       resolvconf
cron.daily              locale.alias     resolv.conf
cron.hourly             locale.gen       rmt
...
Выбор ранее не выбранного пакета mutt.
Распаковывается пакет mutt (из файла …/mutt_1.5.21-6.2_amd64.deb) …
Обрабатываются триггеры для mime-support …
Обрабатываются триггеры для man-db …
Настраивается пакет libtokyocabinet9:amd64 (1.4.47-2) …
Настраивается пакет libpth20 (2.0.7-16) …
Настраивается пакет libgpgme11 (1.2.0-1.4) …
Настраивается пакет mutt (1.5.21-6.2) …
update-alternatives: используется /usr/bin/mutt-org для предоставления /usr/bin/mutt (mutt) в автоматический режим
fobos:~# mutt
прошло 104 минуты
12:38:54
#test -d /123

12:38:59
#echo $?
1
12:39:04
#test -d /123 || mkdir /123

12:39:46
#test -d /123 || mkdir /123

12:39:48
#mkdir /123
mkdir: невозможно создать каталог «/123»: Файл существует
12:39:52
#test -d /123 || mkdir /123

12:40:06
#ls -ld /123/
drwxr-xr-x 2 root root 4096 Июл 31 13:39 /123/
12:40:11
#test -d /124 && rmdir /124

12:41:35
#echo $?
1
12:41:42
#rmdir /124
rmdir: не удалось удалить «/124»: Нет такого файла или каталога
12:41:48
#test -d /123 && rmdir /123

12:42:12
#ls -l /
итого 84
drwxr-xr-x  2 root root  4096 Июл 29 13:44 bin
drwxr-xr-x  3 root root  4096 Июн 11  2012 boot
drwxr-xr-x 15 root root  3000 Июл 29 08:54 dev
drwxr-xr-x 79 root root  4096 Июл 30 15:09 etc
drwxr-xr-x  3 root root  4096 Июн 11  2012 home
lrwxrwxrwx  1 root root    37 Июн 11  2012 initrd.img -> /boot/initrd.img-2.6.39-bpo.2-686-pae
drwxr-xr-x 12 root root 12288 Июл 30 12:06 lib
drwx------  2 root root 16384 Июн 11  2012 lost+found
drwxr-xr-x  3 root root  4096 Июн 11  2012 media
...
dr-xr-xr-x 81 root root     0 Июл 29 11:53 proc
drwx------ 14 root root  4096 Июл 31 11:50 root
drwxr-xr-x  2 root root  4096 Авг  6  2012 sbin
drwxr-xr-x  2 root root  4096 Июл 21  2010 selinux
drwxr-xr-x  2 root root  4096 Июн 11  2012 srv
drwxr-xr-x 13 root root     0 Июл 29 11:53 sys
drwxrwxrwt  6 root root  4096 Июл 31 13:17 tmp
drwxr-xr-x 11 root root  4096 Июл  5  2012 usr
drwxr-xr-x 13 root root  4096 Июн 11  2012 var
lrwxrwxrwx  1 root root    33 Июн 11  2012 vmlinuz -> boot/vmlinuz-2.6.39-bpo.2-686-pae
12:42:17
#ls -l /|less
12:46:04
#man test
12:48:39
#a=1

12:48:42
#b=2

12:48:43
#test a=b

12:48:49
#echo $?
0
12:48:56
#test a = b

12:49:04
#echo $?
1
12:49:06
#b=1

12:49:12
#test a = b

12:49:14
#echo $?
1
12:49:16
#test $a = $b

12:49:28
#echo $?
0
12:49:29
#b=6

12:49:37
#test $a = $b

12:49:39
#echo $?
1
12:49:43
#test -f /etc/passwd

12:50:04
#echo $?
0
12:50:11
#test -f /etc/passwd && echo $?
0
12:50:26
#man test
12:51:12
#test -w766 /etc/passwd
l3script: test: -w766: ожидается использование унарного оператора
12:51:17
#bash
root@debian2:~# test -w766 /etc/passwd
bash: test: -w766: ожидается использование унарного оператора
root@debian2:~# test -w766 /etc/passwd
bash: test: -w766: ожидается использование унарного оператора
root@debian2:~# exit
exit
12:52:57
#sleep 500
^C
12:53:41
#sleep 10

12:53:54
#sleep 500 &
[1] 9824
12:54:46
#jobs
[1]+  Running                 sleep 500 &
12:55:00
#fg 1
sleep 500
^Z
[1]+  Stopped                 sleep 500
12:55:28
#jobs
[1]+  Stopped                 sleep 500
12:55:37
#fg 1
sleep 500
^Z
[1]+  Stopped                 sleep 500
12:55:44
#kill -19 9824

12:55:56
#jobs
[1]+  Stopped                 sleep 500
12:55:59
#kill -18 9824

12:56:03
#jobs
[1]+  Running                 sleep 500 &
12:56:04
#vim file1
13:00:12
#read
^C
13:00:18
#vim file1
13:00:22
#fg 1
sleep 500
^C^
13:00:27
#fg 2
  1 #!/bin/bash
  3 a=`read`
    echo 'segodnya $a'
~
  5 ecxit 0
  5
~
  7
~
~
...
~
~
~
~
~
~
~
~
~
"file1" 6L, 66C записано
13:01:30
#fg 2
l3script: fg: 2: не такой задачи
13:01:32
#vim file1
--- /tmp/l3-saved-3186.16566.4567	2013-07-31 14:01:34.000000000 +0300
+++ file1	2013-07-31 14:01:38.000000000 +0300
@@ -3,4 +3,4 @@
 a=`read`
 echo 'segodnya $a'
 
-ecxit 0
+exit 0
13:01:38
#ls -l file
ls: невозможно получить доступ к file: Нет такого файла или каталога
13:01:45
#ls -l file1
-rw-r--r-- 1 root root 65 Июл 31 14:01 file1
13:01:46
#chmod +x file1

13:01:55
#ls -l file1
-rwxr-xr-x 1 root root 65 Июл 31 14:01 file1
13:01:56
#bash file1
hello world
sreda
segodnya $a

Статистика

Время первой команды журнала10:39:53 2013- 7-31
Время последней команды журнала13:01:56 2013- 7-31
Количество командных строк в журнале101
Процент команд с ненулевым кодом завершения, %19.80
Процент синтаксически неверно набранных команд, % 0.00
Суммарное время работы с терминалом *, час 0.63
Количество командных строк в единицу времени, команда/мин 2.66
Частота использования команд
echo38|=================================| 33.93%
test14|============| 12.50%
ls8|=======| 7.14%
fg5|====| 4.46%
mkdir4|===| 3.57%
man4|===| 3.57%
jobs4|===| 3.57%
sleep3|==| 2.68%
&3|==| 2.68%
vim3|==| 2.68%
bash3|==| 2.68%
rmdir3|==| 2.68%
unset2|=| 1.79%
set2|=| 1.79%
less2|=| 1.79%
kill2|=| 1.79%
b=61|| 0.89%
ps1|| 0.89%
a=11|| 0.89%
mutt1|| 0.89%
b=11|| 0.89%
b=21|| 0.89%
pwd1|| 0.89%
chmod1|| 0.89%
id1|| 0.89%
read1|| 0.89%
ssh1|| 0.89%
c=11|| 0.89%
____
*) Интервалы неактивности длительностью 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$