/l3/users/10-01-2007/nt-ladm/linux1.unix.nt/user :1 :2 :3 :4 :5 :6 :7 :8 :9 :10 :11 :12 :13 :14 :15 :16 :17 :18 :19 |
|
$ls ~
BACKUP C ERROR.FILE NAMES new_program PROJECTX SORTED_PASSWD UNSORTED BASE Desktop FILE NEWFILE NEW.TXT SH TEST VERY_LONG_FILE_NAME BIN DESKTOP files new_function no_file_with_this_name soft TEXT BODY ERRLOG FILES new_help PROJ SORTED TOUCHLIST |
$cd home
bash: cd: home: No such file or directory |
$cd sh
bash: cd: sh: No such file or directory |
$cd SH
|
$ls
b.C c.C cpr.sh d.C e.C par.sh rn |
$fuser /ISO
Cannot stat /ISO: No such file or directory Cannot stat /ISO: No such file or directory |
$ls
BACKUP DESKTOP NAMES no_file_with_this_name SORTED_PASSWD BASE ERRLOG NEWFILE PROJ TEST BIN ERROR.FILE new_function PROJECTX TEXT BODY FILE new_help SH TOUCHLIST C files new_program soft UNSORTED Desktop FILES NEW.TXT SORTED VERY_LONG_FILE_NAME |
$less new_function
|
$vi new_function
1,2c1 < #!/bin/bash < set -x --- > #!/bin/sh 16a16 > |
$sh new_function 1 2
Input your parameters 1 2 3 No patrameters |
$vi new_function
2,4d1 < < echo "Input your parameters" < read VAR 15d11 < func |
$vi new_function
|
$sh new_function
|
$func 1 2
bash: func: command not found |
$sh new_function
|
$vi new_function
1d0 < #!/bin/sh |
$. new_function
|
$func 1 2
Param #1 is 1 Parameter #2 is 2 |
$cat new_function
func () { if [ -z "$1" ] then echo "No patrameters" return 0 else echo "Param #1 is $1" fi if [ "$2" ] then echo "Parameter #2 is $2" fi } |
$func 1 2
Param #1 is 1 Parameter #2 is 2 |
$vim new_function
11d10 < |
$. new_function
|
$func r e
Param #1 is r Parameter #2 is e |
$mount /etc/fstab
mount: can't find /etc/fstab in /etc/fstab or /etc/mtab |
$vi /etc/fstab
|
$mount --help
Usage: mount -V : print version mount -h : print this help mount : list mounted filesystems mount -l : idem, including volume labels So far the informational part. Next the mounting. The command is `mount [-t fstype] something somewhere'. Details found in /etc/fstab may be omitted. mount -a [-t|-O] ... : mount all stuff from /etc/fstab mount device : mount device at the known place mount directory : mount known device here mount -t type dev dir : ordinary mount command Note that one does not really mount a device, one mounts a filesystem (of the given type) found on the device. One can also mount an already visible directory tree elsewhere: mount --bind olddir newdir or move a subtree: mount --move olddir newdir A device can be given by name, say /dev/hda1 or /dev/cdrom, or by label, using -L label or by uuid, using -U uuid . Other options: [-nfFrsvw] [-o options] [-p passwdfd]. For many more details, say man 8 mount . |
$cat /etc/mtab
/dev/sda1 / ext3 rw,errors=remount-ro 0 0 tmpfs /lib/init/rw tmpfs rw,nosuid,mode=0755 0 0 proc /proc proc rw,noexec,nosuid,nodev 0 0 sysfs /sys sysfs rw,noexec,nosuid,nodev 0 0 procbususb /proc/bus/usb usbfs rw 0 0 udev /dev tmpfs rw,mode=0755 0 0 tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0 devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=620 0 0 /dev/sda7 /home ext3 rw 0 0 /dev/sda5 /tmp ext3 rw 0 0 /dev/sda8 /usr ext3 rw 0 0 /dev/sda6 /var ext3 rw 0 0 |
$mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro) tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) procbususb on /proc/bus/usb type usbfs (rw) udev on /dev type tmpfs (rw,mode=0755) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620) /dev/sda7 on /home type ext3 (rw) /dev/sda5 on /tmp type ext3 (rw) /dev/sda8 on /usr type ext3 (rw) /dev/sda6 on /var type ext3 (rw) |
$fuser
No process specification given Usage: fuser [ -a | -s | -c ] [ -n SPACE ] [ -SIGNAL ] [ -kimuv ] NAME... [ - ] [ -n SPACE ] [ -SIGNAL ] [ -kimuv ] NAME... fuser -l fuser -V Show which processes use the named files, sockets, or filesystems. -a display unused files too -c mounted FS -f silently ignored (for POSIX compatibility) -i ask before killing (ignored without -k) ... -n SPACE search in this name space (file, udp, or tcp) -s silent operation -SIGNAL send this signal instead of SIGKILL -u display user IDs -v verbose output -V display version information -4 search IPv4 sockets only -6 search IPv6 sockets only - reset options udp/tcp names: [local_port][,[rmt_host][,[rmt_port]]] |
$fuser -a
No process specification given Usage: fuser [ -a | -s | -c ] [ -n SPACE ] [ -SIGNAL ] [ -kimuv ] NAME... [ - ] [ -n SPACE ] [ -SIGNAL ] [ -kimuv ] NAME... fuser -l fuser -V Show which processes use the named files, sockets, or filesystems. -a display unused files too -c mounted FS -f silently ignored (for POSIX compatibility) -i ask before killing (ignored without -k) ... -n SPACE search in this name space (file, udp, or tcp) -s silent operation -SIGNAL send this signal instead of SIGKILL -u display user IDs -v verbose output -V display version information -4 search IPv4 sockets only -6 search IPv6 sockets only - reset options udp/tcp names: [local_port][,[rmt_host][,[rmt_port]]] |
$fuser -l
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS UNUSED |
$fuser -V
fuser (PSmisc) 22.3 Copyright (C) 1993-2005 Werner Almesberger and Craig Small PSmisc comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under the terms of the GNU General Public License. For more information about these matters, see the files named COPYING. |
$fuser -v
No process specification given Usage: fuser [ -a | -s | -c ] [ -n SPACE ] [ -SIGNAL ] [ -kimuv ] NAME... [ - ] [ -n SPACE ] [ -SIGNAL ] [ -kimuv ] NAME... fuser -l fuser -V Show which processes use the named files, sockets, or filesystems. -a display unused files too -c mounted FS -f silently ignored (for POSIX compatibility) -i ask before killing (ignored without -k) ... -n SPACE search in this name space (file, udp, or tcp) -s silent operation -SIGNAL send this signal instead of SIGKILL -u display user IDs -v verbose output -V display version information -4 search IPv4 sockets only -6 search IPv6 sockets only - reset options udp/tcp names: [local_port][,[rmt_host][,[rmt_port]]] |
$cd
|
$cfdisk /dev/hda
|
$cfdisk
|
$su -
Password: l3-agent is already running: pid=4510; pidfile=/root/.lilalo/l3-agent.pid |
#cfdisk
|
#cfdisk
|
#mount --help
Usage: mount -V : print version mount -h : print this help mount : list mounted filesystems mount -l : idem, including volume labels So far the informational part. Next the mounting. The command is `mount [-t fstype] something somewhere'. Details found in /etc/fstab may be omitted. mount -a [-t|-O] ... : mount all stuff from /etc/fstab mount device : mount device at the known place mount directory : mount known device here mount -t type dev dir : ordinary mount command Note that one does not really mount a device, one mounts a filesystem (of the given type) found on the device. One can also mount an already visible directory tree elsewhere: mount --bind olddir newdir or move a subtree: mount --move olddir newdir A device can be given by name, say /dev/hda1 or /dev/cdrom, or by label, using -L label or by uuid, using -U uuid . Other options: [-nfFrsvw] [-o options] [-p passwdfd]. For many more details, say man 8 mount . |
#su -
l3-agent is already running: pid=4510; pidfile=/root/.lilalo/l3-agent.pid |
#exit
|
#exit
|
$su -
Password: l3-agent is already running: pid=4510; pidfile=/root/.lilalo/l3-agent.pid |
#exit
|
#mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro) tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) procbususb on /proc/bus/usb type usbfs (rw) udev on /dev type tmpfs (rw,mode=0755) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620) /dev/sda7 on /home type ext3 (rw) /dev/sda5 on /tmp type ext3 (rw) /dev/sda8 on /usr type ext3 (rw) /dev/sda6 on /var type ext3 (rw) |
#mount -t ext3
/dev/sda1 on / type ext3 (rw,errors=remount-ro) /dev/sda7 on /home type ext3 (rw) /dev/sda5 on /tmp type ext3 (rw) /dev/sda8 on /usr type ext3 (rw) /dev/sda6 on /var type ext3 (rw) |
#cd /etc/fstab
bash: cd: /etc/fstab: Not a directory |
#cd /etc
|
#ls
acpi dbus-1 group ld.so.conf.d network scrollkeeper.conf adduser.conf debconf.conf group- ld.so.hwcappkgs NetworkManager scsi_id.config adjtime debian_version gshadow libao.conf nsswitch.conf securetty aliases default gshadow- libgda ntp.conf security alsa defoma gssapi_mech.conf libpaper.d openoffice selinux alternatives deluser.conf gtk-2.0 linux_logo.conf opt services anacrontab dhcp3 hal locale.gen pam.conf sestatus.conf apm dictd host.conf localtime pam.d sgml apt dictionaries-common hostname login.defs pango shadow at.deny discover.conf hosts logrotate.conf papersize shadow- ... cron.daily gaim issue modules rc5.d update-notifier cron.hourly gconf issue.linuxlogo modutils rc6.d vga cron.monthly gdm issue.linuxlogo.ascii motd rc.local vim crontab gimp issue.net motd.tail rcS.d w3m cron.weekly gnome java mtab reportbug.conf wgetrc csh gnome-vfs-2.0 kde3 mtools.conf resolv.conf wodim.conf csh.cshrc gnome-vfs-mime-magic kernel-img.conf Muttrc rmt wpa_supplicant csh.login gpm.conf ldap nanorc rpc X11 csh.logout gre.d ld.so.cache Net sane.d xdg cups groff ld.so.conf netscsid.conf screenrc xml |
#less fstab
|
#ls /media/cdrom
|
#mount /media/cdrom
mount: special device /dev/hdf does not exist |
#mount /media/cdrom
mount: special device /dev/hdf does not exist |
#mount /dev/cdrom
mount: /dev/hdb already mounted or /media/freebsd_packages busy mount: according to mtab, /dev/hdb is already mounted on /media/freebsd_packages |
#dmesg | grep DVD
hdb: HL-DT-STDVD-ROM GDR8163B, ATAPI CD/DVD-ROM drive hdb: ATAPI 52X DVD-ROM drive, 256kB Cache, UDMA(33) |
#umount /media/cdrom
umount: /media/cdrom: not mounted |
#mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro) tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) procbususb on /proc/bus/usb type usbfs (rw) udev on /dev type tmpfs (rw,mode=0755) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620) /dev/sda7 on /home type ext3 (rw) /dev/sda5 on /tmp type ext3 (rw) /dev/sda8 on /usr type ext3 (rw) /dev/sda6 on /var type ext3 (rw) /dev/hdb on /media/freebsd_packages type iso9660 (ro,noexec,nosuid,nodev,uid=1000,gid=1000,iocharset=utf8) |
#umount /media/freebsd_packages
|
#mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro) tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) procbususb on /proc/bus/usb type usbfs (rw) udev on /dev type tmpfs (rw,mode=0755) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620) /dev/sda7 on /home type ext3 (rw) /dev/sda5 on /tmp type ext3 (rw) /dev/sda8 on /usr type ext3 (rw) /dev/sda6 on /var type ext3 (rw) |
#mount /dev/Aza
mount: can't find /dev/Aza in /etc/fstab or /etc/mtab |
#mount /etc/fstab
mount: can't find /etc/fstab in /etc/fstab or /etc/mtab |
#mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro) tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) procbususb on /proc/bus/usb type usbfs (rw) udev on /dev type tmpfs (rw,mode=0755) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620) /dev/sda7 on /home type ext3 (rw) /dev/sda5 on /tmp type ext3 (rw) /dev/sda8 on /usr type ext3 (rw) /dev/sda6 on /var type ext3 (rw) |
#mount /media/cdrom
mount: special device /dev/hdf does not exist |
#mount /dev/cdrom
mount: can't find /dev/hdb in /etc/fstab or /etc/mtab |
#mount /dev/hdb
mount: can't find /dev/hdb in /etc/fstab or /etc/mtab |
#cd dev
bash: cd: dev: No such file or directory |
#cd media
bash: cd: media: No such file or directory |
#cd
|
#cd media
bash: cd: media: No such file or directory |
#cd media
|
#ls
45 Hello install motd1 mymotd mymotd.utf mynologin mytgz nohup.out soft user |
#cd /
|
#ls
bin cdrom etc initrd lib lost+found mnt proc sbin skeleton srv tmp var boot dev home initrd.img lib64 media opt root selinux soft sys usr vmlinuz |
#mount dev/cdrom
mount: can't find /dev/hdb in /etc/fstab or /etc/mtab |
#cd
|
#mount /dev/cdrom
mount: can't find /dev/hdb in /etc/fstab or /etc/mtab |
#mount /dev/hdb
mount: can't find /dev/hdb in /etc/fstab or /etc/mtab |
#mount cdrom
mount: can't find cdrom in /etc/fstab or /etc/mtab |
#cd media
bash: cd: media: No such file or directory |
#cd /media
|
#ls
cdrom cdrom0 floppy floppy0 freebsd_packages |
#cd /media/cdrom
|
#ls
|
#ls -l
итого 0 |
#ls -l
итого 0 |
#cd /media/cdrom
|
#ls -l
итого 0 |
#mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro) tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) procbususb on /proc/bus/usb type usbfs (rw) udev on /dev type tmpfs (rw,mode=0755) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620) /dev/sda7 on /home type ext3 (rw) /dev/sda5 on /tmp type ext3 (rw) /dev/sda8 on /usr type ext3 (rw) /dev/sda6 on /var type ext3 (rw) /dev/hdb on /media/freebsd_packages type iso9660 (ro,noexec,nosuid,nodev,uid=1000,gid=1000,iocharset=utf8) |
#cd /media/f
floppy/ floppy0/ freebsd_packages/ |
#cd /media/f
floppy/ floppy0/ freebsd_packages/ |
#cd /media/freebsd_packages/
|
#ls -l
итого 743 -rw-r--r-- 1 user user 465072 2005-11-19 13:18 FILES.ls-lR.gz drwxr-xr-x 92 user user 12288 2005-11-19 11:26 FreeBSD drwxr-xr-x 2 user user 2048 2005-11-19 13:18 Lafox.Net -rw-r--r-- 1 user user 279074 2005-11-19 13:24 MD5SUMS.LN -r--r--r-- 1 user user 888 2005-11-19 13:24 TRANS.TBL |
#cd
|
#umount /media/freebsd_packages
|
#mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro) tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) procbususb on /proc/bus/usb type usbfs (rw) udev on /dev type tmpfs (rw,mode=0755) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620) /dev/sda7 on /home type ext3 (rw) /dev/sda5 on /tmp type ext3 (rw) /dev/sda8 on /usr type ext3 (rw) /dev/sda6 on /var type ext3 (rw) |
#mount /dev/hdb
mount: can't find /dev/hdb in /etc/fstab or /etc/mtab |
/dev/sda1 / ext3 rw,errors=remount-ro 0 0 tmpfs /lib/init/rw tmpfs rw,nosuid,mode=0755 0 0 proc /proc proc rw,noexec,nosuid,nodev 0 0 sysfs /sys sysfs rw,noexec,nosuid,nodev 0 0 procbususb /proc/bus/usb usbfs rw 0 0 udev /dev tmpfs rw,mode=0755 0 0 tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0 devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=620 0 0 /dev/sda7 /home ext3 rw 0 0 /dev/sda5 /tmp ext3 rw 0 0 /dev/sda8 /usr ext3 rw 0 0 /dev/sda6 /var ext3 rw 0 0
func () { if [ -z "$1" ] then echo "No patrameters" return 0 else echo "Param #1 is $1" fi if [ "$2" ] then echo "Parameter #2 is $2" fi }
Время первой команды журнала | 15:52:25 2007- 1-15 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Время последней команды журнала | 10:02:26 2007- 1-16 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Количество командных строк в журнале | 101 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Процент команд с ненулевым кодом завершения, % | 27.72 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Процент синтаксически неверно набранных команд, % | 2.97 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Суммарное время работы с терминалом *, час | 1.83 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Количество командных строк в единицу времени, команда/мин | 0.92 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
Частота использования команд |
|
В журнал автоматически попадают все команды, данные в любом терминале системы.
Для того чтобы убедиться, что журнал на текущем терминале ведётся, и команды записываются, дайте команду 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