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

Содержание

Журнал

Понедельник (10/20/14)

/dev/pts/0
15:20:18
#cd /usr/share/doc

15:20:39
#ls
acpi                    grub-pc-bin               libgcc1                   libssl1.0.0                openssh-server
acpid                   gzip                      libgcrypt11               libstdc++6                 openssl
acpi-support-base       heirloom-mailx            libgdbm3                  libsub-exporter-perl       os-prober
adduser                 hostname                  libgeoip1                 libsub-install-perl        passwd
apt                     ifupdown                  libgmp10                  libswitch-perl             pciutils
aptitude                info                      libgnutls26               libtasn1-3                 perl
aptitude-common         initramfs-tools           libgomp1                  libtext-charwidth-perl     perl-base
apt-utils               initscripts               libgpg-error0             libtext-iconv-perl         perl-modules
base-files              insserv                   libgpm2                   libtext-template-perl      procps
base-passwd             installation-report       libgssapi-krb5-2          libtext-wrapi18n-perl      psmisc
...
geoip-database          libdb5.1                  libregexp-common-perl     ncurses-term               wget
gettext-base            libdevmapper1.02.1        libselinux1               netbase                    whiptail
gnupg                   libdiscover2              libsemanage1              netcat                     xauth
gpgv                    libdns88                  libsemanage-common        netcat-traditional         xkb-data
grep                    libedit2                  libsepol1                 netdiag                    xml-core
groff-base              libept1.4.12              libsigc++-2.0-0c2a        net-tools                  xz-utils
grub2                   libexpat1                 libslang2                 ntpdate                    zlib1g
grub2-common            libfreetype6              libsoftware-license-perl  openssh-blacklist
grub-common             libfuse2                  libsqlite3-0              openssh-blacklist-extra
grub-pc                 libgc1c2                  libss2                    openssh-client
15:20:42
#ls -1
acpi
acpid
acpi-support-base
adduser
apt
aptitude
aptitude-common
apt-utils
base-files
base-passwd
...
vim-runtime
vim-tiny
w3m
wget
whiptail
xauth
xkb-data
xml-core
xz-utils
zlib1g
15:20:52
#cd bash

15:21:44
#ls
changelog.Debian.gz  COMPAT.gz  FAQ             INTRO.gz  POSIX.gz          README.bash_completion.gz  README.Debian.gz
CHANGES.gz           copyright  inputrc.arrows  NEWS.gz   README.abs-guide  README.commands.gz
15:21:46
#ls -1
changelog.Debian.gz
CHANGES.gz
COMPAT.gz
copyright
FAQ
inputrc.arrows
INTRO.gz
NEWS.gz
POSIX.gz
README.abs-guide
README.bash_completion.gz
README.commands.gz
README.Debian.gz
15:22:02
#cd -a
l3script: cd: -a: неправильная опция
cd: usage: cd [-L|[-P [-e]]] [dir]
15:22:05
#ls -a
.   changelog.Debian.gz  COMPAT.gz  FAQ             INTRO.gz  POSIX.gz          README.bash_completion.gz  README.Debian.gz
..  CHANGES.gz           copyright  inputrc.arrows  NEWS.gz   README.abs-guide  README.commands.gz
15:22:10
#pwd
/usr/share/doc/bash
15:22:29
#cd /usr/share/doc

15:22:39
#cd handbook
l3script: cd: handbook: Нет такого файла или каталога
15:22:45
#ls -Sr
gcc-multilib         screen                     libxcb1                   libkmod2                  installation-report
gcc                  rsyslog                    libxau6                   libklibc                  insserv
perl-base            reportbug                  libxapian22               libkeyutils1              initscripts
tasksel-data         readline-common            libx11-data               libk5crypto3              initramfs-tools
debconf-i18n         python-support             libx11-6                  libisccfg82               info
udev                 python-soappy              libwrap0                  libisccc80                ifupdown
tcpd                 python-reportbug           libuuid-perl              libisc84                  hostname
module-init-tools    python-minimal             libuuid1                  libidn11                  heirloom-mailx
manpages-dev         python-fpconst             libustr-1.0-1             libgssapi-krb5-2          gzip
kmod                 python-debianbts           libusb-1.0-0              libgpm2                   grub-common
...
telnet               locales                    libmodule-signature-perl  laptop-detect             aptitude-common
tcpdump              linux-libc-dev             libmodule-build-perl      keyboard-configuration    aptitude
tasksel              linux-image-amd64          libmagic1                 kbd                       apt
tar                  linux-image-3.2.0-4-amd64  liblzma5                  isc-dhcp-common           adduser
sysv-rc              linux-base                 liblwres80                isc-dhcp-client           acpi-support-base
sysvinit-utils       links                      liblockfile-bin           iputils-ping              acpid
sysvinit             libxmuu1                   liblockfile1              iptraf                    acpi
sgml-base            libxml2                    liblocale-gettext-perl    iptables
sensible-utils       libxext6                   libkrb5support0           iproute
sed                  libxdmcp6                  libkrb5-3                 install-info
15:23:50
#cd bash

