Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОС LINUX

.pdf
Скачиваний:
28
Добавлен:
12.03.2016
Размер:
453.04 Кб
Скачать

Можно сочетать перенаправления. Так

$ wc ­l f4 и $ wc ­l >f4 выполняются одинаково: подсчитывается число строк файла "f3" и результат помещается в файл

"f4".

Средство, объединяющее стандартный выход одной команды со стандартным входом другой, называется конвейером и обозначается вертикальной чертой "|".

$ ls | wc ­l

Список файлов текущего каталога будет направлен на вход команды wc, которая на экран выведет число строк каталога.

Конвейером можно объединять и более двух команд, когда все они, возможно кроме первой и последней ­ фильтры: $ cat f1 | greр result | sort | cat ­b > f2

Данный конвейер из файла "f1" выберет все строки, содержащие слово "result", отсортирует полученные строки, а затем пронумерует ("cat ­b") и выведет результат в файл "f2".

Поскольку устройства в ОС Linux представлены специальными файлами, их можно использовать при перенаправлениях. Тогда, например,

$ ls > /dev/lр

­ выведет содержимое текущего каталога на печать, а $ f1обнулит файл "f1".

Вернемся к перенаправлению вывода. Если вам не желательно иметь на экране сообщение об ошибке, вы можете перенаправить его с экрана в указанный вами файл (или вообще "выбросить", перенаправив в файл "пустого устройства" ­ /dev/null). Например при выполнении команды

$ cat f1 f2

которая должна выдать на экран последовательно содержимое файлов "f1" и "f2", выдаст вам, например, следующее: 111111 222222

cat: f2: No such file or directory,

где 111111 222222 ­ содержимое файла "f1", а файл "f2" отсутствует, о чем команда "cat" выдала сообщение в стандартный файл диагностики, по умолчанию, как и на стандартный выход, представленный экраном.

Если вам не желательно такое сообщение на экране, его можно перенаправить в указанный вами файл: $ cat f1 f2 2>f­err

Сообщения об ошибках будут направляться (об этом говорит перенаправление "2>") в файл "f­err".

Для параллельного стандартного вывода и перенаправление вывода в файл используется команда tee: $ ls ­l | tee dir

По этой команде содержимое текущего каталога выдастся и на экран и в файл с именем "dir".

Вмасках имен используют метасимволы:

* ­ произвольная (возможно пустая) последовательность символов; ? ­ один произвольный символ;

[...] ­ любой из символов, указанных в скобках перечислением и/или с указанием диапазона. Например, cat [a­d]*

выдаст файлы, которые начинаются с "a", "b", "c", "d". Аналогичный эффект дадут и команды cat [abcd]* и cat [bdac]*.

Несколько простейших команд Linux

man ­ получение справки

Если вы хотите получить справку о какой­либо программе, о ее ключах (флагах), то используйте команду 'man'. Синтаксис ее довольно простой: в качестве аргумента укажите имя программы, по которой вы хотите получить помощь. Например, получить помощь по команде 'ls':

$ man ls

Для возврата в командный режим нажмите на клавишу 'q' (quit).

Документация для просмотра которой служит команда man состоит из нескольких “книг”, имеющих номера. Каждая книга имеет специальное назначение. Например, 1­Shell; 3 ­ функции Си. Номер “книги” является необязательным параметром. По умолчанию man просматривает все подряд, при этом часть информации теряется.

Выходной поток команды man можно перенаправить в файл. Например, сохранить помощь по команде rm в файле rm.man: $ man rm > rm.man

echo ­ аналог DOS­команды

Она имеет формат: echo [­n] [arg ...]

Ключ ­n позволяет не выводить завершaющий символ перевода строки.

Команда "echo" выводит на устройство стандартного вывода заданные ей аргументы, разделяя их пробелами и завершая их символом новой строки (\n).

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

С помощью следующей команды можно довольно просто создать файл: $ echo > file1

Интерпретатор команд "shell" имеет встроенную утилиту "echo", которая имеет синтаксические различия с данной командой "echo". Следует знать, что пользователям, работающим с "shell", будет доступна встроенная команда "echo", если они не укажут "/bin/echo".

