Консоль Linux – основные команды
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

В данном руководстве в качестве основного интерпретатора командной строки Linux описывается модернизированная вариация командной оболочки Bourne shell – Bourne again shell или просто bash.

Командная оболочка Unix – командный интерпретатор, используемый в операционных системах семейства UNIX, в котором пользователь может либо давать команды операционной системе по отдельности, либо запускать скрипты, состоящие из списка команд. В первую очередь, под shell понимаются POSIX-совместимые оболочки, восходящие к Bourne shell (шелл Борна), появившемуся в Unix Version 7. Кроме bash, существуют другие разновидности оболочек, в той или иной мере совместимые между собой и со стандартом POSIX Shell:

· sh — оригинальный шелл Борна; dash, bash, zsh — другие современные клоны Bourne shell (расположены по функциональности).

o ksh (KornShell) — клон шелла Борна, разработанный Дэвидом Корном из AT&T Labs. Синтаксис совместим, функциональность интерактивности увеличена.

o pdksh (public domain ksh) — открытая (почти целиком является общественным достоянием[2]) реализация ksh.

o bash (bourne again shell) (эмуляция совместимости POSIX) расширенная Борном свободная (разработанная в рамках проекта GNU) оболочка ash, сходная с pdksh. Стандартная оболочка в Linux.

· C shell — (несовместима с POSIX shell) оболочка, с синтаксисом на основе Си, созданная Университетом Беркли в рамках проекта по реализации BSD Unix.

o csh (C-Shell)— проприетарная оболочка из состава дистрибутива BSD, имеет Си-образный синтаксис и не является POSIX-совместимой. Впервые введены возможности управления заданиями и произведены другие улучшения.

o tcsh ( csh)— свободная реализация csh с интерактивными возможностями, не уступающими bash. Удобна для интерактивной работы. Совместима с csh.

· ash (Almquist shell, оболочка Альмквиста), busybox — современные микро-версии, предназначенные для встраиваемых систем, а также используемые в мини-дистрибутивах.

sh является удобным и часто используемым интерпретируемым языком программирования. Он содержит стандартные конструкции для циклов, ветвления, объявления функций и т. п. Данный язык часто используется в UNIX-подобных системах при создании различных сценариев (скриптов) работы, в частности, сценариев автоматического конфигурирования исходных кодов программ перед их компиляцией.

Рассмотрим ряд основных команд, которые необходимы для конфигурирования сервера и установки ПО.

Справка man

man – основная команда для начинающего пользователя Linux. Она выводит справку (manual) по указанной команде, ее синтаксис, примеры и ссылки на другие раздели документации и команды.

Использование: man <команда>, например:

 

user@debian:~$ man ls

LS(1)                           User Commands                                                                

 

NAME

  ls - list directory contents

 

SYNOPSIS

  ls [OPTION]... [FILE]...

 

DESCRIPTION

  List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort.

 

  Mandatory arguments to long options are mandatory for short options too.

 

  -a, --all

         do not ignore entries starting with .

 

  -A, --almost-all

         do not list implied . and ..

 

  --author

         with -l, print the author of each file

 

Перемещение по многостраничному выводу – стрелки и клавиши PgUp/PgDown, выход – клавиша q.

Полный вариант справки по использовани справки:

 

user@debian:~$ man man

 

Потоки ввода-вывода и конвейеры

Потоки ввода-вывода

Стандартные потоки ввода и вывода в UNIX/Linux наряду с файлами являются одним из наиболее распространённых средств для обмена информацией процессов с внешним миром, а перенаправления >, >> и |, одной из самых популярных конструкций командного интерпретатора.

Процесс взаимодействия с пользователем выполняется в терминах записи и чтения в файл. То есть вывод на экран представляется как запись в файл, а ввод — как чтение файла. Файл, из которого осуществляется чтение, называется стандартным потоком ввода, а в который осуществляется запись — стандартным потоком вывода.

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

Стандартные потоки привязаны к файловым дескрипторам с номерами 0, 1 и 2.

· Стандартный поток ввода (stdin) — 0;

· Стандартный поток вывода (stdout) — 1;

· Стандартный поток ошибок (stderr) — 2.

Вывод данных на экран и чтение их с клавиатуры происходит потому, что по-умолчанию стандартные потоки ассоциированы с терминалом пользователя. Это не является обязательным — потоки можно подключать к чему угодно — к файлам, программам и даже устройствам. В командном интерпретаторе bash такая операция называется перенаправлением потоков:

< файл

Использовать файл как источник данных для стандартного потока ввода.

> файл

Направить стандартный поток вывода в файл. Если файл не существует, он будет создан; если существует — перезаписан сверху.

2> файл

Направить стандартный поток ошибок в файл. Если файл не существует, он будет создан; если существует — перезаписан сверху.

>>файл

Направить стандартный поток вывода в файл. Если файл не существует, он будет создан; если существует — данные будут дописаны к нему в конец.

2>>файл

Направить стандартный поток ошибок в файл. Если файл не существует, он будет создан; если существует — данные будут дописаны к нему в конец.

&>файл или >&файл

Направить стандартный поток вывода и стандартный поток ошибок в файл. Другая форма записи: >файл 2>&1.

Рассмотрим простой пример – ранее мы выводили список процессов на экран. Перенаправим вывод данных от команды ps из стандартного поток вывода (экран) в файл.

Исходная команда:

 

debian:/home/user# ps

PID TTY     TIME CMD

 2542 pts/0 00:00:00 su

 2543 pts/0 00:00:00 bash

 2563 pts/0 00:00:00 ps

 

Направим вывод вместо экрана – в файл ps.txt в домашней папке пользователя.

 

user@debian:~$ ps > ~/ps.txt

 

Как видно, вывод программы ушел в файл, а на экран ничего не вывелось. Так как файла не существовало – он был создан. Проверим, так ли это и содержит ли он вывод ps:

 

user@debian:~$ cat ~/ps.txt

PID TTY     TIME CMD

 2523 pts/0 00:00:00 bash

 2575 pts/0 00:00:00 ps

 

Команда cat выводит содержимое файла на экран, как видим – файл содержит вывод ps. Иная форма записи: ps 1> ~/ps.txt, где 1 – номер потока (стандартный вывод).

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

 

user@debian:~$ ps 2>~/ps_error.txt

PID TTY     TIME CMD

 2523 pts/0 00:00:00 bash

 2676 pts/0 00:00:00 ps

user@debian:~$ ps * 2>~/ps_error.txt

user@debian:~$ cat ~/ps_error.txt

ERROR: Unsupported option (BSD syntax)

 

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

Рассмотрим использование стандартного потока ввода на примере команды sort (сортировка) из файла. Создадим файл, в котором содержатся данные для сортировки (например, числа от 0 до 9 в случайном порядке):

 

user@debian:~$ echo '9' >> unsort.txt

user@debian:~$ echo '7' >> unsort.txt

user@debian:~$ echo '5' >> unsort.txt

user@debian:~$ echo '3' >> unsort.txt

user@debian:~$ echo '1' >> unsort.txt

user@debian:~$ echo '8' >> unsort.txt

user@debian:~$ echo '2' >> unsort.txt

Нетрудно догадаться, что команда echo выводит указанный текст на экран, но в данном случае мы направили ее вывод в файл unsort.txt. Кавычки в данном случае нужны, так как в тексте есть пробелы и спецсимволы. Проверим, записалась ли строка в файл:

 

user@debian:~$ cat unsort.txt

9

7

5

3

1

8

2

Записалась. Теперь выполним следующую конструкцию:

 

user@debian:~$ sort < unsort.txt > sort.txt

user@debian:~$ cat sort.txt

1

2

3

5

7

8

9

 

Программа sort сортирует данные, поступившие в стандартный поток ввода, и выводит их на стандартный поток вывода. Стандартный поток ввода подключен к файлу unsort.txt, а выход записывается в sort. txt. Описанная структура может быть в разы более сложной и включать десятки команд.

Конвейеры

Стандартные потоки можно перенаправлять не только в файлы, но и на вход других программ. Если поток вывода одной программы соединить с потоком ввода другой программы, получится конструкция, называемая каналом, конвейером или пайпом (от англ. pipe, труба).

В bash канал выглядит как последовательность команд, отделенных друг от друга символом |:

 

команда1 | команда2 | команда3 | . . . | командаN

 

Стандартный поток вывода команды1 подключается к стандартному потоку ввода команды2, стандартный поток вывода команды2 в свою очередь подключается к потоку ввода команды3 и т.д.

В UNIX/Linux существует целый класс команд, предназначенных для преобразования потоков данных в каналах. Такие программы известны как фильтры. Программа-фильтр читает данные, поступающие со стандартного потока ввода (на вход), преобразовывает их требуемым образом и выводит на стандартный поток вывода (на выход).

Мы уже рассматривали пример использования конвейра:

 

debian:~# ps ax | grep ssh | grep usr | grep sbin

2758 ?   Ss 0:00 /usr/sbin/sshd

2862 ttyl S+ 0:00 grep ssh

 

Рассмотрим пример использования конвейра еще раз на примере сортировки данных:

 

user@debian:~$ cat unsort.txt | sort > sort.txt

user@debian:~$ cat sort.txt

1

2

3

5

7

8

9

 

Сначала выполняется команда cat, которая выводит на экран содержимое файла unsort.txt, но ее поток вывода перенаправляется на поток ввода команды sort, которая выполняет сортировку и ее вывод записывается в файл sort.txt. Выводит сортированный файл на экран и убеждаемся, что числа отсортированы по возрастанию.

Немного усложенный пример:

 

user@debian:~$ cat unsort.txt | sort | sort -r > sort_r.txt

user@debian:~$ cat sort_r.txt

9

8

7

5

3

2

1

 

Та же процедура, но команда sort передает свой вывод команде sort с аргументом –r, который заставляет ее выполнить сортировку в обратном порядке (по убыванию). Выводим файл на экран и убеждаемся, что он отсортирован.

Дата: 2019-12-10, просмотров: 266.