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

Содержание

Журнал

Среда (05/19/10)

/dev/pts/4
10:20:57
$ls

прошло >2 часов
13:00:14
$cp no_file_with_this_name /tmp; echo $?
cp: невозможно выполнить stat для `no_file_with_this_name': Нет такого файла или каталога
1
13:01:04
$touch no_file_with_this_name

13:02:06
$test 5 -gt 1; echo $?
0
13:02:32
$test 5 -lt 1; echo $?
1
13:02:42
$test -z "$STRING"

13:03:28
$test -z "$STRING"; echo $?
0
прошло 68 минут
14:12:04
$test "$P" !=print; echo $?
l3script: test: : ожидается использование унарного оператора
2
14:13:06
$test "$P" != print; echo $?
0
14:13:16
$test -e /etc/motd; echo $?
0
14:14:21
$test -d /usr/local/bin; echo $?
0
14:15:02
$test -r /etc/shadow; echo $?
1
14:16:06
$test -k /tmp; echo $?
0
14:16:33
$date
Срд Май 19 11:17:29 UTC 2010
14:17:29
$man test
14:19:42
$test -w /etc/passwd; echo $?
1
14:20:13
$echo "Your favorite colour is?" ; read FAV_COL ; \
>
Your favorite colour is?
Black
14:25:53
$echo $FAV_COL
Black
14:26:07
$echo $?
0
14:28:01
$echo "Your favorite colour is?" ; read FAV_COL ; \
> echo $?
Your favorite colour is?
Red
0
14:29:57
$test $EUID -ne 0 -a -r /etc/shadow && \
> echo 'Warning! File /etc/shadow is read-only'
14:32:17
$echo "Ваша любимая ОС?"; \
> read FAV_OS ; [ "$FAV_OS" == "BSD" ] || echo "Cтранно..."
Ваша любимая ОС?
Винда
Cтранно...
14:36:48
$A=0

14:37:24
$while [ $A -lt 10 ]
> do
> A=$((A+1))
> echo $A
> done
1
2
3
4
5
6
7
8
9
10
14:38:22
$for file in /etc/*
> do
> [ -r $file ] || echo $file
> done
/etc/fuse.conf
/etc/group-
/etc/gshadow
/etc/gshadow-
/etc/passwd-
/etc/shadow
/etc/shadow-
/etc/sudoers
14:39:37
$echo 'О какой команде вы хотели бы получиьть информацию?' ; \
> select command in man touch mount make exit clear
> do
> whatis $command
> break
> done
О какой команде вы хотели бы получить информацию?
1) man
2) touch
3) mount
4) make
5) exit
6) clear
#? 4
make (1)             - GNU make utility to maintain groups of programs
прошло 11 минут
14:51:03
$func() {
> if [ -z "$1" ]
> then
> echo "No parameters passed to function."
> return 0
> else
> echo "Param #1 is $1."
> fi
> if [ "$2" ]
> then
> echo "Parameter #2 is $2."
> fi
> }
14:56:02
$func
No parameters passed to function.
14:56:09
$func first
Param #1 is first.
14:56:16
$func first second
Param #1 is first.
Parameter #2 is second.
14:56:28
$vim rn
--- /dev/null	2010-05-17 20:40:51.371245452 +0000
+++ rn	2010-05-19 12:20:05.000000000 +0000
@@ -0,0 +1,2 @@
+#!/usr/local/bin/bash
+
прошло 23 минуты
15:20:06
$ls
backup  bin  names  newfile  no_file_with_this_name  proj  rn  soft
15:20:08
$vim rn
--- /tmp/l3-saved-3247.22546.3369	2010-05-19 12:20:18.000000000 +0000
+++ rn	2010-05-19 12:25:58.000000000 +0000
@@ -1,2 +1,7 @@
 #!/usr/local/bin/bash
 
+if [ $# -ne 2 ]
+then
+	echo "Использование: 'basename $0' old-pattern new-pattern"
+	exit 1
+fi
15:25:58
$ls
backup  bin  names  newfile  no_file_with_this_name  proj  rn  soft
15:26:02
$man ls
15:27:31
$ls -lh
итого 28K
drwxr-xr-x 3 user user 4,0K Май 17 11:56 backup
drwxr-xr-x 2 user user 4,0K Май 17 11:49 bin
drwxr-xr-x 3 user user 4,0K Май 18 09:21 names
-rw-r--r-- 1 user user  957 Май 18 10:01 newfile
-rw-r--r-- 1 user user    0 Май 19 10:01 no_file_with_this_name
drwxr-xr-x 3 user user 4,0K Май 17 11:56 proj
-rw-r--r-- 1 user user  129 Май 19 12:25 rn
drwxr-xr-x 2 user user 4,0K Май 19 07:16 soft
15:27:39
$vim rn
--- /tmp/l3-saved-3247.7716.888	2010-05-19 12:27:51.000000000 +0000
+++ rn	2010-05-19 12:38:55.000000000 +0000
@@ -5,3 +5,31 @@
 	echo "Использование: 'basename $0' old-pattern new-pattern"
 	exit 1
 fi
+
+number=0
+
+for name in *$1*
+do
+	if [ -f $name ]
+	then
+		fname='basename $name'
+		n='echo $fname | sed -e "s/$1/$2/"'
+		mv $fname $n
+
+		number=$((number+1))
+
+	fi
+done
+
+rem='expr $number % 10'
+if [ $rem -eq 1 ]
+then
+	echo "Переименован $number файл."
+else
+	if [ $rem -qt 1 -a $rem -lt 5 ]
+	then
+		echo "Переименовано $number файла"
+	else
+		echo "Переименовано $number файлов"
+	fi
+fi
прошло 11 минут
15:38:55
$chmod -x rn

15:39:10
$ls
backup  bin  names  newfile  no_file_with_this_name  proj  rn  soft
15:39:12
$ls -lh
итого 28K
drwxr-xr-x 3 user user 4,0K Май 17 11:56 backup
drwxr-xr-x 2 user user 4,0K Май 17 11:49 bin
drwxr-xr-x 3 user user 4,0K Май 18 09:21 names
-rw-r--r-- 1 user user  957 Май 18 10:01 newfile
-rw-r--r-- 1 user user    0 Май 19 10:01 no_file_with_this_name
drwxr-xr-x 3 user user 4,0K Май 17 11:56 proj
-rw-r--r-- 1 user user  563 Май 19 12:38 rn
drwxr-xr-x 2 user user 4,0K Май 19 07:16 soft
15:39:21
$man chmod
15:41:14
$chmod +x rn

15:41:40
$ls -lh
итого 28K
drwxr-xr-x 3 user user 4,0K Май 17 11:56 backup
drwxr-xr-x 2 user user 4,0K Май 17 11:49 bin
drwxr-xr-x 3 user user 4,0K Май 18 09:21 names
-rw-r--r-- 1 user user  957 Май 18 10:01 newfile
-rw-r--r-- 1 user user    0 Май 19 10:01 no_file_with_this_name
drwxr-xr-x 3 user user 4,0K Май 17 11:56 proj
-rwxr-xr-x 1 user user  563 Май 19 12:38 rn
drwxr-xr-x 2 user user 4,0K Май 19 07:16 soft
15:41:44
$touch 123.jpeg

15:42:05
$touch 666.jpeg

15:42:11
$touch 777.jpeg

15:42:16
$touch 953.jpeg

15:42:23
$ls
123.jpeg  777.jpeg  backup  names    no_file_with_this_name  rn
666.jpeg  953.jpeg  bin     newfile  proj                    soft
15:42:25
$~/rn .jpeg .jpg
l3script: /home/user/rn: /usr/local/bin/bash: плохой интерпретатор: Нет такого файла или каталога
15:43:05
$rn .jpeg .jpg
l3script: rn: команда не найдена
15:43:19
$./rn .jpeg .jpg
l3script: ./rn: /usr/local/bin/bash: плохой интерпретатор: Нет такого файла или каталога
15:43:39
$$path

15:43:55
$echo $PATH
/home/user/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
15:44:09
$ls /bin/bash
/bin/bash
15:44:47
$vim rn
--- /tmp/l3-saved-3247.21758.7258	2010-05-19 12:44:56.000000000 +0000
+++ rn	2010-05-19 12:45:12.000000000 +0000
@@ -1,4 +1,4 @@
-#!/usr/local/bin/bash
+#!/bin/bash
 
 if [ $# -ne 2 ]
 then
15:45:12
$./rn .jpeg .jpg
mv: неверный ключ -- «e»
Попробуйте `mv --help' для получения более подробного описания.
mv: неверный ключ -- «e»
Попробуйте `mv --help' для получения более подробного описания.
mv: неверный ключ -- «e»
Попробуйте `mv --help' для получения более подробного описания.
mv: неверный ключ -- «e»
Попробуйте `mv --help' для получения более подробного описания.
./rn: line 25: [: слишком много аргументов
./rn: line 29: [: слишком много аргументов
Переименовано 4 файлов
15:45:18
$vim rn
15:46:48
$scp rn user@192.168.16.21:/~
The authenticity of host '192.168.16.21 (192.168.16.21)' can't be established.
DSA key fingerprint is 13:3f:fb:2a:53:62:8e:f8:0e:c7:3a:c9:10:99:b6:25.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.16.21' (DSA) to the list of known hosts.
Password:
scp: /~: Permission denied
15:47:20
$scp rn user@192.168.16.21:/home/user
\Password:
rn                                            100%  553     0.5KB/s   00:00
15:48:37
$ls
123.jpeg  777.jpeg  backup  names    no_file_with_this_name  rn
666.jpeg  953.jpeg  bin     newfile  proj                    soft
15:48:46
$./rn
Использование: 'basename ./rn' old-pattern new-pattern
15:48:59
$ls
123.jpeg  777.jpeg  backup  names    no_file_with_this_name  rn
666.jpeg  953.jpeg  bin     newfile  proj                    soft
15:50:16
$vim rn
--- /tmp/l3-saved-3247.5548.1482	2010-05-19 13:02:23.000000000 +0000
+++ rn	2010-05-19 13:03:39.000000000 +0000
@@ -12,8 +12,8 @@
 do
 	if [ -f $name ]
 	then
-		fname='basename $name'
-		n='echo $fname | sed -e "s/$1/$2/"'
+		fname=`basename $name`
+		n=`echo $fname | sed -e "s/$1/$2/"`
 		mv $fname $n
 
 		number=$((number+1))
@@ -21,12 +21,12 @@
 	fi
 done
 
-rem='expr $number % 10'
+rem=`expr $number % 10`
 if [ $rem -eq 1 ]
 then
 	echo "Переименован $number файл."
 else
-	if [ $rem -qt 1 -a $rem -lt 5 ]
+	if [ $rem -gt 1 -a $rem -lt 5 ]
 	then
 		echo "Переименовано $number файла"
 	else
прошло 13 минут
16:03:39
$./rn jpeg jpg
Переименовано 4 файла
16:03:53
$ls
123.jpg  777.jpg  backup  names    no_file_with_this_name  rn
666.jpg  953.jpg  bin     newfile  proj                    soft

Статистика

Время первой команды журнала10:20:57 2010- 5-19
Время последней команды журнала16:03:53 2010- 5-19
Количество командных строк в журнале65
Процент команд с ненулевым кодом завершения, % 9.23
Процент синтаксически неверно набранных команд, % 1.54
Суммарное время работы с терминалом *, час 1.92
Количество командных строк в единицу времени, команда/мин 0.56
Частота использования команд
echo18|=====================| 21.43%
ls12|==============| 14.29%
test12|==============| 14.29%
rn6|=======| 7.14%
vim6|=======| 7.14%
touch5|=====| 5.95%
\5|=====| 5.95%
func3|===| 3.57%
man3|===| 3.57%
chmod2|==| 2.38%
scp2|==| 2.38%
read2|==| 2.38%
$path1|=| 1.19%
&1|=| 1.19%
while1|=| 1.19%
cp1|=| 1.19%
for1|=| 1.19%
func()1|=| 1.19%
A=01|=| 1.19%
date1|=| 1.19%
____
*) Интервалы неактивности длительностью 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$