15:24:08
#ls -1
changelog.Debian.gz
CHANGES.gz
COMPAT.gz
copyright
FAQ
inputrc.arrows
INTRO.gz
NEWS.gz
POSIX.gz
README.abs-guide
README.bash_completion.gz
README.commands.gz
README.Debian.gz
15:24:11
#less FAQ
15:24:36
#less copyright
15:25:27
#cd

15:29:20
#cd /var

15:29:27
#ls
backups  cache  lib  local  lock  log  mail  opt  run  spool  tmp
15:30:07
#mkdir test

15:30:23
#ls
backups  cache  lib  local  lock  log  mail  opt  run  spool  test  tmp
15:30:25
#cd test

15:30:47
#mkdir -p /source/doc/pics/

15:31:13
#tree
.
0 directories, 0 files
15:31:16
#mkdir -p /source/doc/pics

15:31:37
#tree
.
0 directories, 0 files
15:31:40
#mkdir -p source/doc/pics

15:31:55
#tree
.
└── source
    └── doc
        └── pics
3 directories, 0 files
15:31:57
#rm -p source
rm: неверный ключ -- p
Попробуйте «rm --help» для получения более подробного описания.
15:32:19
#rm -r source

15:32:27
#tree
.
0 directories, 0 files
15:32:30
#mkdir source doc pics

15:32:58
#tree
.
├── doc
├── pics
└── source
3 directories, 0 files
15:33:00
#mkdir -p /doc/{c scripting/{perl, python}}

15:34:17
#tree
.
├── doc
├── pics
├── python}}
├── scripting
│   └── {perl,
└── source
6 directories, 0 files
15:34:20
#rm python}}
rm: невозможно удалить «python}}»: Это каталог
15:34:39
#rm -r python}}

15:34:50
#rm -p scripting
rm: неверный ключ -- p
Попробуйте «rm --help» для получения более подробного описания.
15:35:30
#rm -r scripting

15:35:39
#tree
.
├── doc
├── pics
└── source
3 directories, 0 files
15:35:41
#cd doc

