Командная строка unix
TRANSCRIPT
Виктор Ашик
куратор КИТ
Командная строка
4
Командная строка жива
CLI - универсальный интерфейс:• параметры ядра ОС• режим диалога с пользователем• интерфейс взаимодействия между процессами
5
Бывают cli-приложения:
• debug• edlin• fdisk• diskpart• ed• nslookup• virsh
6
Интерпретаторы команд (оболочки)
• command.com• cmd.exe• sh (bash, ash, pdksh, zsh, busybox...)
7
Интерфейсы устройств
• сетевое оборудование (Cisco IOS, Junos, коммутаторы)
• встроенные системы (busybox)• загрузчики (GRUB)
8
Языки программирования в режиме REPL
Read–eval–print loop:
BASIC, Clojure, F#, Haskell, Perl, PHP, Python, Ruby, Scala, Tcl, Javascript
• Пример: python и ipython
9
Бывает встроена в приложения
• видеоигры (Quake) (tilda)• инженерные (Matlab/Octave, Autocad)
10
Термины
• System Console– Virtual Console– Command-Line Interface– Win32 console
• Terminal– Terminal Emulator
• TTY (teletype)
11
Секреты управления с клавиатуры
• У каждой реализации свои особенности• Часто работают ^a ^e ^w ^s ^q• В Windows: Home/End/Esc/F3/F7/^C• Надо учить постепенно
– man readline
12
Команды
• ЧтоДелать -о -опции --опция-с-аргументом КтоВиноват -о КтоВиноват Аргументы
• опции могут быть чувствительны к регистру
13
Команды
• Встроенные команды• Исполняемые файлы (внешние)
– PATH
14
Текущий каталог
• cd• pwd• pushd / popd
15
Пути к файлам
• абсолютные• относительные
16
Переменные (окружения)
• Путь поиска PATH• Формат приглашения PS1/PROMPT• Редактор EDITOR/VISUAL
17
Шаблоны имен файлов
• ?• *• *.*
18
Регулярные выражения
• .• .*
grep/findstr
19
Конвейер
• ЧтоДелать -опции Аргументы | ЧтоДелать -опции Аргументы | ЧтоДелать
• Обычно по конвейеру передается текст• Иногда - объекты (PowerShell)
20
Перенаправление
• ЧтоДелать > ФайлКудаПисатьВывод• ЧтоДелать < ФайлОткудаЧитать• ЧтоДелать 2> ФайлКудаПисатьОшибки• ЧтоДелать > ФайлКудаПисатьВсё 2>&1• ЧтоДелать &> ФайлКудаПисатьВсё
21
Код возврата
• exit 0 # OK• exit 1 # not OK• exit 2 # not OK• ...
22
Условное исполнение
• true && ТогдаВыполняем• false || ТогдаВыполняем• test -f /etc/passwd && ЕслиОК || ЕслиНеОК
23
Условное исполнение
if test -f /etc/lsb-release; thencat /etc/lsb-releaseelif [ -f /etc/redhat-release ];
cat /etc/redhat-release ; fi
24
Циклы
for f in *.html; do cp -p $f $f~;donefind . -name *.html -print0|xargs -I{} cp -p {} {}~
25
Запуск нескольких процессов на одном терминале
• ДолгоРаботающаяКоманда &• man jobs• ^Z• jobs• kill %1• fg 2• ДолгоРаботающаяКоманда• ^Z• bg• jobs
26
Unix и DEC стили опций и разделителей
• / и \ - разделитель имен каталогов в стиле Unix и DEC
• - и / - опции в стиле Unix и DEC• -- - разделитель опций в стиле GNU (--help)
27
Порядок опций и аргументов
• фиксированный (BSD)ls -ltr /etc
• произвольный (GNU)ls /etc -ltr
28
Сценарии (пакетные файлы)
• sh-bang#!/bin/sh#!/usr/bin/env python
• разбор параметров командной строки в sh• Внешние инструменты:
– sed– awk– perl– ...
29
Источники информации
• manman 1 printf
• helphelp test
• infoinfo coreutilsinfo sed
• perldoc / man perlfaq6
30
Домашнее задание
• Найти и заменить во всех файлах .html подстроку КИТ на ШРИ в тэге <title></title>
• Обеспечить возможность отмены изменения