Все разделы
Выбрать школу

Школа. Увлечения. Большое будущее.

PROSCHOOLS · ОБРАЗОВАНИЕ РЯДОМ

Ваш город

Выберите город, чтобы находить образование и возможности рядом.

Как учитываем городКаталог и кнопки «Выбрать школу» покажут школы выбранного города.Онлайн-курсы, учебник, ГДЗ и задания к экзаменам доступны по всей России.

Популярные города

Будет выбран: Вся Россия

Учебные материалы останутся прежними.

Поиск по сайту

По всему сайтуШколы выбранного города — выше в результатах

С чего начнём?

↑ ↓ — выбрать результат · Enter — открыть · Esc — закрыть

Командная строка Linux: первый урок терминала для школьника

💻 Информатика · 10 класс

Как школьнику работать в терминале: папки, пути, файлы, grep и wc, конвейеры и перенаправление. Учебные примеры, кавычки в именах и пять заданий с ответами.

Клавиатура в компьютерном классе
Иллюстрация к предмету «Информатика»Hmartil · Wikimedia Commons · CC BY-SA 4.0

Командная строка Linux позволяет вводить текстовые команды для работы с файлами и запуска программ. Команды разбирает оболочка — shell; в этом школьном уроке используются привычные конструкции Bash и базовые утилиты GNU/Linux. Начните в учебной среде, которую подготовил учитель, и создайте отдельную папку для опытов. Пример проекта — собрать частотный список строк из текстового файла, а затем объяснить каждый шаг конвейера.

Чтобы начать, найдите приложение «Терминал» в меню или поиске вашей среды Linux. Название и сочетание клавиш зависят от окружения. Терминал показывает приглашение оболочки: вводите после него только команду, затем нажмите Enter. Символ приглашения, например $, в команду переписывать не нужно.

Навигация по каталогам

  • 1) pwd — показать текущий каталог (print working directory).
  • 2) ls — перечислить файлы; ls -l — длинный формат с правами и размерами, ls -a — включая скрытые файлы (их имена начинаются с точки).
  • 3) cd путь — сменить каталог; cd .. — на уровень выше, cd ~ — домой.

Пути бывают абсолютными (от корня: /home/user/docs) и относительными (от текущего каталога: docs/report.txt). Имена «.» и «..» обозначают текущий и родительский каталоги.

Чтение и изменение файлов

  • 1) cat файл — вывести файл целиком; less файл — постраничный просмотр больших файлов.
  • 2) head -n 5 файл и tail -n 5 файл — первые и последние 5 строк; tail умеет и -f (следить за растущим логом).
  • 3) wc файл — счёт строк, слов и байт; wc -l — число символов перевода строки. Последняя строка без завершающего перевода строки этим счётчиком не учитывается.
  • 4) cp a b — копировать, mv a b — переместить или переименовать, rm файл — удалить без помещения в обычную графическую корзину, mkdir имя — создать каталог.

Копирование cp и перемещение mv могут перезаписать существующий целевой файл. В учебных опытах используйте новые имена и проверяйте текущую папку командой pwd.

Пример 1. Разбор лога. Пусть файл app.log содержит строки событий. Посчитать строки с ошибками можно связкой: grep -i error app.log | wc -l. Здесь grep отбирает строки, содержащие error (ключ -i снимает различие регистра), а конвейер передаёт их программе wc, которая считает строки. Например, если app.log состоит из строк «INFO start», «ERROR read», «error write», «INFO end», каждая завершается переводом строки, конвейер выдаст 2. Это количество строк с совпадением, а не количество всех вхождений слова error

Конвейеры и перенаправление

Вертикальная черта | соединяет стандартный вывод одной команды со стандартным вводом следующей — это главная суперсила shell. Знаки > и >> перенаправляют стандартный вывод в файл: в обычном режиме Bash > очищает существующее содержимое, а >> дописывает в конец. Если файла нет, он создаётся, а < читает ввод из файла.

Пример 2. Частотный анализ. Классическая тройка sort a.txt | uniq -c | sort -rn выводит, сколько раз встречается каждая строка, от самой частой. Утилита uniq умеет сливать только соседние дубликаты, поэтому для общего подсчёта одинаковые строки сначала группируют, например сортировкой. Для файла из трёх строк alpha, beta, alpha получатся строки с частотами 2 alpha и 1 beta; пробелы форматирования здесь опущены.

Шаблоны имён подставляет shell: звёздочка соответствует нулю или нескольким символам имени, а вопросительный знак — одному. Например, ls *.txt передаст ls подходящие имена из текущего каталога. В обычной настройке Bash такой шаблон не захватывает имена, начинающиеся с точки. Если имя содержит пробел, используйте кавычки: cat "school notes.txt".

Права доступа кратко

Команда ls -l показывает строки вида -rw-r--r--: тип файла и три тройки прав чтение-запись-выполнение для владельца, группы и остальных. Изменяют их через chmod: chmod u+x script.sh даёт владельцу право запускать файл как программу.

Типичные ошибки новичка

Три правила сохранят нервы. Первое: команды изменения файлов пробуют только на созданных для упражнения копиях. Перед удалением конкретного учебного файла проверьте папку и его имя; rm не отправляет его в обычную корзину. Второе: в типичной интерактивной настройке Bash клавиша Tab дополняет имена файлов и команд — это быстрее и безопаснее ручного набора длинных путей. Третье: если установлен man и пакет руководств, man ls откроет справку. В обычной интерактивной настройке Bash стрелки вверх и вниз перемещают по истории команд.

Командная строка и программирование

Терминал — это же способ запускать собственные программы: аргументы после имени программы попадают в неё через параметры командной строки. В Python их читают через sys.argv (см. наш материал об аргументах командной строки на Python и о модуле sys), в Java — через массив args метода main.

Упражнения

Задание 1

Как узнать, в каком каталоге вы находитесь, и как перейти в каталог /var/log?

Ответ 1: pwd покажет текущий каталог; команда cd /var/log перейдёт в целевой, если каталог существует и доступен. Путь начинается с / и является абсолютным.

Задание 2

Что выведет команда ls в каталоге, где есть файлы a.txt, b.txt и скрытый .config?

Ответ 2: без ключей — a.txt и b.txt; для скрытых имён можно использовать ls -a или ls -A. Опция -a дополнительно показывает . и .., а -A их исключает. Формат вывода зависит от настроек и того, выводятся ли данные на экран или в конвейер.

Задание 3

Как посчитать суммарное число переводов строки в обычных файлах *.txt текущего учебного каталога, если каждый файл заканчивается переводом строки и подходящие файлы есть?

Ответ 3: cat *.txt | wc -l — cat склеит файлы, конвейер передаст их wc. Для файлов с 3 и 1 завершёнными строками получится 4. Если последняя строка не заканчивается переводом строки, wc -l её не посчитает; cat также не вставляет разделитель между файлами.

Задание 4

Почему uniq a.txt может не убрать все дубликаты и что нужно добавить?

Ответ 4: uniq сливает только одинаковые соседние строки. Нужно сначала отсортировать файл: sort a.txt | uniq (или сразу sort -u). В тесте sort a.txt | uniq -c корректно посчитал «2 alpha».

Задание 5

В чём разница между echo hello > f.txt и echo hello >> f.txt?

Ответ 5: одинарная > перезаписывает файл (старое содержимое исчезает), двойная >> дописывает строку в конец. Например, echo 'delta' >> a.txt добавит delta в конец файла, сохранив прежнее содержимое.

Источники и материалы