Командная строка
Общее среди всех GNU/Linux дистрибутивов:
- Интерфейс — командная строка
⇒ обмен текстами ⇒ дополнительные удобства
- Объекты — файлы и файловая система
- ⇒ много текстовых файлов ⇒ много файлов-программ
- Субъекты — процессы
- ⇒ права доступа процессов к файлам ⇒ взаимодействие процессов
- Программное обеспечение — пакеты
- ⇒ хранилища ⇒ сопровождение пакетов
- Информационно-технические ресурсы
- ⇒ Документация, сайт(ы), общение ⇒ Пакетная база, отслеживание ошибок, инструменты разработки
Интерфейс командной строки
- Любой ИКС:
- Диалог «(текст послал — текст получил)+»
- текстовая природа (строки, слова)
- совмещение потока данных и потока управления (содержательный ввод/вывод происходит там же, где и ввод команд, вывод диагностики и помощи)
- Формализация команд и диагностики (ЯП и идентификаторы ошибок/событий)
- Эффективность и удобство набора и чтения текстов
- Диалог «(текст послал — текст получил)+»
- + Командная оболочка (т. н. shell)
- работа с файловой системой ⇒ много команд работы с файлами
работа с процессами ⇒ простота запуска и взаимодействия большого набора программ (т. н. «утилит»; вообще говоря, всех программ)
- специализированный ЯП с поддержкой всего этого
Командная строка shell
Разбор строки на слова; между словами — один или несколько разделителей (пробелы, табуляции, переводы строк; правда, переводы строк так просто в строку не засунешь, потому что клавиша Enter отправляет командную строку инт ерпретатору)
- Интерпретация:
команда [параметр1 [параметр2 [...]]]
или переменная1=значение1 [переменная2=значение2 [...]] команда [параметр1 [параметр2 [...]]]
- выполнение команды
- команда выводит результат на стандартный вывод
Большинство утилит придерживаются рекомендаций по оформлению параметров:
Параметры, начинающиеся на «-» — т. н. «ключи» («options»), т. е. модификаторы выполнения работы программы
однобуквенные, вида «-¤», где «¤» — произвольный символ (просто написать, сложно запомнить все), например, «-a» (от слова all), «-l» (от слова long)
полнословные, вида «--слово», где «слово» описывает, что делает этот ключ, например «--all», «--long»
TODO