Команды ввода-вывода, общие принципы командной оболочки

Командная оболочка (shell) в Linux/Unix — это интерфейс, который позволяет пользователю взаимодействовать с операционной системой с помощью текстовых команд. Важной частью работы с командной оболочкой является использование команд ввода-вывода для обработки данных и файлов.

Общие принципы работы с командной оболочкой

Командная оболочка выполняет следующие основные функции:

  • Прием команд от пользователя.

  • Запуск программ.

  • Обработка и управление потоками ввода-вывода.

  • Интерпретация специальных символов и конструкций (например, подстановки и перенаправления).

Основные команды ввода-вывода

Команды ввода-вывода позволяют управлять файлами, текстом и потоками данных. Рассмотрим основные команды и их использование.

Команды для работы с файлами и директориями:

  1. cat (concatenate)

    • Выводит содержимое файла на экран.

    • Пример:

      cat filename.txt
  2. less и more

    • Постраничный просмотр содержимого файлов. less более функционален, чем more.

    • Пример:

      less filename.txt
  3. head и tail

    • head выводит первые строки файла (по умолчанию 10), а tail — последние строки.

    • Пример:

      head -n 5 filename.txt   # Первые 5 строк
      tail -n 5 filename.txt   # Последние 5 строк
  4. cp (copy)

    • Копирует файлы или директории.

    • Пример:

      cp source.txt destination.txt
  5. mv (move)

    • Перемещает или переименовывает файлы или директории.

    • Пример:

      mv oldname.txt newname.txt
  6. rm (remove)

    • Удаляет файлы или директории.

    • Пример:

      rm filename.txt
  7. mkdir и rmdir

    • mkdir создаёт директорию, а rmdir удаляет пустую директорию.

    • Пример:

      mkdir new_directory
      rmdir empty_directory
  8. find

    • Ищет файлы и директории по критериям (имя, размер, дата и т.д.).

    • Пример:

      find /path/to/search -name "*.txt"
  9. touch

    • Создает пустой файл или обновляет временные метки существующего файла.

    • Пример:

      touch newfile.txt

Команды для работы с текстом:

  1. echo

    • Выводит строку текста в терминал.

    • Пример:

      echo "Hello, World!"
  2. grep

    • Ищет строки, соответствующие шаблону, в файлах или выводе других команд.

    • Пример:

      grep "pattern" filename.txt
  3. awk

    • Мощный инструмент для обработки и анализа текстовых файлов. Часто используется для обработки данных в виде таблиц.

    • Пример:

      awk '{print $1, $3}' filename.txt
  4. sed (stream editor)

    • Используется для текстовой замены в файлах или выводе команд.

    • Пример:

      sed 's/old_text/new_text/g' filename.txt
  5. sort

    • Сортирует строки файла или вывода по алфавиту или численно.

    • Пример:

      sort filename.txt
  6. uniq

    • Убирает дубликаты строк (обычно после сортировки).

    • Пример:

      sort filename.txt | uniq
  7. wc (word count)

    • Считает количество строк, слов и символов в файле.

    • Пример:

      wc -l filename.txt   # Количество строк

Перенаправление ввода-вывода

Перенаправление позволяет направлять стандартный ввод, вывод и вывод ошибок в файлы или другие команды.

  • > — перенаправление стандартного вывода в файл (создает или перезаписывает файл).

    • Пример:

      echo "Hello, World!" > output.txt
  • >> — перенаправление стандартного вывода в файл (добавляет к существующему содержимому).

    • Пример:

      echo "Another line" >> output.txt
  • < — перенаправление стандартного ввода из файла.

    • Пример:

      sort < unsorted.txt
  • 2> — перенаправление вывода ошибок в файл.

    • Пример:

      command_that_might_fail 2> errors.txt
  • | — пайп (pipe), перенаправляет вывод одной команды на вход другой.

    • Пример:

      cat file.txt | grep "pattern"

Использование подстановок

Командная оболочка поддерживает несколько типов подстановок:

  • Подстановка команд — выполняет команду и подставляет результат на место команды:

    echo "Сегодня: $(date)"
  • Подстановка переменных — подставляет значение переменной:

    name="John"
    echo "Hello, $name!"
  • Подстановка файлов — подставляет имена файлов, соответствующих шаблону:

    ls *.txt

Управление процессами

Командная оболочка позволяет управлять процессами (например, запущенными программами) напрямую из терминала.

  • Запуск в фоне — команда, запущенная с & в конце, будет выполняться в фоновом режиме:

    long_running_command &
  • Остановка процесса — процесс можно остановить, нажав Ctrl + Z.

  • Возобновление процесса — можно возобновить процесс в фоне с помощью команды bg или на переднем плане с помощью fg.

Скрипты оболочки (shell scripts)

Команды оболочки можно записывать в файл и запускать как скрипт.

Простой пример скрипта:

#!/bin/bash
echo "Hello, $USER!"
date

Чтобы запустить скрипт:

  1. Сделайте его исполняемым:

    chmod +x script.sh
  2. Запустите:

    ./script.sh

Заключение

Командная оболочка в Linux/Unix — это мощный инструмент для управления системой и автоматизации задач. Знание базовых команд ввода-вывода, перенаправления потоков и принципов работы оболочки позволяет эффективно работать с файлами, текстом и процессами.

Last updated