/l3/users/26-02-2007/nt-ladm/linux1.net.nt/user :1 :2 :3 :4 :5 :6 :7 :8 :9 :10 :11 :12 :13 :14 :15 |
|
$echo "ÐаÑа лÑÐ±Ð¸Ð¼Ð°Ñ ÐС?" ; read FAV_OS ; [ "$FAV_OS" == "BSD" ]
&& \ >echo 'ХоÑоÑий вÑбоÑ' ÐаÑа лÑÐ±Ð¸Ð¼Ð°Ñ ÐС? ÐÐBSD bash: : command not found |
$test -w /etc/passwd || \ >echo "Вы не имеете права на изменени
файла /etc/passwd" bash: : command not found |
$test -w /etc/passwd || \ >echo "Вы не имеете права на изменени
|
$test -w /etc/passwd || \>echo "Вы не имеете права на изменение файла /etc/passwd
> > |
$test -w /etc/passwd || \ >echo "Вы не имеете права на изменение
файла /etc/passwd" файла /etc/passwd" bash: : command not found |
$test -w /etc/passwd || \ >
bash: : command not found |
$test -w /etc/passwd || \
|
$test -w /etc/passwd || \
bash: : command not found |
$test -w /etc/passwd || \
bash: : command not found |
$test -w /etc/passwd || \
> echo "Вы не имеете права на изменение файла /etc/passwd" Вы не имеете права на изменение файла /etc/passwd |
$A=0
bash: A: readonly variable |
$E=0
|
$while [$E -lt 10 ]
> do > E=&((E+1)) > echo $A > done bash: [0: command not found |
$while [$E -lt 10 ]; do E=&((E+1)); echo $E; done
bash: [0: command not found |
$while [ $E -lt 10 ] ; do E=$((E+1)); echo $E; done
1 2 3 4 5 6 7 8 9 10 |
$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 Чем Вы предпочитаете ездить? 1) man 2) touch 3) mount 4) make 5) exit 6) clear Чем Вы предпочитаете ездить? |
$echo $PS3
Чем Вы предпочитаете ездить? |
$unset $PS3
bash: unset: `Чем': not a valid identifier bash: unset: `Вы': not a valid identifier bash: unset: `предпочитаете': not a valid identifier bash: unset: `ездить?': not a valid identifier |
$PS3=
|
$echo 'При помощиО какой команде вы хотели бы получить информацию?
|
$echo 'При помощи какой комаО какой команде вы хотели бы получить
|
$echo 'При помощи какой команды \О какой команде вы хотели бы п
лучить информацию? ' ; select command in man touch mount make exit clear ; do w лучить информацию? ' ; select command in man touch mount make exit clear ; do w |
$echo 'При помощи какой команды \О какой команде вы хотели бы п
|
$echo 'ÐÑи помоÑи какой ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ \
> можно полÑÑÐ¸Ñ Ñ Ð¿Ð¾Ð»Ð½ÑÑ ÑпÑавоÑнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ пÑогÑамме?Ð' ÐÑи помоÑи какой ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ \ можно полÑÑиÑÑ Ð¿Ð¾Ð»Ð½ÑÑ ÑпÑавоÑнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ пÑогÑамме? |
$echo 'При помощи какой команды \
|
$echo 'При помощи какой команды
можно получить полную справочную информацию о программе?' При помощи какой команды можно получить полную справочную информацию о программе? |
$read answer
case $answer in |
$read answer
case $answer in "man" | "info" ) |
$echo ' Вы правы, Так оно и есть,'
Вы правы, Так оно и есть, |
$read answer
|
$vim answer
|
$vim answer
|
$sh answer
При помощи какой команды можно получить полную справочную информацию о программе? man Вы правы. Так оно и есть. |
$vim answer
|
$vim program
|
$vim program
|
$sh program
Полный путь к программе, которую нужно выполнить : mount program: line 3: read: `;': not a valid identifier Can't run mount. No such file |
$vim program
|
$vim program
|
$sh program
Полный путь к программе, которую нужно выполнить : ls program: line 3: read: `;': not a valid identifier Can't run ls. No such file |
$vim program
|
$sh program
Полный путь к программе, которую нужно выполнить : mount Can't run mount. No such file |
$sh program
Полный путь к программе, которую нужно выполнить : /bin/mount /dev/hdb1 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/hdb7 on /home type ext3 (rw) /dev/hdb5 on /tmp type ext3 (rw) /dev/hdb8 on /usr type ext3 (rw) /dev/hdb6 on /var type ext3 (rw) |
$cat program
#!/bin/sh echo 'Полный путь к программе, которую нужно выполнить :' read PROGRAM ; if [ -x "$PROGRAM" ] then "$PROGRAM" else echo -n "Can't run $PROGRAM. " if [ -e "$PROGRAM" ] then echo This file is not executable else echo No such file fi fi |
$cat answer
#!/bin/sh echo "При помощи какой команды можно получить полную справочную информацию о программе?" read answer case $answer in "man" | "info" ) echo 'Вы правы. Так оно и есть.' ;; "whatis" | "apropos" ) echo 'Не совсем так. При помощи этой команды » можно получить только краткую информацию.' ;; * ) echo 'Вы ошибаетесь' ;; esac |
$fun
function funzip |
$func () {
> if [ -z "$1" ] > then > echo "No perameters passed to function" > return 0 > else > echo "Param #1 is $1" > fi > if [ "$2" ] > then > echo "Parameter #2 is $2" > fi > } |
$func
No perameters passed to function |
$func first
Param #1 is first |
$func first second
Param #1 is first Parameter #2 is second |
$date
Чтв Мар 1 15:15:54 EET 2007 |
$echo $
$_ $L3_PARENT_TTY $A $L3_SESSION_ID $answer $L3_TAMPERED_EDITORS $B $LANG $BASH $LINENO $BASH_ARGC $LINES $BASH_ARGV $LOGNAME $BASH_COMMAND $MACHTYPE $BASH_LINENO $MAILCHECK $BASH_SOURCE $old_file ... $HISTCMD $USER $HISTFILE $USERNAME $HISTFILESIZE $var $HISTSIZE $WINDOW $HOME $WINDOWID $HOSTNAME $x $HOSTTYPE $XAUTHORITY $IFS $XTERM_SHELL $keypress $XTERM_VERSION $L3_HOME $y |
$echo $file
/bin/aarch |
$fu
func function funzip fuser |
$func
No perameters passed to function |
$echo func
func |
$func ls first
Param #1 is ls Parameter #2 is first |
$ls
1.jpg CASE2 mbox test 2.jpeg childhood.swf names text 7 echo program TotalCommander6.53PodarokEdition.exe answer files proj touchlist awk.file find_file projectX unsorted base FOR1 SELECT1 very_long_file_name bin FOR2 sent vimtutor body grep sh while c grep2 soft CASE1 Mail sorted |
$ls sh
b.C c.C cpr.sh d.C e.C par.sh rn |
$vim sh/rn
|
$iconv -f KOI8-R -t utf-8 sh/rn
if [ $# -ne 2 ] then echo "Использование: `basename $0` old-pattern new-pattern" # Команда "rn .cpp .C" переименовывает все файлы содержащие в названии .cpp # в рабочем каталоге на .C exit 1 fi number=0 # Запомнить, сколько файлов было переименовано for name in *$1* #рассматриваем файлы в текущем каталоге do ... then echo "Переименован $number файл." else if [ $rem -gt 1 -a $rem -lt 5 ] then echo "Переименовано $number файла" else echo "Переименовано $number файлов" fi fi |
$iconv -f KOI8-R -t utf-8 sh/rn > sh/rn_utf
|
$vim sh/rn_utf
|
$vim sh/rn
|
$iconv -f KOI8-R -t utf-8 sh/rn > sh/rn_utf
|
$iconv -f KOI8-R -t utf-8 sh/rn > sh/rn_utf
|
$iconv -f KOI8-R -t utf-8 sh/rn > sh/rn_utf
|
$iconv -f KOI8-R -t utf-8 sh/rn > sh/rn_utf
|
$ls sh
b.C c.C cpr.sh d.C e.C par.sh rn rn_utf |
$vim sh/rn
|
$iconv -f KOI8-R -t utf-8 sh/rn > sh/rn_utf
|
$date
Чтв Мар 1 15:25:56 EET 2007 |
$cd sh/
|
$mv rn rn_koi8
|
$mv rn_utf rn
|
$cat rn
if [ $# -ne 2 ] then echo "Использование: `basename $0` old-pattern new-pattern" # Команда "rn .cpp .C" переименовывает все файлы содержащие в названии .cpp # в рабочем каталоге на .C exit 1 fi number=0 # Запомнить, сколько файлов было переименовано for name in *$1* #рассматриваем файлы в текущем каталоге do ... then echo "Переименован $number файл." else if [ $rem -gt 1 -a $rem -lt 5 ] then echo "Переименовано $number файла" else echo "Переименовано $number файлов" fi fi |
$vim rn
|
$date
Чтв Мар 1 15:41:10 EET 2007 |
$last
user pts/6 linux2.net.nt Thu Mar 1 10:05 still logged in user pts/4 192.168.16.15 Thu Mar 1 09:50 still logged in wtmp begins Thu Mar 1 09:50:39 2007 |
$su -
Password: l3-agent is already running: pid=8953; pidfile=/root/.lilalo/l3-agent.pid |
#last
user pts/6 linux2.net.nt Thu Mar 1 10:05 still logged in user pts/4 192.168.16.15 Thu Mar 1 09:50 still logged in wtmp begins Thu Mar 1 09:50:39 2007 |
#lastb
btmp begins Thu Mar 1 09:26:31 2007 |
#w
15:59:07 up 6:38, 7 users, load average: 0,27, 0,71, 0,47 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT user :0 - 09:23 ?xdm? 1:25m 0.89s x-session-manag user pts/0 :0.0 09:27 17:57m 2.31s 0.10s script -f -q /h user pts/2 :pts/1:S.0 09:50 0.00s 2.85s 0.24s script -f -q /h user pts/4 192.168.16.15 09:50 0.00s 1.82s 0.28s script -f -q /h user pts/6 linux2.net.nt 10:05 35:48m 2.38s 0.02s script -f -q /h user pts/8 :pts/7:S.0 10:06 35:48m 1.35s 0.04s script -f -q /h user pts/11 :0.0 11:54 3:27 0.02s 0.02s script -f -q /h |
#rootpass
bash: rootpass: command not found |
#logname
logname: регистрационное имя отсутствует |
#whoami
root |
#idi
bash: idi: command not found |
#d
bash: d: command not found |
#id
uid=0(root) gid=0(root) группы=0(root) |
#vim /etc/passwd
|
#chfn root
Изменение информации о пользователе root Введите новое значение или нажмите ВВОД для выбора значения по умолчанию Полное имя [root]: SERGEY Номер комнаты []: 102 Рабочий телефон []: 02 Домашний телефон []: 03 Другое []: |
#vim /etc/passwd
|
#chfn root
Изменение информации о пользователе root Введите новое значение или нажмите ВВОД для выбора значения по умолчанию Полное имя [SERGEY]: Номер комнаты [102]: Рабочий телефон [02]: Домашний телефон [03]: Другое []: e-mail: sergey@mail.ru chfn: 'e-mail: sergey@mail.ru' содержит недопустимые символы |
#chfn root
Изменение информации о пользователе root Введите новое значение или нажмите ВВОД для выбора значения по умолчанию Полное имя [SERGEY]: Номер комнаты [102]: Рабочий телефон [02]: Домашний телефон [03]: Другое []: sergey@mail-ru |
#vim /etc/passwd
|
#chfn root
Изменение информации о пользователе root Введите новое значение или нажмите ВВОД для выбора значения по умолчанию Полное имя [SERGEY]: Номер комнаты [102]: Рабочий телефон [02]: Домашний телефон [03]: Другое [sergey@mail-ru]: sergey@mail.ru^[[3~ chfn: 'sergey@mail.ru |
#chfn root
Изменение информации о пользователе root Введите новое значение или нажмите ВВОД для выбора значения по умолчанию Полное имя [SERGEY]: Номер комнаты [102]: Рабочий телефон [02]: Домашний телефон [03]: Другое [sergey@mail-ru]: sergey@mail.ru |
#vim /etc/passwd
|
#vipw
5 sync:x:4:65534:sync:/bin:/bin/sync$ 6 games:x:5:60:games:/usr/games:/bin/sh$ 7 man:x:6:12:man:/var/cache/man:/bin/sh$ 8 lp:x:7:7:lp:/var/spool/lpd:/bin/sh$ 9 mail:x:8:8:mail:/var/mail:/bin/sh$ 10 news:x:9:9:news:/var/spool/news:/bin/sh$ 11 uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh$ 12 proxy:x:13:13:proxy:/bin:/bin/sh$ 13 www-data:x:33:33:www-data:/var/www:/bin/sh$ 14 backup:x:34:34:backup:/var/backups:/bin/sh$ 15 list:x:38:38:Mailing List Manager:/var/list:/bin/sh$ 16 irc:x:39:39:ircd:/var/run/ircd:/bin/sh$ 17 gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh$ 18 nobody:x:65534:65534:nobody:/nonexistent:/bin/sh$ 19 dictd:x:100:102::/var/lib/dictd:/bin/false$ 20 Debian-exim:x:101:103::/var/spool/exim4:/bin/false$ 21 statd:x:102:65534::/var/lib/nfs:/bin/false$ 22 identd:x:103:65534::/var/run/identd:/bin/false$ 23 messagebus:x:104:105::/var/run/dbus:/bin/false$ vipw: /etc/passwd не был изменён |
#passwd user
Enter new UNIX password: Retype new UNIX password: passwd: пароль успешно обновлён |
#passwd
Enter new UNIX password: Retype new UNIX password: Sorry, passwords do not match passwd: Authentication information cannot be recovered passwd: password unchanged |
#!/bin/sh echo "При помощи какой команды можно получить полную справочную информацию о программе?" read answer case $answer in "man" | "info" ) echo 'Вы правы. Так оно и есть.' ;; "whatis" | "apropos" ) echo 'Не совсем так. При помощи этой команды » можно получить только краткую информацию.' ;; * ) echo 'Вы ошибаетесь' ;; esac
#!/bin/sh echo 'Полный путь к программе, которую нужно выполнить :' read PROGRAM ; if [ -x "$PROGRAM" ] then "$PROGRAM" else echo -n "Can't run $PROGRAM. " if [ -e "$PROGRAM" ] then echo This file is not executable else echo No such file fi fi
if [ $# -ne 2 ] then echo "Использование: `basename $0` old-pattern new-pattern" # Команда "rn .cpp .C" переименовывает все файлы содержащие в названии .cpp # в рабочем каталоге на .C 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/"` # Заменить в названии $1 на $2 mv $fname $n # Переименовать файл number=$(($number+1)) fi done rem=`expr $number % 10` if [ $rem -eq 1 ] # Постараемся ответить грамматически правильно then echo "Переименован $number файл." else if [ $rem -gt 1 -a $rem -lt 5 ] then echo "Переименовано $number файла" else echo "Переименовано $number файлов" fi fi
Время первой команды журнала | 14:31:24 2007- 3- 1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Время последней команды журнала | 16:06:57 2007- 3- 1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Количество командных строк в журнале | 101 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Процент команд с ненулевым кодом завершения, % | 8.91 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Процент синтаксически неверно набранных команд, % | 8.91 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Суммарное время работы с терминалом *, час | 1.59 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Количество командных строк в единицу времени, команда/мин | 1.06 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Частота использования команд |
|
В журнал автоматически попадают все команды, данные в любом терминале системы.
Для того чтобы убедиться, что журнал на текущем терминале ведётся, и команды записываются, дайте команду 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