15:36:15
#tree
.
├── python}
└── scripting{perl,
2 directories, 0 files
15:36:17
#mkdir -p scripting{perl,python}

15:37:00
#tree
.
├── python}
├── scriptingperl
├── scripting{perl,
└── scriptingpython
4 directories, 0 files
15:37:02
#mkdir -p scripting/{perl,python}

15:37:34
#tree
.
├── python}
├── scripting
│   ├── perl
│   └── python
├── scriptingperl
├── scripting{perl,
└── scriptingpython
7 directories, 0 files
15:37:36
#rm -r python} scriptingperl

15:38:02
#tree
.
├── scripting
│   ├── perl
│   └── python
├── scripting{perl,
└── scriptingpython
5 directories, 0 files
15:38:04
#rm -r scripting
scripting/       scripting{perl,/ scriptingpython/
15:38:04
#rm -r scripting{perl scriptingpython
rm: невозможно удалить «scripting{perl»: Нет такого файла или каталога
15:38:40
#tree
.
├── scripting
│   ├── perl
│   └── python
└── scripting{perl,
4 directories, 0 files
15:38:46
#rm -r scripting{perl,

15:38:58
#tree
.
└── scripting
    ├── perl
    └── python
3 directories, 0 files
15:39:00
#mkdir c

15:39:07
#tree
.
├── c
└── scripting
    ├── perl
    └── python
4 directories, 0 files
15:39:09
#pwd
/var/test/doc
15:39:20
#cd /var

15:39:25
#mkdir -p /pics/forweb/info/2002/summer

15:39:51
#tree
.
├── backups
│   ├── apt.extended_states.0
│   ├── apt.extended_states.1.gz
│   ├── aptitude.pkgstates.0
│   ├── dpkg.status.0
│   ├── dpkg.status.1.gz
│   ├── dpkg.status.2.gz
│   ├── group.bak
│   ├── gshadow.bak
...
├── test
│   ├── doc
│   │   ├── c
│   │   └── scripting
│   │       ├── perl
│   │       └── python
│   ├── pics
│   └── source
└── tmp
170 directories, 1817 files
15:39:54
#ls
backups  cache  lib  local  lock  log  mail  opt  run  spool  test  tmp
15:40:05
#cd test

15:40:34
#ls
doc  pics  source
15:40:35
#tree
.
├── doc
│   ├── c
│   └── scripting
│       ├── perl
│       └── python
├── pics
└── source
7 directories, 0 files
15:40:39
#cd /var

15:40:54
#ls
backups  cache  lib  local  lock  log  mail  opt  run  spool  test  tmp
15:40:55
#cd test/pics

15:41:06
#ls

15:41:19
#ls
forweb
15:41:20
#tree
.
└── forweb
    └── info
        └── 2002
            └── summer
4 directories, 0 files
15:41:23
#cd test
l3script: cd: test: Нет такого файла или каталога
15:42:11
#cd /

15:42:19
#ls
bin   dev  etc   initrd.img  lib32  lost+found  mnt  pics  root  sbin     source  sys  usr  vmlinuz
boot  doc  home  lib         lib64  media       opt  proc  run   selinux  srv     tmp  var
15:42:22
#cd /pics

15:42:40
#tree
.
└── forweb
    └── info
        └── 2002
            └── summer
4 directories, 0 files
15:42:43
#cd /

15:42:46
#ls -l
итого 96
drwxr-xr-x  2 root root  4096 Окт 13 17:44 bin
drwxr-xr-x  3 root root  4096 Окт 13 17:49 boot
drwxr-xr-x 12 root root  2960 Окт 17 18:43 dev
drwxr-xr-x  3 root root  4096 Окт 20 16:34 doc
drwxr-xr-x 68 root root  4096 Окт 20 11:00 etc
drwxr-xr-x  3 root root  4096 Июн 27 11:20 home
lrwxrwxrwx  1 root root    30 Июн 27 11:00 initrd.img -> /boot/initrd.img-3.2.0-4-amd64
drwxr-xr-x 13 root root  4096 Окт 15 16:22 lib
drwxr-xr-x  2 root root  4096 Окт 15 16:22 lib32
...
drwxr-xr-x 12 root root   420 Окт 17 18:43 run
drwxr-xr-x  2 root root  4096 Окт 13 17:44 sbin
drwxr-xr-x  2 root root  4096 Июн 10  2012 selinux
drwxr-xr-x  3 root root  4096 Окт 20 16:31 source
drwxr-xr-x  2 root root  4096 Июн 27 10:57 srv
drwxr-xr-x 13 root root     0 Окт 17 18:43 sys
drwxrwxrwt  2 root root  4096 Окт 20 16:17 tmp
drwxr-xr-x 11 root root  4096 Окт 15 16:22 usr
drwxr-xr-x 12 root root  4096 Окт 20 16:30 var
lrwxrwxrwx  1 root root    26 Июн 27 11:00 vmlinuz -> boot/vmlinuz-3.2.0-4-amd64
15:42:48
#rm -r /pics

15:43:00
#cd /

15:43:04
#ls -l
итого 92
drwxr-xr-x  2 root root  4096 Окт 13 17:44 bin
drwxr-xr-x  3 root root  4096 Окт 13 17:49 boot
drwxr-xr-x 12 root root  2960 Окт 17 18:43 dev
drwxr-xr-x  3 root root  4096 Окт 20 16:34 doc
drwxr-xr-x 68 root root  4096 Окт 20 11:00 etc
drwxr-xr-x  3 root root  4096 Июн 27 11:20 home
lrwxrwxrwx  1 root root    30 Июн 27 11:00 initrd.img -> /boot/initrd.img-3.2.0-4-amd64
drwxr-xr-x 13 root root  4096 Окт 15 16:22 lib
drwxr-xr-x  2 root root  4096 Окт 15 16:22 lib32
...
drwxr-xr-x 12 root root   420 Окт 17 18:43 run
drwxr-xr-x  2 root root  4096 Окт 13 17:44 sbin
drwxr-xr-x  2 root root  4096 Июн 10  2012 selinux
drwxr-xr-x  3 root root  4096 Окт 20 16:31 source
drwxr-xr-x  2 root root  4096 Июн 27 10:57 srv
drwxr-xr-x 13 root root     0 Окт 17 18:43 sys
drwxrwxrwt  2 root root  4096 Окт 20 16:17 tmp
drwxr-xr-x 11 root root  4096 Окт 15 16:22 usr
drwxr-xr-x 12 root root  4096 Окт 20 16:30 var
lrwxrwxrwx  1 root root    26 Июн 27 11:00 vmlinuz -> boot/vmlinuz-3.2.0-4-amd64
15:43:08
#cd /var/test

15:43:14
#touch {a,b,c}

15:43:30
#ls
a  b  c  doc  pics  source
15:43:32
#rm a b c

15:43:52
#ls
doc  pics  source
15:43:53
#rm -r pics

15:44:08
#tree
.
├── doc
│   ├── c
│   └── scripting
│       ├── perl
│       └── python
└── source
6 directories, 0 files
15:44:10
#rm -r doc

15:44:44
#tree
.
└── source
1 directory, 0 files
15:44:46
#rm -r source

15:45:26
#mkdir -p source/{php,html,python,java} doc/{lab,practice} pics{forweb,forfb}

15:47:24
#tree
.
├── doc
│   ├── lab
│   └── practice
├── picsforfb
├── picsforweb
└── source
    ├── html
    ├── java
    ├── php
    └── python
10 directories, 0 files
15:47:26
#rmdir picsforfb picsforweb

15:47:54
#tree
.
├── doc
│   ├── lab
│   └── practice
└── source
    ├── html
    ├── java
    ├── php
    └── python
8 directories, 0 files
15:48:25
#rmdir -p doc source
rmdir: не удалось удалить «doc»: Каталог не пуст
rmdir: не удалось удалить «source»: Каталог не пуст
15:48:30
#rm -r doc source

15:48:43
#tree
.
0 directories, 0 files
15:49:01
#mkdir -p -v -i source/{php,html,python,java} doc/{lab,practice} pics/{forweb,forfb}
mkdir: неверный ключ -- i
Попробуйте «mkdir --help» для получения более подробного описания.
15:49:31
#tree
.
├── doc
│   ├── lab
│   └── practice
├── pics
│   ├── forfb
│   └── forweb
└── source
    ├── html
    ├── java
    ├── php
    └── python
11 directories, 0 files
15:49:38
#touch pics/forfb/{a,b,c,d} source/html/{html5,html}

15:50:55
#tree
.
├── doc
│   ├── lab
│   └── practice
├── pics
│   ├── forfb
│   │   ├── a
│   │   ├── b
│   │   ├── c
│   │   └── d
│   └── forweb
└── source
    ├── html
    │   ├── html
    │   └── html5
    ├── java
    ├── php
    └── python
11 directories, 6 files
15:51:25
#touch -i pics/forweb/{a,b,c,d}
touch: неверный ключ -- i
Попробуйте «touch --help» для получения более подробного описания.

Статистика

Время первой команды журнала15:20:18 2014-10-20
Время последней команды журнала15:51:25 2014-10-20
Количество командных строк в журнале101
Процент команд с ненулевым кодом завершения, % 7.92
Процент синтаксически неверно набранных команд, % 0.00
Суммарное время работы с терминалом *, час 0.52
Количество командных строк в единицу времени, команда/мин 3.25
Частота использования команд
tree25|========================| 24.75%
cd20|===================| 19.80%
ls19|==================| 18.81%
rm16|===============| 15.84%
mkdir12|===========| 11.88%
touch3|==| 2.97%
less2|=| 1.98%
pwd2|=| 1.98%
rmdir2|=| 1.98%
____
*) Интервалы неактивности длительностью 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$