1 / 28

Linux :

Linux :. Потоки ввода/вывода : стандартный ввод, стандартный вывод и стандартный вывод ошибок. Для перенаправления стандартного ввода можно использовать символ < , для стандартного вывода – > или >> (с добавлением), для потока ошибок – 2> program > file.log Конвейер команд:

Download Presentation

Linux :

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. Linux: Потоки ввода/вывода: стандартный ввод, стандартный вывод и стандартный вывод ошибок. Для перенаправления стандартного ввода можно использовать символ <, для стандартного вывода – > или >> (с добавлением), для потока ошибок – 2> program > file.log Конвейер команд: program1 | program2 | program3… Фоновый режим: program &

  2. Linux • cat файл1 файл2 ... файлN > файл_результата(конкатенация файлов в файл_результата) • ls -a > новый_файл (файл, содержащий список всех файлов текущей директории) • cat > новый_файл (создает новый текстовый файл с именем новый_файл и содержимым, которое пользователь введет с клавиатуры) • sort < textfile ( подаст на ввод sort данные из файла ) • info cat > cat.info 2> cat.stderr • info cat > cat.info 2>&1( направить стандартный вывод ошибок туда же, куда и стандартный вывод ) • info cat > cat.info 2> /dev/null • cat cat.info | less

  3. Linux • Подсчет • Стандартная утилита для подсчета строк, слов и символов - wc (от англ. "word count" - "подсчет слов") • wc – c (bytes count) • wc –l (lines count) • wc –w(words count) • Пример (посчитать свои файлы) • find . | wc -l

  4. Linux • cut - команда выборки отдельных полей из строк файла • Для выделения колонок из файла используйте формат: cut -fполе(я) формат • -d, вы можете выбрать различные разделители полей • $ cat phone Shari French Yes 614-764-1112 Jo Somers No 614-764-1113 Mona Cole уes 614-764-1114 Jackie Bell yes 201-457-1112   • $ cut -f2,4 phone French 614-764-1112 Somers 614-764-1113 Cole 614-764-1114 Bell 201-457-1112

  5. Linux • $ cat race Reynolds:WINNER:est:22:45 Stultz:LOSER:est:24:12 French:TIE:est:28:16 • cut -d: -f1,2race Reynolds:WINNER Stultz:LOSER French:TIE

  6. Linux • ПОИСК В ФАЙЛЕ С ПОМОЩЬЮ КОМАНДЫ grep • grep -опции шаблон_поиска имя_файла(ов) Опции команды grep (можно сочетать) Опция -i игнорирует различие верхнего и нижнего регистров. Опция -c отображает число строк, содержащих шаблон поиска. Опция -l сообщает только имена файлов содержащих шаблон. Опция -v отображает все строки НЕ соответствующие шаблону. Опция -n предваряет каждую найденную строку номером строки.

  7. Linux • $ cat parts_file C1987653 Wing Nut Wafer Supplies .83 360 C2345643 3/4" nut RC Electronics .42 120 Z2365432 1/4" nut Global House .25 620 Z2367654 1/5“muff RC Electronics.25 540 • $ grep nut parts* C2345643 3/4" nut RC Electronics .42 120 Z2365432 1/4" nut Global House .25 620 • $ grep -i nut parts_file C1987653 Wing Nut Wafer Supplies .83 360 C2345643 3/4" nut RC Electronics .42 120 Z2365432 1/4" nut Global House .25 620 • $ grep -ic nut parts1<RET> 3 • $ grep -l nut par*<RET> parts1 parts2

  8. Синтаксис языка shell • Файл начала сеанса (login - файл) • Независимо от версии Shell при входе в систему UNIX ищет файл начала сеанса с предопределенным именем, чтобы выпол- нить его как командный файл; • для UNIX версии 7 это: .profile; • для C-Shell это: .login и/или .cshrc. • В этот файл обычно помещают команды: • установки характеристик терминала; • оповещения типа who, date; • установки каталогов поиска команд (обычно: /bin, /usr/bin); • смена подсказки с $ на другой символ и т.д.

  9. Синтаксис языка shell • Процедура языка Shell • Это командный файл. Два способа его вызова на выполнение: • $ sh dothat (где dothat - некоторый командный файл); • $ chmod 755 dothat (сделать его выполнимым, т.е. • -rwxr-xr-x) • $ dothat

  10. Синтаксис языка shell Комментарии Строки, начинающиеся с #, трактуются как комментарии. Переменные и подстановка их значений Все переменные в языке shell - текстовые. Их имена должны начинаться с буквы и состоять из латинских букв, цифр и знака подчеркивания (_). Чтобы воспользоваться значением переменной, надо перед ней поставить символ $. Различается два класса переменных: позиционные и с именем. Позиционные переменные - это аргументы командных файлов, их именами служат цифры: $0 - имя команды, $1 - первый аргумент и т.д. Значения позиционным переменным могут быть присвоены и командой set

  11. Синтаксис языка shell • Пример. После вызова программы на shellе, хранящейся в файле ficofl: • ficofl -d / test.for значением • $0 будет ficofl, $1 - -d, $2 - /, $3 - test.for, значения остальных позиционных переменных будут пустыми строками. • Еще две переменные хранят командную строку за исключением имени команды: $@ эквивалентно $1 $2 ..., а $* - "$1 $2 ...".

  12. Синтаксис языка shell • Следующие переменные автоматически устанавливаются shell'ом: • # - количество позиционных параметров (десятичное) • - - флаги, указанные при запуске shellа или командой set • ? -десятичное значение, возвращенное предыдущей синхронно выполненной командой • $ - номер текущего процесса • ! - номер последнего асинхронного процесса • @ - эквивалентно $1 $2 $3 ... • * - эквивалентно "$1 $2 $3 ..." • Пример: выдать номер текущего процесса: • echo $$

  13. Синтаксис языка shell • Переменные Shell • В языке Shell определение переменной содержит имя и значение: • var = value. • Доступ к переменной - по имени со знаком $ спереди: • Пример • fruit = apple (определение); • echo $fruit (доступ); • apple (результат echo). Таким образом, переменная - это строка. Возможна конкатенация строк: • $ fruit = apple • $ fruit = pine$fruit • $ echo $fruit • pineapple

  14. Синтаксис языка shell • Предопределенные переменные Shell • Наиболее употребительные: • HOME - "домашний" каталог пользователя; служит аргументом по умолчанию для cd; • PATH - множество каталогов, в которых UNIX ищет команды; • PS1 - первичная подсказка (строка) системы (по умолчанию - $). Изменение PS1 (подсказки) обычно делается в login - файле, например: PS1 = ? или PS1 = "? " (с пробелом). • PS2 -дополнительная строка приглашения (по умолчанию - > )

  15. Синтаксис языка shell • Установка переменной Shell выводом из команды • Пример 1: • $ now = `date` (где `` - обратные кавычки) • $ echo $now • Sun Feb 14 12:00:01 PST 2010 • $ • Пример 2: (получение значения переменной из файла): • $ menu = `cat food` • $ echo $menu • apples cheddar chardonnay (символы возврата каретки за- меняются на пробелы).

  16. Синтаксис языка shell • Управляющие конструкции • Команда - это либо простая команда, либо одна из управляющих конструкций. Кодом завершения команды является код завершения ее последней простой команды. • Условный оператор. • if <список1> then <список2> [ elif <список3> then <список4> ] . . . [ else <список5> ] fi

  17. Синтаксис языка shell • if test $# -eq 0 then echo "You must give a parameters" exit 1 else cat filename fi • Здесь test и exit - команды проверки и выхода.

  18. Синтаксис языка shell • Команда "test" • Не является частью Shell, но применяется внутри Shell- процедур.Имеется три типа проверок: • оценка числовых значений; • оценка типа файла; • оценка строк. • Для каждого типа свои примитивы (операции op). • Для чисел синтаксис такой: • N op M, где N, M - числа или числовые переменные; • op принимает значения: -eq, -ne, gt, -lt, -ge, -le

  19. Синтаксис языка shell • Команда "test " • Для файла синтаксис такой: • op filename, где op принимает значения: • -s (файл существует и не пуст); • -f (файл, а не каталог); • -d (файл-директория (каталог); • -w (файл для записи); • -r (файл для чтения).

  20. Синтаксис языка shell • Команда "test " • Для строк синтаксис такой: • S op R, где S, R - строки или строковые переменныеили op1 S • op принимает значения: • = (эквивалентность); • != (не эквивалентность); • op1 принимает значения: • -z (строка нулевой длины); • -n (не нулевая длина строки). Наконец, несколько проверок разных типов могут быть объ- единены логическими операциями -a (AND) и -o (OR).

  21. Синтаксис языка shell • Оператор цикла while • Синтаксис: while <команда> do <команды> done Если "команда" выполняется успешно, то выполнить "команды", завершаемые ключевым словом done.

  22. Синтаксис языка shell • Пример: if test $# -eq 0 then echo "Usage: $0 file ..." > &2 exit fi while test $# -gt 0 do if test -s $1 then sort (процедуры) else echo "no file $1" > &2 fi shift (* перенумеровать аргументы *) done команда shiftсдвигает имена на остальные аргументы

  23. Синтаксис языка shell • Оператор цикла until • Инвертирует условие повторения по сравнению с while • Синтаксис: until <команда> do <команды> done Пока "команда" не выполнится успешно, выполнять команды, завершаемые словом done.

  24. Синтаксис языка shell • Пример: if test S# -eq 0 then echo "Usage $0 file..." > &2 exit fi until test S# -eq 0 do if test -s $1 then sort (процедура) else echo "no file $1" > &2 fi shift (сдвиг аргументов) done

  25. Синтаксис языка shell • Оператор выбора case • Синтаксис: case in string1) <если string = string1, то выполнить все следующие команды до ;; > ;; string2) <если string = string2, то выполнить все следую- щие команды до ;; > ;; string3) ... и т.д. ... esac

  26. Синтаксис языка shell • Пусть процедура имеет опцию -t, которая может быть подана как первый параметр: together = no case $1 in -t) together = yes shift ;; -?) echo "$0: no option $1" exit ;; esac if test $together = yes then sort ... fi где ? - метасимвол (если -?, т.е. "другая" опция, отличная от -t, то ошибка). Можно употреблять все метасимволы языка Shell, включая ?, *, [-]. • Легко добавить (в примере) другие опции, просто расширяя case.

  27. Синтаксис языка shell • Выполнение арифметических операций: expr • Команда expr вычисляет значение выражения, поданного в качестве аргумента и посылает результат на стандартный вывод. • Наиболее интересным применением является выполнение операций над переменными языка Shell. • Пример суммирования 3 чисел: • $ cat sum3 expr $1 + $2 + $3 • $ chmod 755 sum3 • $ sum3 13 49 2 64 • $

  28. Синтаксис языка shell • Пример непосредственного использования команды: • $ expr 13 + 49 + 2 + 64 + 1 129 • $ • В expr можно применять следующие арифметические операторы: +, -, *, /, % (остаток). Все операнды и операции должны быть разделены пробелами. • Заметим, что знак умножения следует заключать в кавычки (одинарные или двойные), например: '*', так как символ * имеет в Shell специальный смысл.

More Related