1 / 41

Занятие 4. Shell

Занятие 4. Shell. Что такое Shell ?. Интерпретируемый язык программирования. Выполнение команд. Средства настройки среды. Shell. Ядро ОС. Подстановка команд. Аппаратура. Назначение переменных. Конвейеры. Shell. Подстановка переменных. Перенаправление ввода/вывода.

basil-nash
Télécharger la présentation

Занятие 4. Shell

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Занятие 4.Shell

  2. Что такое Shell? Интерпретируемый язык программирования Выполнение команд Средства настройки среды Shell Ядро ОС Подстановка команд Аппаратура Назначение переменных Конвейеры Shell Подстановка переменных Перенаправление ввода/вывода Генерация имен файлов Пользователи

  3. Автоматическое завершение имен файлов $ more fra <Tab> $ more frankenstein <Return> …….. $ more abc <Tab> $ more abcdef <Tab> 1)abcdefXlmnop 2)abcdefYlmnop $ more abcdef затем X или Y, после чего нажмите <Tab>. Соответствующее имя файла будет автоматически завершено shell'ом

  4. Автоматическое завершение имен файлов(2) $ cd tr <Tab> do <Tab> r <Tab> $ cd tree/dog.breads/retriiver

  5. Буферирование команд • Shell сохраняет команды, которые вводит пользователь в файле предыстории $HOME/.bash_history • Команда history выводит на экран последние командs • Ранее введенные команды можно вызвать повторно, отредактировать и запустить вновь (клавишами вверх вниз)

  6. Среда пользователя • Среда пользователя описывает сеанс работы с системой для программ, которые он запускает. Синтаксис: env Пример: $ env НОМЕ=/home/gerry EDITOR=vi TERM=70092 … PATH=/usr/bin:/usr/contrib/bin:/usr/local/bin:\ /home/gerry/bin

  7. Среда пользователя(2) Среда пользователя содержит следующую информацию: • Маршрутное имя начального каталога пользователя • Куда посылать электронную почту пользователя • Часовой пояс, в котором работает пользователь • Где shell будет искать команды

  8. Среда пользователя(3) Перечень наиболее общих переменных среды и их смысловое содержание TERM, COLUMNS и LINES Описывают параметры используемого терминала HOME Маршрутное имя начального каталога PATH Путь поиска команд LOGNAME Входное имя пользователя, задаваемое при входе в систему Некоторые из этих переменных устанавливаются для каждого пользователя самой системой, другие устанавливаются явно в /etc/profile или .profile.

  9. Установка переменных shell'a • Переменная shell'a имеет имя, которому ставится в соответствие некоторое значение. • Значение переменной может быть изменено. • Некоторые переменные shell'a определяются в процессе входа пользователя в систему. • Пользователь может определить новые переменные shell'a. Синтаксис: name=value Пример: $ PATH=/usr/bin/Xll:/usr/bin

  10. Что происходит при входе в систему? 1. getty • выводит содержимое файла /etc/issue • выдает приглашение login: • запускает процесс login 2.login • определяет допустимость введенного имени пользователя и пароля • помещает пользователя в начальный каталог • запускает shell пользователя 3. shell • выполняет /etc/ profile или /etc/csh.login • выполняет . profile или . login, находящиеся в пользовательском каталоге • выполняет .bashrc если файл создан пользователем и его имя присвоено переменной ENV в файле .profile • запускает пользовательский shell

  11. Внутренние команды shell и команды UNIX Внутренние команды встроены в shell: set, while, if, for Команды UNIX находятся в /usr/bin: cd ls more file Система находит команды UNIX, используя переменнуюPATH.

  12. Поиск команд - команда whereis Синтаксис: whereis [-b|-m|-s]команда Просматривает список каталогов для поиска указанной команды Примеры: $ whereis if if : $ $ whereis ls ls: /sbin/ls /usr/bin/ls /usr/share/man/man1.Z/ls.1 $ $ whereis cd cd: /usr/bin/cd /usr/share/man/man1.Z/cd.1 $ $ whereis holdyourhorses holdyourhorses :

  13. Поиск команд - команда whereis(2) Опции -b поиск только по двоичным кодам -m поиск по описаниям команды -s поиск по исходным текстам

  14. Shell-подстановки • Подстановка переменных • Подстановка команд • Тильда-подстановка Подстановки используются для увеличения скорости ввода и выполнения командных строк.

  15. Shell: хранение переменных color=blue count=3 dir_name=/home/user3/tree Локальные переменные /usr/bin/sh Программный код PS1=$ PATH=/usr/bin:/usr/contrib/bin HOME=/home/user3 TERM=70094a SHELL=/usr/bin/sh Переменные среды

  16. Shell: вывод на экран всех переменных, содержащихся в данный момент в среде $ env MANPATH=/usr/share/man:/usr/contrib/man:/usr/local/man PATH=/usr/bin:/usr/ccs/bin:/usr/contrib/bin:/usr/local/bin LOGNAME=user3 ERASE=^H SHELL=/usr/bin/sh HOME=/home/user3 TERM=hpterm PWD=/home/user3 TZ=PST8PDT EDITOR=/usr/bin/vi

  17. Shell: установка значений переменных Синтаксис: переменная=значение Пример: $ color=lavender Установка локальной переменной $ count=3 Установка локальной переменной $ dir_name=tree/car.models/ford Установка локальной переменной $ PS1=hi_there$ Изменение переменной среды

  18. Подстановка переменных Синтаксис: $переменная Указывает shell’у выполнить подстановку переменной Пример: $ echo PATH$ /usr/bin:/usr/contrib/bin:/usr/local/bin $PATH=$PATH:$HOME:. $ echo PATH$ /usr/bin:/usr/contrib/bin:/usr/local/bin:/home/user3:. $echo $HOME /home/user3 $ file_name=$HOME/file1 $ more $file_name <contents of /home/user3/file1>

  19. Использование фигурных скобок ({}) • Пусть есть две переменные с именамиfile иfile1. Этим переменным могут быть присвоены значения с помощью следующих операторов: $ file=this $ file1=that $ echo $fileand$file1 ищет переменные fileand иfile1 sh: fileand: parameter not set $ echo ${file}and$filel thisandthat ищет переменные file иfile1 Фигурные скобки могут использоваться для выделения имени переменной из окружающего текста.

  20. Подстановка переменных(2) $ dir_name=tree/car.models/ford $ echo $dir_name tree/car.models/ford $ ls -F $dir_name sedan/ sports/ $ my_ls="ls -aFC" $ $my_ls ./ file.1 tree/ ../ file.2 $ $my_ls $dir_name . / .. / sedan/ sports/ $ cd /tmp $ dir_name=/home/user2/tree/dog.breeds/retriever $ $my_ls $dir_name . / . . / golden labrador mixed Использование абсолютного маршрутного имени в качестве значения переменной, которая представляет собой имя файла или каталога, позволяет пользователю вне зависимости от местонахождения в файловой системе, получать доступ к файлу или каталогу

  21. Подстановка команд Синтаксис: $(команда) Указывает shell’у выполнить подстановку команды Пример: $pwd /home/user2 $curdir=$(pwd) $echo $curdir /home/user2 $cd /tmp $pwd /tmp $cd $curdir $pwd /home/user2 $curdir2=`pwd` $echo $curdir /home/user2

  22. Тильда-подстановки Если слово начинается со знака "тильда" (~), то для этого слова формируется расширение. Следует заметить, тильда — подстановка выполняется только если знак (~) указывается в начале слова, а в случае /~home/users тильда—подстановка не осуществляется. Тильда—подстановки выполняются в соответствии со следующими правилами: • Отдельный знак (~) или предшествующий знаку (/) заменяется на значение переменнойHOME. • Тильда с последующим знаком +, заменяется на значение переменнойPWD. ПеременнаяPWD устанавливается командой cd при переходе в новый текущий каталог. • Тильда с последующим знаком —, заменяется на значение переменнойOLDPWD. Переменная OLDPWD устанавливается командой cd для предыдущего рабочего каталога • Если за знаком тильда следуют несколько символов, а затем символ /, то shell пытается установить не являются ли эти символы именем пользователя в системе. Если это так, то последовательность символов заменяется маршрутным именем начального каталога пользователя. Символ ~ может быть помещен в псевдоним команды.

  23. Тильда-подстановки -пример $ echo $HOME /home/user3 $ echo ~ /home/user3 $ echo $PWD /home/user3/tree $ ls ~+/poodle /home/user3/tree/poodle $ echo $OLDPWD /home/user3/mail $ ls ~- /home/user3/mail/from.mike /home/user3/mail/from.jim $ echo ~tricia/file1 /home/tricia/file1

  24. Вывод значений переменных env Вывод значений переменной среды. Это команда системы UNIX из каталога /usr/bin/env set Вывод на экран всех определенных к данному времени переменных (локальных и переменных среды), а также их значений. Это команда shell. unset Удаление значения переменной. Это команда shell.

  25. Вывод значений переменных-пример $ echo $HOME /home/user3 $ env HOME=/home/user3 PATH=/usr/bin:/usr/contrib/bin:/usr/local/bin SHELL=/usr/bin/sh $ set HOME=/home/user3 PATH=/usr/bin:/usr/contrib/bin:/usr/local/bin SHELL=/usr/bin/sh color=lavender count=3 dir_name=/home/user3/tree $ unset dir_name

  26. Экспортирование локальных переменных в среду Синтаксис: export [переменная[=значение]] Экспортирование переменной в среду Пример: $ color=lavender $ export color $ export count=3 $ export export PATH=/usr/bin:/usr/ccs/bin:/usr/contrib/bin:/usr/local/bin export color=lavender export count=3 Это встроенная команда shell.

  27. Передача переменных в приложение Процесс - выполняющаяся программа. При вводе пользователем имени приложения (или команды) в ответ на приглашение shell, создается порожденный процесс, который исполняется по шагам: 1. fork - порождает параллельный процесс, который дублирует shell-процесс пользователя, включая код программы и области локальных данных и данных среды. 2. exec - заменяет кодовый сегмент и область локальных данных порожденного процесса на программный код и область локальных данных требуемого приложения., затем выполняет процесс затребованного приложения, возвращает управление родительскому процессу. Существует один путь передачи данных порожденным процессам - через среду.

  28. Наблюдение за процессами ps [-f] выводит на экран информацию о выполняемых (или ожидающих) процессах в системе Выдает: UID идентификатор владельца процесса PID идентификатор процесса PPID идентификатор родителя процесса STIME начальное время процесса TTY идентификатор терминала, с которого запущен процесс TIME совокупное время выполнения процесса COMMAND команда,соответствующая данному процессу exec команда замещение текущего процесса (это встроенная команда shell).

  29. Наблюдение за процессами $ ps -f UID PID PPID С STIME TTY TIME COMMAND user3 4702 1 1 08:46:40 ttyp4 0:00 -sh user3 4895 4702 18 09:55:10 ttyp4 0:00 ps -f $ ksh $ ps -f UID PID PPID C STIME TTY TIME COMMAND user3 4702 1 0 08:46:40 ttyp4 0:00 -sh user3 4896 4702 1 09:57:20 ttyp4 0:00 ksh user3 4898 4896 18 09:57:26 ttyp4 0:00 ps -f $ exec ps -f UID PID PPID C STIME TTY TIME COMMAND user3 4702 1 0 08:46:40 ttyp4 0:00 -sh user3 4897 4702 18 09:57:26 ttyp4 0:00 ps -f

  30. Порожденные процессы и среда • Порожденные процессы не могут изменить среду родительских процессов. Пример: $ export color=lavender $ ksh (создание порожденногопроцессаshell) $ ps -f UID PID PPID С STIME TTY TIME COMMAND user3 4702 1 0 08:46:40 ttyp4 0:00 -sh user3 4896 4702 1 09:57:20 ttyp4 0:00 ksh user3 4898 4896 18 09:57:26 ttyp4 0:00 ps -f $ echo $color lavender $ color=red $ echo $color red $ exit (выход из порожденного процесса shell) $ ps -f (возвра г в родительский процесс) UID PID PPID С STIME TTY TIME COMMAND user3 4702 1 0 08:46:40 ttyp4 0:00 -sh user3 4895 4702 1 09:58:20 ttyp4 0:00 ps -f $ echo $color lavender

  31. Генерация имен файлов (расширение имен файлов):введение • Символы генерации имен файлов интерпретируются shell`ом • Shell будет генерировать имена файлов, удовлетворяющие заданному шаблону • Генерация имен файлов осуществляется перед выполнением команды • Команда будет оперировать со сгенерированными именами файлов

  32. Символы генерации имен файлов ? Соответствует любому одному символу за исключением лидирующей точки [ ] Определяет группу символов - Определяет группу символов, принадлежащих заданному диапазону ! Отвергает заданную группу символов * Соответствует произвольному числу символов, в том числе и нулевому, исключая лидирующую точку

  33. Генерация имен файлов и файлы с точкой • Символы генерации имен файлов никогда не породят имя файла, начинающееся с точки • В файлах, чьи имена начинаются с точки, она должна быть всегда указана явно

  34. Генерация имен файлов:символ ? ? Соответствует любому одному символу за исключением лидирующей точки Примеры $ ls -a …. .zz abc abcd abcdef abcz bbabb cyz zzayy $ echo ??? Результат: abc cyz $ echo abc? Результат: abcd abcz $ echo ??a?? Результат: bbabb zzayy $ echo .?? Результат: .zz $ echo ? Результат: ?

  35. Генерация имен файлов:символы [ ] [ ] Определяет группу символов, из которой может подойти лишь один Примеры $ ls -a …. .zz 1G 2G 7G 15G Ant Cat Dog abc abcdef ba cyz $ echo [abc]?? Результат: abc cyz $ echo [1-9][A-Z] Результат: 1G 2G 7G $ echo [!A-Z]?? Результат: 15G abc cyz

  36. Генерация имен файлов:символ * * Соответствует произвольному числу символов, в том числе и нулевому, исключая лидирующую точку Примеры $ ls -a …. .profile ab.dat abcd.dat abcde abcde.dat $ echo * Результат: ab.dat abcd.dat abcde abcde.dat $ echo .* Результат: .profile $ echo *.dat Результат: abcd.dat abcde.dat $ echo *e Результат: abcde

  37. Использование кавычек:введение • Ряд символов имеет «специальный» смысл для shell`а: - пробел - возврат каретки - $ - # - * - <> • «Закавычивание» позволяет отменить особый смысл специальных символов.

  38. Символы закавычивания Обратный слэш \ Одиночные кавычки ‘ Двойные кавычки“

  39. «Закавычивание»: символ \ \ Отменяет специальный смысл непосредственно следующего за ним символа Пример: $ echo the \$ text the $text $ color=red\ white\ and\ blue $ echo the value of \$color is $color the value of $color is red white and blue $ echo one two \ >three four one two three four

  40. «Закавычивание»: символ ‘ ‘ Отменяет специальный смысл всех символов, заключенных между одиночными кавычками Пример: $ color=‘red white and blue’ $ echo ‘the value of \$color is $color’ the value of \$color is $color $ echo ‘the value of $color is’ $color the value of $color is red white and blue

  41. «Закавычивание»: символ “ “Отменяет специальный смысл всех символов, заключенных между двойными кавычками, за исключением \, $, {имя переменной}, $(команда) и“ Пример: $ color=“red white and blue” $ echo “the value of \$color is $color” the value of $color is red white and blue $ cur_dir=“$LOGNAME - your current directory is $(pwd)” $ echo $cur_dir user3 - your current directory is /home/user3/tree $ echo “they’re all here, \\, ‘, \” “ they’re all here, \, ‘, “

More Related