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

Содержание

Журнал

Четверг (10/18/18)

/dev/pts/2
10:12:55
$echo $?
0
10:12:56
$test -w /etc/passwd

10:13:24
$echo $?
1
10:13:26
$x=5

10:14:02
$y=10

10:14:06
$test x>y

10:14:16
$echo $?
0
10:14:19
$x=10

10:14:31
$y=5

10:14:36
$test x>y

10:14:38
$echo $?
0
10:14:40
$test $x > $y

10:14:50
$echo $?
0
10:14:52
$x=5

10:14:58
$y=10

10:15:03
$test $x > $y

10:15:06
$echo $?
0
10:15:08
$test --help

10:16:54
$man test
10:17:21
$test $x -gt $y

10:17:29
$echo $?
1
10:17:32
$echo "What is your favorite color?"; read FAV_COL : \
> red
What is your favorite color?
^C
10:19:22
$echo "What is your favorite color?"; read FAV_COL : red
What is your favorite color?
echo Color - $FAV_COL
l3script: read: `:': not a valid identifier
10:20:10
$echo "What is your favorite color?"; read FAV_COL
What is your favorite color?
Color -$FAV_COL
10:20:44
$echo "What is your favorite color?"; read FAV_COL
What is your favorite color?
red
10:22:06
$echo "What is your favorite color?"; read FAV_COL; \
> echo color - $FAV_COL
What is your favorite color?
red
color - red
10:22:54
$test $EUID -ne 0 -a -r /etc/shadow && \
> echo 'Warning: file /etc/shadow you can write!'
10:25:38
$echo "Your favorite OS?:"; read FAV_OS ; ["$FAV_OS" == "BSD" ] && \
> echo "NICE!"
l3script: !": event not found
> echo "Your favorite OS?:"; read FAV_OS ; ["$FAV_OS" == "BSD" ] && \
> ^C
10:28:24
$echo "Your favorite OS?:"; read FAV_OS ; [" $FAV_OS" == "BSD" ] && \
> echo "super"
Your favorite OS?:
MacOS
l3script: [ MacOS: command not found
10:28:59
$echo "Your favorite OS?:"; read FAV_OS ; [" $FAV_OS" == "BSD" ] && \
> echo 'super'
Your favorite OS?:
MacOS
l3script: [ MacOS: command not found
10:29:33
$echo "Your favorite OS?:"; read FAV_OS ; [" $FAV_OS" == "BSD" ] && \
> echo 'ok'
Your favorite OS?:
BSD
l3script: [ BSD: command not found
10:29:52
$echo "Your favorite OS?"; read FAV_OS ; [ "$FAV_OS" == "BSD" ] && \
> echo 'ok'
Your favorite OS?
BSD
ok
10:30:41
$test -w /etc/passwd || \
> echo "You cant change the file /etc/passwd"
You cant change the file /etc/passwd
10:32:02
$echo "Favorite OS?"; \
> read FAV_OS ; [ "FAV_SO" == "BSD" ] || echo "No way!"
l3script: !": event not found
> ^C
10:33:53
$test -w /etc/passwd || \
> ^C
10:34:03
$echo "Favorite OS?"; \
> read FAV_OS ; [ "FAV_OS" == "BSD" ] || echo "No way"
Favorite OS?
MacOS
No way
10:34:36
$A=0

10:35:00
$while [ $A -lt 10]
> do
> A=$((A+1))
> echo $A
> done
l3script: [: missing `]'
10:35:38
$while [ $A -lt 10 ]; do A=$((A+1)); echo $A; done;
1
2
3
4
5
6
7
8
9
10
10:35:59
$for file in /etc/*; do [ -r $file ] || echo $file; done;
/etc/group-
/etc/gshadow
/etc/gshadow-
/etc/passwd-
/etc/shadow
/etc/shadow-
10:36:56
$echo 'do you want know about command' ;\
> read answer
do you want know about command
^C
10:39:32
$echo 'do you want know about command' ; \
> select comand in man touch mount make exit clear
> do
> whatis $command
> beak
> done
do you want know about command
1) man
2) touch
3) mount
4) make
5) exit
6) clear
#? 4
whatis what?
l3script: beak: command not found
#? make
whatis what?
l3script: beak: command not found
#? ^C
10:44:32
$echo "What is command needs to file info read"
What is command needs to file info read
10:45:08
$raed answer
l3script: raed: command not found
10:45:22
$read answer
man
10:45:35
$case $answer in
> "man" || "info" )
l3script: syntax error near unexpected token `||'
10:46:15
$case $answer in
> "man" | "info" )
> echo 'You right'
> ;;
> "what is" | "apropos" )
> echo 'Yep.'
> ;;
> * ) echo 'NO NO NO'
> ;;
> esac
You right
10:48:44
$echo 'Path to program: '
Path to program:
10:49:18
$read PROGRAM \;
if [-x $^C
10:49:55
$read PROGRAM \;
if [ -x "$PROGRAM" ]
l3script: read: `;': not a valid identifier
10:50:19
$read PROGRAM \
> if [ -x "$PROGRAM" ]
then
l3script: read: `[': not a valid identifier
10:51:45
$read PROGRAM
ls
10:52:42
$if [ -x "$PROGRAM" ]
> then
> "$PROGRAM"
> else
> echo -n "Cant run $PROGRAM."
> if [ -e "$PROGRAM" ]
> then
> echo 'This file not exec'
> else
> echo 'No such file'
> fi
> fi
Cant run ls.No such file
10:55:11
$func () {
> if  [ -z "$1" ]
> then
> echo "No params passed to func."
> return 0
> else
> echo "Param #1 is $1."
> fi
> if
>  [ "$2" ]
> then
> echo "Parameter #2 is $2."
> fi
> }
10:59:23
$func
No params passed to func.
10:59:43
$func first
Param #1 is first.
10:59:52
$func first second
Param #1 is first.
Parameter #2 is second.
11:00:04
$getconf ARG_MAX
2097152
11:03:13
$;s
l3script: syntax error near unexpected token `;'
прошло 33 минуты
11:37:08
$ls
10       freebsd.jpg                            names                          sh             < touchlist
5        granata.jpg                            newfile                        soft           unsorted
backup   Light_Alloy_4.4.784_RC2_by_FAFNIR.exe  no_file_with_this_name         sorted         y
bigfile  lpi 1                                  ogo.jpg                        sorted_passwd
bin      lpi 2                                  pamyatka.pdf                   source
errlog   man_smb_conf                           press_any_key_to_continue.jpg  text
file     matrix.jpg                             proj                           touchlist
11:37:14
$cd sh/

11:37:37
$ls
C.C  file.C  file.Cs  rn
11:37:39
$vi rn
11:39:56
$ls -l
total 4
-rw-r--r-- 1 user user    0 Oct  9  2014 C.C
-rw-r--r-- 1 user user    0 Oct  9  2014 file.C
-rw-r--r-- 1 user user    0 Oct  9  2014 file.Cs
-rwxr-xr-x 1 user user 1226 Oct  9  2014 rn
11:40:05
$./rn
Использование: rn old-pattern new-pattern
11:40:13
$./rn .cpp .c
Переименовано 0 файлов
11:40:30
$./rn .C .cpp
Переименовано 3 файла
11:40:49
$./rn .Cs .cpp
Переименовано 0 файлов
11:40:58
$ls -l
total 4
-rw-r--r-- 1 user user    0 Oct  9  2014 C.cpp
-rw-r--r-- 1 user user    0 Oct  9  2014 file.cpp
-rw-r--r-- 1 user user    0 Oct  9  2014 file.cpps
-rwxr-xr-x 1 user user 1226 Oct  9  2014 rn
11:41:07
$./rn .cpps .cpp
Переименован 1 файл.
11:41:19
$ls -l
total 4
-rw-r--r-- 1 user user    0 Oct  9  2014 C.cpp
-rw-r--r-- 1 user user    0 Oct  9  2014 file.cpp
-rwxr-xr-x 1 user user 1226 Oct  9  2014 rn
11:41:23
$touch a.jpeg b.jpeg c.jpeg d.jpeg e.jpeg

11:46:40
$ee sh
11:46:50
$nano sh
11:51:17
$nano rn
--- /tmp/l3-saved-10184.8116.3036	2018-10-18 12:51:20.659726305 +0300
+++ rn	2018-10-18 12:51:50.779762016 +0300
@@ -1,6 +1,8 @@
 #!/bin/bash
 
-if [ $# -ne 2 ]
+echo "Использование: `basename $0` old-pattern new-pattern"
+
+if [ $# -ne 3 ]
 then
    echo "Использование: `basename $0` old-pattern new-pattern"
    # Команда "rn .cpp .C" переименовывает все файлы содержащие в названии .cpp
11:51:59
$./rn dfg
Использование: rn old-pattern new-pattern
Использование: rn old-pattern new-pattern
11:52:06
$nano rn
прошло 69 минут
13:01:57
$fg 2
/usr/bin/nano "$@"
13:02:18
$!/bin/bash
[1]+  Stopped                 /usr/bin/nano "$@"
13:02:22
$jobs
[1]+  Stopped                 /usr/bin/nano "$@"
13:02:26
$jobs
[1]+  Stopped                 /usr/bin/nano "$@"
13:02:28
$jobs
[1]+  Stopped                 /usr/bin/nano "$@"
13:02:31
$jobs
[1]+  Stopped                 /usr/bin/nano "$@"
13:02:33
$fg 1
/usr/bin/nano "$@"
13:02:49
$!/bin/bash

13:02:52
$lastb
lastb: /var/log/btmp: Permission denied
прошло 17 минут
13:19:54
$finger ivan
Login: ivan                             Name: Ivan Ivanov
Directory: /home/ivan                   Shell: /bin/bash
Office: 9c, 044-123-4567                Home Phone: 044-765-4321
Last login Wed Oct 17 09:53 (EEST) on pts/1 from 192.168.15.120
No mail.
No Plan.
13:21:49
$last
user     pts/2        192.168.15.120   Thu Oct 18 08:56   still logged in
root     pts/0        192.168.15.120   Thu Oct 18 08:55   still logged in
root     pts/0        192.168.15.120   Wed Oct 17 10:04 - 17:08  (07:03)
user     pts/3        192.168.15.120   Wed Oct 17 10:01 - 17:08  (07:07)
ivan     pts/1        192.168.15.120   Wed Oct 17 09:53 - 16:56  (07:02)
ivan     pts/1        192.168.15.120   Wed Oct 17 09:46 - 09:53  (00:06)
root     pts/0        192.168.15.120   Wed Oct 17 09:43 - 10:04  (00:20)
user     pts/3        192.168.15.120   Wed Oct 17 08:59 - 10:01  (01:01)
petr     pts/2        192.168.15.120   Wed Oct 17 08:58 - 16:56  (07:57)
ivan     pts/1        192.168.15.120   Wed Oct 17 08:58 - 09:46  (00:47)
root     pts/0        192.168.15.120   Wed Oct 17 08:57 - 09:43  (00:45)
user     pts/4        192.168.15.120   Tue Oct 16 10:49 - 16:54  (06:05)
petr     pts/3        192.168.15.120   Tue Oct 16 10:44 - 16:54  (06:10)
ivan     pts/2        192.168.15.120   Tue Oct 16 10:39 - 16:54  (06:15)
ivan     pts/2        192.168.15.120   Tue Oct 16 10:23 - 10:30  (00:06)
root     pts/0        192.168.15.120   Tue Oct 16 09:50 - 16:54  (07:04)
wtmp begins Tue Oct 16 09:50:26 2018
13:22:04
$finger ivan
l3script: /usr/bin/finger: Permission denied
прошло >2 часов
/dev/pts/2
15:34:12
$logname
logname: no login name
15:35:27
$$LOGNAME
l3script: user: command not found
15:35:44
$echo $LOGNAME
user
15:35:48
$logname
logname: no login name
15:35:55
$whoami
user
15:36:16
$su -
Password:
l3-agent is already running: pid=2981; pidfile=/root/.lilalo/l3-agent.pid
15:36:35
#exit
exit
root@debian2:~# l3script
15:36:44
#exit
exit
root@debian2:~# exit
logout
15:36:51
$su --help
Usage: su [options] [LOGIN]
Options:
  -c, --command COMMAND         pass COMMAND to the invoked shell
  -h, --help                    display this help message and exit
  -, -l, --login                make the shell a login shell
  -m, -p,
  --preserve-environment        do not reset environment variables, and
                                keep the same shell
  -s, --shell SHELL             use SHELL instead of the default in passwd
15:36:59
$laslog
l3script: laslog: command not found
15:37:36
$lastlog
Username         Port     From             Latest
root             pts/0    192.168.15.120   Thu Oct 18 08:55:57 +0300 2018
daemon                                     **Never logged in**
bin                                        **Never logged in**
sys                                        **Never logged in**
sync                                       **Never logged in**
games                                      **Never logged in**
man                                        **Never logged in**
lp                                         **Never logged in**
mail                                       **Never logged in**
...
list                                       **Never logged in**
irc                                        **Never logged in**
gnats                                      **Never logged in**
nobody                                     **Never logged in**
libuuid                                    **Never logged in**
Debian-exim                                **Never logged in**
user             pts/2    192.168.15.120   Thu Oct 18 16:34:11 +0300 2018
sshd                                       **Never logged in**
ivan             pts/5    192.168.15.120   Thu Oct 18 15:28:45 +0300 2018
petr             pts/2    192.168.15.120   Wed Oct 17 08:58:57 +0300 2018
15:37:42
$last
user     pts/2        192.168.15.120   Thu Oct 18 16:34   still logged in
user     pts/2        192.168.15.120   Thu Oct 18 16:32 - 16:33  (00:01)
user     pts/2        192.168.15.120   Thu Oct 18 16:30 - 16:31  (00:00)
user     pts/2        192.168.15.120   Thu Oct 18 16:29 - 16:30  (00:01)
ivan     pts/5        192.168.15.120   Thu Oct 18 15:28   still logged in
user     pts/2        192.168.15.120   Thu Oct 18 08:56 - 16:29  (07:33)
root     pts/0        192.168.15.120   Thu Oct 18 08:55   still logged in
root     pts/0        192.168.15.120   Wed Oct 17 10:04 - 17:08  (07:03)
user     pts/3        192.168.15.120   Wed Oct 17 10:01 - 17:08  (07:07)
ivan     pts/1        192.168.15.120   Wed Oct 17 09:53 - 16:56  (07:02)
...
user     pts/3        192.168.15.120   Wed Oct 17 08:59 - 10:01  (01:01)
petr     pts/2        192.168.15.120   Wed Oct 17 08:58 - 16:56  (07:57)
ivan     pts/1        192.168.15.120   Wed Oct 17 08:58 - 09:46  (00:47)
root     pts/0        192.168.15.120   Wed Oct 17 08:57 - 09:43  (00:45)
user     pts/4        192.168.15.120   Tue Oct 16 10:49 - 16:54  (06:05)
petr     pts/3        192.168.15.120   Tue Oct 16 10:44 - 16:54  (06:10)
ivan     pts/2        192.168.15.120   Tue Oct 16 10:39 - 16:54  (06:15)
ivan     pts/2        192.168.15.120   Tue Oct 16 10:23 - 10:30  (00:06)
root     pts/0        192.168.15.120   Tue Oct 16 09:50 - 16:54  (07:04)
wtmp begins Tue Oct 16 09:50:26 2018

Статистика

Время первой команды журнала10:12:55 2018-10-18
Время последней команды журнала15:37:42 2018-10-18
Количество командных строк в журнале101
Процент команд с ненулевым кодом завершения, %16.83
Процент синтаксически неверно набранных команд, % 6.93
Суммарное время работы с терминалом *, час 1.48
Количество командных строк в единицу времени, команда/мин 1.14
Частота использования команд
echo26|=================| 17.93%
read15|==========| 10.34%
\13|========| 8.97%
test10|======| 6.90%
&6|====| 4.14%
rn6|====| 4.14%
ls5|===| 3.45%
func4|==| 2.76%
jobs4|==| 2.76%
nano3|==| 2.07%
["3|==| 2.07%
fg2|=| 1.38%
x=52|=| 1.38%
while2|=| 1.38%
last2|=| 1.38%
$y2|=| 1.38%
case2|=| 1.38%
do2|=| 1.38%
logname2|=| 1.38%
y=102|=| 1.38%
finger2|=| 1.38%
bash2|=| 1.38%
y2|=| 1.38%
exit2|=| 1.38%
done2|=| 1.38%
su2|=| 1.38%
laslog1|| 0.69%
lastlog1|| 0.69%
["$FAV_OS"1|| 0.69%
man1|| 0.69%
y=51|| 0.69%
cd1|| 0.69%
A=01|| 0.69%
ee1|| 0.69%
whoami1|| 0.69%
[1|| 0.69%
lastb1|| 0.69%
touch1|| 0.69%
s1|| 0.69%
getconf1|| 0.69%
for1|| 0.69%
x=101|| 0.69%
$LOGNAME1|| 0.69%
raed1|| 0.69%
vi1|| 0.69%
if1|| 0.69%
____
*) Интервалы неактивности длительностью 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$