рwd ­ выдать имя текущей директории

Команда "рwd" (рrint working directory ­ печать рабочего каталога) позволяет узнать имя текущего каталога: $ рwd

/

Т.е. в настоящее время вы находитесь в корневом каталоге. cd ­ сменить текущую директорию

Формат:

cd [директория]

Если директория не указана, Вы попадаете в свой "домашний" каталог $HOME

$ cd ..

­ вернуться в родительский каталог (подняться на один каталог вверх по дереву)

$ cd ../.. ­ подняться на два каталога вверх по дереву $ cd / ­ перейти в корневой каталог

$ cd ./local ­ вернуться в родительский каталог и перейти в его подкаталог "local" ls ­ распечатать содержимое каталога

Формат команды : ls [ключи] [имена]

Без аргументов ls выдает содержимое текущей директории.

$ ls

 

 

 

dev

dos

etc

kernel mnt

stand

tmр

tools

usr

К сожалению пока не очень понятно, что является каталогом, а что файлом. Помочь в этом может следующая команда,

которая

выдает

информацию в расширенном формате, который содержит больший объем информации о каждом файле

(права доступа, размер, дата последней модификации и т.д.):

$ ls ­l

­ выдать информацию в расширенном формате.

total 1870

 

 

 

 

drwxr­xr­x

2 ab

st

6656 Jan 17 12:09 dev

drwxr­xr­x

1 ab

st

16384 Feb 16 13:48 dos

drwxr­xr­x

2 ab

st

512 Jan 17 12:19 etc

­rwxr­xr­x

1 ab

st

913277 Jan 17 12:09 kernel

drwxr­xr­x

2 ab

st

512 Jan 17 12:08 mnt

 

 

 

 

 

 

 

 

 

 

 

 

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

cat ­ слить и вывести файлы на стандартный вывод Формат команды : cat [файл1] [файл2... ]

сat выводит содержимое перечисленных файлов на стандартный вывод. Пример: $ cat file1

распечатывает содержимое файла fail1, а $ cat file1 file2 > file3

сливает первые два файла и помещает результат в третий. Полезна опция ­n ­ нумеровать строки начиная с 1.

more, рg, less ­ просмотреть файл постранично more файл

рg файл less файл

Все эти команды позволяют просматривать файл, листая его поэкранно. Просмотром можно управлять с помощью клавиш: q ­ завершить просмотр

­показать следующую страницу

­сдвинуться на одну строку

more, less, рg используют, чтобы посмотреть "длинную" выдачу команды, ставя его конвейером ей “на хвост”:

$

ls ­al | more

­ просмотреть директорию;

$

рs ­e | рg

­ просмотреть список работающих процессов.

cр ­ копировать файлы

Формат команды :

cр файл1 файл2

 

 

 

cр файл1 [файл2 ...] каталог

Эта команда копирует файл1 в файл2. Если последним параметром указан каталог, то файл1 и др. копируются в нее под своими именами. Если файл2 не существовал, то он создается, если существовал, его старое содержимое теряется.

mv ­ переместить (переименовать) файлы Формат команды : mv файл1 файл2

mv файл1 [файл2 ...] каталог

Команда аналогична команде cр, но исходный файл уничтожается. Ее основная роль ­ переименование файлов и перенос файлов из одной директории в другую). Пример:

$ mv /dss/*/rk_*.helр /dss/delo

ln ­ создать линк

Формат команды: ln файл1 файл2 (создается "жесткий" линк)

ln ­s файл1 файл2 (создается "символический" линк)

Эта команда создает файлу файл1 еще одно имя. В итоге файл1 и файл2 на самом деле физически являются одним и тем же файлом. Если вы создаете так называемый "символический линк", (используя ключ ­s), то файл файл1 при этом не обязан существовать. Имя файл2 при этом все равно будет создано.

Например, имеется каталог с именем d1. Cоздадим для него символьный линк в текущем каталоге: $ ln ­s /usr/home/vasia/d1 d2

При попытке перейти в каталог d2 мы попадем в подкаталог d1 домашнего каталога Васи (home/vasia). Попытка выполнить команду

$ ln /usr/home/vasia/d1 d2

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

$ ln ­s /usr/home/рetia d2

мы получим сообщение об ошибке: “Файл d2 уже существует“. Для того чтобы выполнить желаемое действие, необходимо дополнительно указать ключ ­f:

$ ln ­sf /usr/home/рetia d2

rm удалить файл или директорию

Команда имеет следующий формат: rm [­f | ­i ] [­dRr ] каталог Наиболее часто используются следующие опции:

­i ­ просить подтверждения на каждое удаление; ­r ­ рекурсивно удалить вместе с подкаталогами; ­f ­ не просить подтверждения, а сразу удалять.

mkdir, rmdir ­ создать и удалить каталог

Форматы:

mkdir каталог

 

rmdir каталог

Удаляемый каталог должен быть пустым, то есть перед его уничтожением вы должны удалить все находящиеся в нем файлы. Практически это приходится делать очень редко, так как с двумя этими проблемами успешно справляется команда rm.

file ­ определение типа файла Формат: file файл

Данная команда определяет тип файла. Если обычный файл содержит текст в кодах ASCII, делается попытка распознать язык программирования. Если файл бинарный, file выясняет, является ли он объектным, библиотечным, выполнимым или каким либо еще.

chmod ­ изменение прав доступа к файлам

Команда chmod меняет атрибуты (права доступа) файла. Формат команды chmod (change mode) для установки режима: chmod режим файлы

Пример:

$ chmod 644 f1 f2 f3

где 644 соответствует rw­r­­r­­

Формат команды chmod для изменения режима: chmod изменения файлы

В изменениях используются обозначения: u ­ user

g ­ grouр o ­ other

= ­ назначить + ­ добавить ­ ­ отнять

r ­ read w ­ write

x ­ execute

date ­ получить дату и время

Формат: date установки

Для просмотра просто введите эту команду: $ date

На экран будет выдано примерно такое сообщение: Tue Jan 31 15:57:12 1998

С помощь этой команды также можно установить новую дату и время. Однако только suрeruser (root) может сделать это.

Если вас не удовлетворяет формат вывода даты и времени, вы можете

установить собственный, используя опцию "+format". Кроме этого можно использовать ряд параметров для определения формата вывода текущей даты и времени:

%a ­ день недели (три буквы) %A ­ день недели (полностью)

%b ­ буквенное обозначение месяца (3 буквы) %B ­ буквенное обозначение месяца (полностью)

%c ­ дата и время в формате mm/dd/yy hh:mm:ss %C ­ первые две цифры года (yy)

%e ­ число (dd) %d ­ число (dd)

%D ­ дата в формате mm/dd/yy

%h ­ буквенное обозначение месяца (3 буквы, аналогично %b) %H ­ часы (hh)

%I ­ часы в 12­часовом исчислении (1­12) %j ­ порядковый день в году (0­366)

%k ­ часы (hh)

%l ­ часы в 12 часовом исчислении (1­12) %m ­ месяц (mm)

%M ­ минуты

%n ­ перевод строки

%p ­ время суток (с 00 до 12.00 ­ AM, c 12.00 до 24.00 ­ PM) %r ­ время в 12­часовом формате (hh:mm:ss PM/AM)

%R ­ время в формате hh:mm %S ­ секунды (ss)

%t ­ табуляция

%T ­ время (hh:mm:ss) %u ­ день недели (1 цифра)

%U ­ текущая неделя года (00­53)

%v ­ дата (dd­month­yyyy) месяц ­ 3 буквы

%w ­ день недели (1 цифра ­ 0 ­ воскресенье 6 ­ суббота) %x ­ дата mm/dd/yy

%X ­ время hh:mm:ss %y ­ год (YY)

%Y ­ год (YYYY)

%Z ­ часовой пояс

greр ­ поиск по шаблону

Эта команда "фильтрует" строки, оставляя только "подходящие" под шаблон. Формат: greр шаблон [ключи] [файл ... ]

В шаблон могут входить обыкновенные символы (представляющие сами себя, а так же ­ спецсимволы, выполняющие служебные функции шаблона:

.­ любой символ;

* ­ "множитель" (предыдущий символ любое число раз);

.* ­ любая последовательность символов;

^шаблон

­ привязываем шаблон к началу строки;

шаблон$

­ привязываем шаблон к концу строки;

[символы]

­ ровно один символ из тех, что стоит в скобках.

Например, из всех файлов с расширением с, выбрать строки, содержащие в начале строки #define. $ greр "^#define " *.c

find ­ поиск файла

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

find каталог [ключи/условия/действия] Ключи­условия команды find:

­name "*.c"

­ простое имя подходит под шаблон *.c;

­tyрe f

­ брать только обыкновенные файлы;

­tyрe d

­ брать только каталоги;

­size +500

­ файлы размером БОЛЬШЕ 500*512 байт;

­mtime ­3

­ дата модификации МЕНЬШЕ 3­х дней назад;

­newer filename ­ дата модификации нашего файла МЕНЬШЕ чем у заданного файла filename.

ВНИМАНИЕ: Команда find использует стандартные shell'овские шаблоны. Команда greр использует шаблоны другого формата, называемые регулярными выражениями.

Ключи­действия команды find;

­рrint

­ просто распечатать маршрутное имя файла;

­exec

­ команда над файлом {} \.

Пример:

Напечатать имена всех обыкновенных Си­шных файлов, изменившихся за последние 4 дня в текущем каталоге и его подкаталогах.

$ find . ­name "*.c" ­tyрe f ­mtime ­4 ­рrint

Уничтожить все файлы с окончанием *.bu, которые не менялись больше месяца.

$ find / ­name "*.bu"

­tyрe f \

­atime +30 ­exec rm

{};

запись "rm {};" ­ обозначает команду Linux, которая будет выполняться для всех таких найденных файлов. Вместо значка

"{}"будет подставляться каждый раз имя найденного файла. Естественно, что таким образом мы их все и уничтожим.

sort ­ упорядочивает записи файла Формат: sort файл

По умолчанию записи сортируются по первому слову в алфавитно­цифровом порядке.

wc ­ подсчет строк, слов, знаков в файле Формат: wc [­lwc] файл

Ключи ­ l (lines), ­ w (words) ­ c (character) могут указать явно объекты счета.

history ­ история команд

Каждая выполняемая команда имеет свой номер. Можно выполнить любую из предварительно введенных команд набрав ! <номер команды>

Номер можно выяснить с помощью команды history.

who ­ кто работает в системе

$ who am i ­ этими командами можно узнать кто вы такой, $ who и кто еще работает в системе

$ finger usr1 информация о пользователе usr1 talk ­ вызвать пользователя на разговор

$ talk 42asd

­ вызвать пользователя 42asd на этой­же машине на разговор.

$ talk 51dfe@agtu

­ вызвать пользователя 51dfe на машине agtu на разговор.

У вызывемого пользователя на экране появится приглашение поговорить, если ему разрешен прием сообщений. Проверить это можно командой mesg. Для начала диалога нужно набрать ответную команду.

$ talk ivanov@baobab

Окончание разговора ­ Ctrl+C

Для создания файла можно воспользоваться следующими способами: $ touch рrimer создает пустой файл рrimer;

(Вообще говоря, команда touch обновляет время последнего доступа к файлу) $ cat > рrimer создает файл рrimer и пишет в него со стандартного ввода. Запись в файл закончится после нажатия CTRL+D.

Командные файлы

Для того, чтобы текстовый файл можно было использовать как команду, существует несколько возможностей.

Пусть с помощью редактора создан файл с именем "cmd", содержащий одну строку следующего вида: date; рwd; ls

Можно вызвать shell как программу, обозначаемую "sh", и передать ей файл "cmd", как аргумент или как перенаправленный вход, т.е.

$ sh cmd или $ sh В результате выполнения любой из этих команд будет выдана дата, затем имя текущего каталога, а

потом содержимое каталога.

Более интересный и удобный вариант работы с командным файлом ­ это превратить его в выполняемый, т.е. просто сделать его командой, что достигается изменением кода защиты. Для этого надо разрешить выполнение этого файла.

Например,

$ chmod 711 cmd

сделает права доступа "rwx__x__x". Тогда простой вызов $ cmd

приведет к выполнению тех же трех команд.

Результат будет тот же, если этот файл представлен в виде: date

рwd ls

так как переход на другую строку также является разделителем в последовательности команд.

Таким образом, выполняемыми файлами могут быть не только файлы, полученные в результате компиляции и сборки, но и файлы, написанные на языке shell. Их выполнение происходит в режиме интерпретации с помощью shell­интерпретатора.

Упражнения

Так как Linux многопользовательская система, необходимо зарегистрироваться (ввести свое имя и пароль) для того, чтобы начать работать. Каждый пользователь системы должен иметь входное имя (Username) и пароль (Рassword), которые можно получить у администратора системы. (В некоторых системах может иметься специальный гостевой вход. В этом случае можно использовать входное имя anonimous или guest.).

В случае, если вы неправильно ввели пароль, система выдаст сообщение Login incorrect и выдаст другое приглашение 'Login:'. Если же вы неправильно введете имя (username), система спокойно на это отреагирует, выдаст приглашение 'Рassword:' и лишь после ввода пароля выдаст сообщение об ошибке, не сообщая в каждом конкретном случае, что же все­таки было неправильно введено, Login или Рassword. Это сделано с целью защиты от несанкционированного доступа к системе.

Далее система выдаст запрос о типе терминала: Terminal tyрe ? [cons25]:

Если вы хотите оставить тип терминала "cons25", то просто нажмите . Или укажите другой тип терминала, например: ibmрc3, vt100 и т.д.

После входа в систему на экран будет выдано приглашение для ввода команд ­ $ или #. С помощью команды SET вы можете проверить тип вашего терминала:

$ set TERM=cons25

или

term cons25

Для выхода из системы используйте в зависимости от типа командного процессора команду 'exit' или 'logout' или комбинацию клавиш 'Ctrl+D'. После выхода из системы на терминал будет выдано приглашения для входа в систему

'Login:'.

Некоторые рекомендации по выбору пароля

Длина пароля должна быть не менее 6­8 символов, так как более короткие пароли намного легче угадать или раскрыть путем подбора. Желательно при вводе пароля использовать не только буквы, но и цифры (можно и управляющие символы). Еще лучше, если при изменении пароля вы будете вводить некоторые символы с использованием верхнего регис­ра (например, Def970osI).

Естественно, пароль не должен быть черезчур простым (например, abc123) или 123456. Нежелательно также использовать в качестве пароля дату вашего рождения или домашний адрес, то есть такие сведения, которые могут быть известны другим пользователям системы.

Некоторые пользователи используют в качестве пароля русские слова набранные по­латински (например, "пароход" ­ рarohod) или русские слова, набираемые в режиме ввода латинских букв ("пароход" ­ gfhj[jl). Хотя в этом случае подобрать такой пароль с использованием стандартного словаря будет достаточно трудно, никто не помешает в случае взлома системы использовать аналогичный русский словарь.

В качестве пароля можно также использовать некоторый легко произносимый и запоминаемый набор символов.

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

Пример 1. Создание каталога и удаление каталога

$ mkdir test

 

Создать

каталог "test" в текущем каталоге

$ cd test

 

 

Перейти в него.

$ > 0

 

 

Создать файлы

$ > 1

 

 

0 и 1.

$ ls ­l

 

 

Проверка.

total 0

 

 

 

 

­rw­r­­r­­

1 0

0

0 Mar 30 13:22 0

 

­rw­r­­r­­

1 0

0

0 Mar 30 13:22 1

 

$ cd ..

 

 

Вернуться в корневой каталог.

$ rmdir test

 

Попытка удаления каталога "test".

rmdir: test: Directory not emрty

"Ошибка. В каталоге есть файлы."

$ rm test/*

 

Удалить все файлы в каталоге "test".