Выбрать главу

2.2. Использование оболочки

При установке системы Linux вы должны создать по крайней мере одну учетную запись обычного пользователя (в дополнение к корневому пользователю), которая будет вашей личной учетной записью. В этой главе необходимо входить в систему с учетной записью обычного пользователя.

2.2.1. Окно оболочки

После входа в систему откройте окно оболочки, которое часто называют терминалом. Проще всего это выполнить с помощью запуска терминального приложения из графического интерфейса пользователя Gnome или Unity в Ubuntu. При этом оболочка открывается в новом окне. После запуска оболочки в верхней части окна должно отобразиться приглашение, которое обычно заканчивается символом доллара ($). В Ubuntu это приглашение будет выглядеть примерно так: name@host:path$, а в Fedora оно такое: [name@host path]$. Если вы хорошо знакомы с Windows, окно оболочки будет выглядеть подобно окну командной строки DOS; приложение Terminal в OS X, по сути, такое же, как окно оболочки Linux.

В этой книге много команд следует набирать в строке приглашения оболочки. Чтобы обозначить приглашение, все они начинаются с символа $. Наберите приведенную ниже команду (только выделенный жирным шрифтом текст, без символа $) и нажмите клавишу Enter:

$ echo Hello there.

примечание

Многие команды в этой книге начинаются символом #. Такие команды следует запускать с правами пользователя superuser (root). Как правило, с этими командами следует обращаться осторожно.

Теперь введите такую команду:

$ cat /etc/passwd

Эта команда отображает содержимое файла с системной информацией /etc/passwd, а затем снова выдает приглашение оболочки. Для чего нужен этот файл, вы узнаете из главы 7.

2.2.2. Команда cat

Команда cat системы Unix является одной из простейших для понимания. Она просто выводит содержимое одного или нескольких файлов. Общий синтаксис команды cat выглядит следующим образом:

$ cat file1 file2 ...

После запуска команда cat выполняет вывод содержимого файлов file1, file2 и каких-либо еще (они обозначены символом ...), а затем завершает работу. Эта команда названа так, поскольку она выполняет конкатенацию (сцепление) содержимого файлов, если выводится более одного файла.

2.2.3. Стандартный ввод и стандартный вывод

Мы воспользуемся командой cat, чтобы кратко изучить ввод и вывод (I/O) в си­стеме Unix. Процессы системы Unix используют потоки ввода/вывода для чтения и записи данных. Процессы считывают данные из потоков ввода и записывают данные в потоки вывода.

Потоки являются очень гибкими. Например, источником потока ввода может быть файл, устройство, терминал и даже поток вывода от другого процесса.

Чтобы увидеть работу потока ввода, введите команду cat (без названий файлов) и нажмите клавишу Enter. На этот раз вы не получите повторного приглашения, поскольку команда cat все еще работает. Начните набирать что-либо, нажимая клавишу Enter в конце каждой строки. Команда cat будет возвращать каждую набранную вами строку. Чтобы завершить работу команды cat и вернуться к строке приглашения, нажмите сочетание клавиш Ctrl+D в пустой строке.

Команда cat имеет интерактивный характер, поскольку работает потоками. Вы не указали имя входного файла, поэтому команда cat выполнила считывание из стандартного потока ввода, предусмотренного ядром системы Linux, а не из потока, связанного с файлом. В таком случае стандартный поток ввода был присоединен к терминалу, в котором вы запустили команду cat.

примечание

Нажатие сочетания клавиш Ctrl+D в пустой строке останавливает текущий стандартный поток ввода из терминала (и зачастую завершает работу программы). Не смешивайте эту команду с сочетанием клавиш Ctrl+C, которое завершает работу программы вне зависимости от ее ввода или вывода.

Стандартный вывод прост. Ядро предоставляет каждому процессу стандартный поток вывода, в который можно записывать выходные данные. Команда cat всегда записывает свои выходные данные в стандартный вывод. Когда вы запускаете команду cat в терминале, стандартный вывод уже подключен к терминалу, поэтому вы видите результат в нем.

Для стандартных ввода и вывода часто используют сокращения stdin и stdout. Многие команды работают подобно команде cat: если вы не укажете входной файл, команда будет производить считывание из stdin. Вывод немного отличается. Некоторые команды (подобно cat) отправляют выходные данные только в stdout, другие же обладают возможностью отправки данных напрямую в файлы.

Существует также и третий стандартный поток ввода/вывода, который называется стандартной ошибкой. Этот поток будет рассмотрен в подразделе 2.14.1.

Одним из самых важных свойств стандартных потоков является легкость манипулирования ими с целью записи и чтения, причем не только в терминале. В част­ности, из раздела 2.14 вы узнаете о том, как подключать потоки к файлам или другим процессам.

2.3. Основные команды

Большая часть приведенных ниже команд Unix использует множество аргументов, причем у некоторых настолько много параметров и форматов, что полный их перечень нецелесообразен. Ниже приведен упрощенный список основных команд.

2.3.1. Команда ls

Команда ls выводит перечень содержимого какого-либо каталога. По умолчанию это текущий каталог. Используйте вариант ls -l, чтобы получить детализированный (длинный) список, или ls –F, чтобы отобразить информацию о типах файлов. Дополнительные сведения о типах файлов и правах доступа, отображающиеся в левом столбце, рассмотрены в разделе 2.17.

Ниже приведен пример длинного перечня, он содержит информацию о владельце файла (столбец 3), группе (столбец 4), размере файла (столбец 5), а также о дате и времени его изменения (между столбцом 5 и названием файла):

$ ls -l

total 3616

-rw-r—r—   1 juser   users    3804 Apr 30  2011 abusive.c

-rw-r—r—   1 juser   users    4165 May 26  2010 battery.zip

-rw-r—r—   1 juser   users  131219 Oct 26  2012 beav_1.40-13.tar.gz

-rw-r—r—   1 juser   users    6255 May 30  2010 country.c

drwxr-xr-x   2 juser   users    4096 Jul 17 20:00 cs335

-rwxr-xr-x   1 juser   users    7108 Feb  2  2011 dhry

-rw-r—r—   1 juser   users   11309 Oct 20  2010 dhry.c

-rw-r—r—   1 juser   users      56 Oct  6  2012 doit

drwxr-xr-x   6 juser   users    4096 Feb 20 13:51 dw

drwxr-xr-x   3 juser   users    4096 May  2  2011 hough-stuff

В разделе 2.17 вы больше узнаете о символе d, который встречается в столбце 1 этого перечня.

2.3.2. Команда cp

В своей простейшей форме команда cp копирует файлы. Например, чтобы скопировать file1 в файл file2, введите следующее:

$ cp file1 file2

Чтобы скопировать несколько файлов в какой-либо каталог (папку) с названием dir, попробуйте такой вариант:

$ cp file1 ... fileN dir

2.3.3. Команда mv

Команда mv (от англ. move — «переместить») подобна команде cp. В своей простейшей форме она переименовывает файл. Например, чтобы переименовать файл file1 в file2, введите следующее:

$ mv file1 file2

Можно также использовать команду mv, чтобы переместить несколько файлов в другой каталог:

$ mv file1 ... fileN dir

2.3.4. Команда touch

Команда touch создает файл. Если такой файл уже существует, команда touch не изменяет его, но обновляет информацию о времени изменения файла, выводимую с помощью команды ls -l. Например, чтобы создать пустой файл, введите следующее: