16540
СОЗДАНИЕ УЧЕТНЫХ ЗАПИСЕЙ ПОЛЬЗОВАТЕЛЕЙ И ГРУПП В СРЕДЕ ОС LINUX. ОРГАНИЗАЦИЯ РАБОЧЕЙ СРЕДЫ ПОЛЬЗОВАТЕЛЯ
Лабораторная работа
Информатика, кибернетика и программирование
Лабораторная работа 4. Создание учетных записей пользователей и групп в среде ОС Linux. Организация рабочей среды пользователя Войдите в систему. Используя Центр управления создайте своего пользователя. Перейдите в первую текстовую консоль и зарегистрируйтесь...
Русский
2013-06-22
381.5 KB
8 чел.
Примечание.
Для того чтобы просмотреть файл /etc/passwd, выполните команду:
cat /etc/passwd |less
cat /etc/passwd выводит файл на экран, а команда less осуществляет поэкранную разбивку вывода.
Редактор vi является средством создания и редактирования файлов. Он предназначен для работы на видеотерминале и использует окна, посредством которых вы можете просматривать текст файла. Несколько простых команд позволяют вам произвести изменения в тексте, которые очень быстро отображаются на экране. Редактор может отобразить одну или несколько строк текста. Он позволяет вам передвигать курсор в любую точку на экране или в файле, создавать, изменять или удалять текст. Вы можете также использовать некоторые команды построчного редактора, например глобальные команды, которые позволяют вам изменять множество появлений некоторой строки символов, используя одну команду. Для того чтобы двигаться по файлу, вы можете прокручивать текст вперед или назад.
Редактор vi имеет более 100 команд. В этом разделе описаны основные команды, которые позволят вам использовать vi просто, но эффективно. Особое внимание будет уделено выполнению задач, позволяющих:
Редактор vi функционирует в 3 режимах:
Для того чтобы создать файл, введите:
vi filename
Когда вы введете команду vi с именем файла, vi очистит экран и отобразит окно, где вы можете вводить и редактировать текст.
Если вы успешно вошли в редактор vi, то сразу же попадаете в командный режим и vi ожидает ввода ваших команд. Для того чтобы создать текст, необходимо:
После того как вы закончили создавать текст, нажмите клавишу <ESC>, Для того чтобы из режима ввода перейти к командному режиму. Теперь вы можете редактировать текст, который создали или записали.
Если вы нажмете клавишу <ESC> и услышите звуковой сигнал, то это значит, что вы уже перешли в командный режим. Нажатие клавиши <ESC> в то время, когда вы находитесь в командном режиме, никак не влияет на текст в файле, даже если вы нажмете ее несколько раз.
В общем случае редактирование файла это добавление, изменение, удаление текста. Для того чтобы выполнить эти задачи, вы должны научиться переходить от одной страницы текста к другой, от одной строки к другой и между определенными точками на строке. В этом подразделе описаны команды добавления и удаления текста и способы перемещения курсора.
Клавиши перемещения курсора позволяют вам перемещать курсор по файлу. Курсор можно переместить с помощью следующих клавиш:
h перемещает курсор на один символ влево;
j перемещает курсор вниз на одну строку;
k перемещает курсор вверх на одну строку;
l перемещает курсор на один символ вправо;
Команды j и k сохраняют позицию курсора на строке. Например, если курсор находился на 17-м символе слева, то когда вы введете команду j или k, он переместится на новую строку, но будет находиться на 17-м символе. Если символов в новой строке меньше, то курсор переместитcя на последний символ строки.
Примечание. Клавиши со стрелками можно использовать вместо клавиш <h>, <j>, <k>, <l> при необходимости перемещения на 1 символ.
Если перед <h>, <j>, <k>, <l> поставить число, то курсор передвинется на количество строк/символов, равных числу. Например, если надо передвинуть курсор на 4 строки вверх, введите <4k>. Если вы не можете продвинуться дальше в этом направлении, то vi подаст звуковой сигнал и курсор останется на прежнем месте.
Для того чтобы переместить курсор на 35 строк вниз, введите:
35j
Дополнительно к клавишам <h> и <l> можно использовать клавиши <SPACEBAR> и <BACKSPACE> для перемещения курсора вправо или влево.
<SPACEBAR> переместить курсор на один символ вправо;
<nSPACEBAR> переместить курсор на n символов вправо;
<BACKSPACE> переместить курсор на один символ влево;
<nBACKSPACE> переместить курсор на n символов влево/
Если вы хотите удалить символ, переместите курсор к этому символу и нажмите x (для удаления одного символа можно использовать del). Перед x может стоять число, которое говорит о том, сколько символов подряд нужно удалить. Редактор vi так корректирует строку, что на месте удаленного символа не остается пустого промежутка или на месте удаленной строки пустой строки.
В редакторе vi существует две команды для добавления текста: insert(i) и append(a). Для того чтобы добавить текст с помощью команды i, переместите курсор в нужное место с помощью клавишей <h>, <j>, <k>, <l>. Затем нажмите i и введите текст. Введенный вами текст появится на экране слева от символа, на который указывает курсор. Этот символ и все остальные справа от курсора будут передвинуты вправо, Для того чтобы освободить место для нового текста. Редактор vi будет хранить символы, вводимые вами, до тех пор, пока вы не нажмете клавишу <ESCAPE>. Если необходимо, передвинутые символы будут перенесены на следующую строку.
Таким же образом вы можете использовать команду a. Отличие состоит в том, что новый текст появится справа от символа, к которому подведен курсор.
Когда вы закончите работу с текстом, необходимо записать содержимое буфера в файл и возвратить управление shell. Для этого нажмите клавишу <SHIFT> и дважды нажмите <Z(ZZ)>. Редактор сохранил имя того файла, который вы указали в начале сеанса редактирования, и в этот файл перепишет текст из буфера. Обратите внимание, что внизу экрана дается имя файла и количество строк и символов в файле. Затем shell выдает вам подсказку.
Вы также можете использовать команды :w и :q редактора vi для записи файла и окончания работы с редактором. Команды редактора начинаются с двоеточия (:) и появляются в последней строке экрана (расширенный режим работы редактора). Команда :w записывает буфер в файл. Команда :q завершает работу редактора и возвращает управление shell. Вы можете ввести эти команды раздельно или в одной команде :wq.
В табл. П.3.1 приведены основные команды, которые вам необходимы для вызова и использования редактора vi.
Таблица П.3.1
Основные команды vi
Команды |
Выполняемые функции |
a |
Добавить текст после курсора |
h |
Перемещает курсор на один символ влево |
j |
Перемещает курсор вниз на одну строку |
k |
Перемещает курсор вверх на одну строку |
l |
Перемещает курсор на один символ вправо |
x |
Удалить символ |
<CR> |
Возврат каретки |
<ESC> |
Перейти из режима ввода в командный режим |
:w |
Записать в файл |
:q |
Завершить работу с редактором |
:wq |
Записать буфер в файл и завершить работу с редактором vi |
ZZ |
Записать изменения в файл и завершить работу с vi |
Ранее вы познакомились с тем, как перемещать курсор с помощью клавишей <h>, <j>, <k>, <l>, <BACKSPACE> и <SPACEBAR>. В этом подразделе приводятся еще несколько команд, которые помогут вам быстро перемещать курсор по экрану. Эти команды выполняются в командном режиме.
Существуют три способа позиционирования курсора в строке:
Переместить курсор на первый или последний символ в строке можно следующим образом:
Третий способ позиционирования курсора в строке это поиск указанного символа на текущей строке. Если символ не найден на текущей строке, то появляется звуковой сигнал и курсор остается на прежнем месте. Существуют команды, которые проводят поиск по шаблону. Они будут описаны далее. Здесь приведем 6 команд для поиска внутри строки: f, F, t, T, :(двоеточие) и ,(запятая). После f, F, t и T вы можете указать символ:
fx осуществляет поиск указанного символа x справа от текущей позиции курсора;
Fx осуществляет поиск указанного символа x слева от текущей позиции курсора;
tx осуществляет перемещение курсора вправо на символ до указанного символа x;
Tx осуществляет перемещение курсора влево на символ до указанного символа x;
; повторяет предыдущий поиск символа. Команда ; запоминает символ и ищет следующее появление символа в текущей строке;
, повторяет предыдущий поиск символа, но в обратном направлении.
Команда ; запоминает символ и ищет следующее появление символа в текущей строке.
Редактор vi предполагает, что слово это строка символов, которая может включать в себя буквы, цифры и символы подчеркивания. В редакторе vi существует 6 команд позиционирования: w, b, e, W, B и E. Команды w, b, e рассматривают любой символ, отличный от буквы, цифры или подчеркивания, как разделитель, означающий начало или конец слова. Пунктуация до или после пустого пространства является разделителем слов. Символ начала или конца строки также является разделителем.
Команды W, B, E рассматривают пунктуацию как часть слова. Слова разделяются пустым пространством, которое состоит из символов <пробел>, <табуляция> и <новая строка>.
Команды позиционирования:
w перемещает курсор к началу следующего слова;
nw перемещает курсор к началу nго слова; конец строки не останавливает движение курсора. Он продолжает подсчет слов с начала следующей строки;
W игнорирует все знаки пунктуации и перемещает курсор на следующее после пробела слово;
e перемещает курсор на последний символ в следующем слове;
E перемещает курсор на последний символ в слове. Игнорирует все символы пунктуации за исключением пробела. Слова разделяются пробелами;
b перемещает курсор к первому символу предыдущего слова;
nb перемещает курсор к первому символу nго предыдущего слова;
B используется подобно команде b, за исключением того, что слова разделяются только символами <пробел> и <новая строка>. Она рассматривает все другие символы пунктуации как буквы.
Редактор vi распознает также предложения. В редакторе vi предложение заканчивается знаками !, . или ?. Если эти разделители появляются в середине строки, то за ними должны стоять два пробела, чтобы vi их мог распознать.
Вы можете перемещать курсор от предложения к предложению в файле с помощью команд ( открывающая скобка и ) закрывающая скобка.
( перемещает курсор в начало текущего предложения;
n( перемещает курсор в начало nго предложения выше текущего предложения;
) перемещает курсор в начало следующего предложения;
n) перемещает курсор в начало nго предложения, следующего за текущим предложением.
Параграфы распознаются редактором vi, если они начинаются после пустой строки. Если вы хотите перемещать курсор по параграфам, то при создании текста не забудьте в конце каждого параграфа поставить пустую строку.
{ переместить курсор в начало текущего параграфа, который ограничивается пустой строкой;
n{ переместить курсор в начало nго параграфа, следующего за текущим параграфом;
} переместить курсор в начало следующего параграфа;
n} переместить курсор в начало nго параграфа ниже текущей строки.
Редактор vi предоставляет 3 команды, которые позволяют позиционировать курсор в окне. Эти команды должны быть введены на верхнем регистре:
H переместить курсор к первой строке экрана;
M переместить курсор к средней строке экрана;
L переместить курсор к последней строке экрана.
Четыре команды редактора vi позволяют осуществлять прокрутку текста файла. Команды ^f (<CTRL> + <f>) и ^d (<CTRL> + <d>) проводят прокрутку экрана вперед, а команды ^b (<CTRL>b) и ^u (<CTRL>u) прокрутку экрана назад.
Команда G позиционирует курсор на указанную строку в окне. Если эта строка не находится в текущем экране, то G очищает экран и отображает окно, содержащее эту строку. Если не указана строка, то команда G перемещает курсор на последнюю строку файла:
G переместить курсор на последнюю строку в файле;
nG переместить курсор на строку n.
Каждая строка файла имеет номер, соответствующий ее положению в буфере. Для того чтобы получить номер конкретной строки, переместите курсор на эту строку и введите команду ^g.
Для поиска символов по шаблону вы можете использовать команды /, ?, n и N. Эти команды позволяют осуществлять поиск вперед и назад в буфере следующего появления указанного шаблона символов. Команды n и N позволяют вам повторить последний поиск.
Команда / и следующий за ней шаблон (/pattern) ведет поиск вперед по буферу следующего появления символов, указанных в шаблоне, и помещает курсор на первый символ из шаблона. Например, командная строка
/Hello world<CR>
находит первое появление в буфере слов Hello world и помещает курсор под буквой H.
Команда ? и следующий за ней шаблон (?pattern) ведет поиск в обратном направлении в буфере первого появления символов, указанных в шаблоне, и помещает курсор на первый из этих символов. Например, командная строка
?data set design<CR>
находит предыдущее появление в буфере слов data set design и помещает курсор под буквой d в слове data.
Эти команды поиска не выполняют циклический возврат в случае окончания строки во время поиска двух или более слов. Например, если вам надо найти появление Hello world и окажется, что слово Hello находится в конце одной строки, а слово world первое слово последующей строки, то эти команды не найдут Hello world.
В то же время эти команды поиска выполняют циклический возврат в конце или начале буфера для продолжения поиска. Например, если вы находитесь почти в конце буфера, а символы, которые соответствуют шаблону, в начале буфера, то команда поиска / найдет шаблон.
Команды n и N позволяют повторить предыдущий запрос поиска /pattern или ?pattern:
n повторить последнюю команду поиска;
N повторить последнюю команду поиска в обратном направлении.
Команды / и ? не дают вам возможности указать конкретное появление шаблона с помощью числа, то есть вы не можете, например, запросить поиск третьего появления шаблона, начиная с текущей позиции.
Три основные команды позволяют в редакторе vi создавать текст:
a добавить текст;
i вставить текст;
o открыть новую строку, на которой может быть введен текст.
После того как вы создали текст с помощью одной из этих команд, можете возвратиться в командный режим редактора vi, нажав клавишу <ESCAPE>.
Для того чтобы в файл добавить текст, воспользуйтесь следующими командами:
a добавить текст после курсора;
A добавить текст в конце текущей строки.
Для того чтобы в файл вставить текст, воспользуйтесь следующими командами:
i вставить текст до курсора;
I вставить текст в начале текущей строки до первого ненулевого символа.
Для возврата в командный режим нажмите клавишу <ESCAPE>.
Для открытия строки для текста воспользуйтесь следующими командами:
o создать текст с начала новой строки, расположенной ниже текущей строки. Вы можете ввести эту команду в любом месте текущей строки;
O создать текст с начала новой строки, расположенной выше текущей строки. Вы можете ввести эту команду в любом месте текущей строки.
Команды открытия создают строку непосредственно выше или ниже текущей строки и переводят вас в режим ввода текста. Курсор располагается в начале новой строки и ожидает от вас ввода текста.
Вы можете удалить текст с помощью нескольких команд в командном режиме и небольшой объем в режиме ввода.
Если вы находитесь в режиме ввода текста редактора vi и хотите удалить символ, воспользуйтесь клавишей <BACKSPACE>: <BACKSPACE> удалить текущий символ (слева от курсора).
Клавиша <BACKSPACE> перемещает курсор назад в режиме ввода текста и удаляет каждый символ, который курсор переходит. Однако удаленный символ не стирается с экрана, пока вы не нажмете клавишу <ESCAPE> для возврата в командный режим.
Удалить текст вы можете и с помощью следующих ключей:
^w отменить ввод текущего слова;
@ удалить на текущей строке весь введенный во время данного режима ввода текст;
^v удалить специальное значение, если оно есть, следующих вводимых символов.
Когда вы вводите ^w, курсор возвращается на последнее введенное слово и ожидает на первом символе этого слова. Он не стирает слово с экрана до тех пор, пока вы не нажмете клавишу <ESCAPE> или не введете новые символы на месте этого слова.
Отменить последнюю введенную команду можно с помощью следующих команд:
u отменить последнюю команду;
U восстановить текущую строку в состояние до произведенных изменений.
Если вы случайно удалили строки, то для отмены команды удаления введите команду u. Удаленные строки вновь появятся на экране. Если вы ввели неправильно команду, то введите команду u, и неверная команда будет отменена. Команда U будет аннулировать все изменения в текущей строке до тех пор, пока курсор будет находиться на этой строке.
Если вы введете команду u дважды, то вторая команда отменит первую. Например, если вы удалили по ошибке строку и восстановили ее с помощью команды u, то, нажав второй раз u, вы вновь удалите строку. Знание этих команд может спасти вас от многих неприятностей.
Все команды удаления, выдаваемые в командном режиме, сразу же удаляют указанный текст с экрана и оставшуюся часть отображают на экране в обновленном виде.
Команда удаления имеет следующий формат:
[число]dтекст
где d команда удаления;
текст объект удаления.
Вы можете удалить слово или часть слова с помощью команды d. Переместите курсор к первому удаляемому символу и введите команду dw. Символ, расположенный над курсором, и последующие за ним будут стерты. Команда dw удаляет одно слово или знак пунктуации и пробелы, которые следуют за ним. Вы можете удалить несколько слов или знаков пунктуации за один раз, если укажете перед командой соответствующее число. Например, для того чтобы удалить 3 слова и две запятые, введите команду 5dw.
Для того чтобы удалить параграф, воспользуйтесь командой
d{ или d}
Помните, что вы можете восстановить удаленный текст с помощью команды u.
Для того чтобы удалить строку, введите
dd
Для удаления нескольких строк укажите перед командой количество удаляемых строк. Например, команда
10dd
сотрет 10 строк.
Если вы удаляете несколько строк, то vi отображает в нижней части экрана сообщение типа
10 lines deleted
Если ниже текущей строки осталось меньше 10 строк, то прозвучит сигнал и строки не удалятся.
Для удаления всего текста на строке, расположенного после курсора, поместите курсор на первый удаляемый символ и введите
D или d$
Эта команда удаляет текст только на текущей строке.
Один из способов модификации текста представляют команды удаления и команды ввода текста. Другой способ, с помощью которого вы можете изменить текст, это задать команду, позволяющую одновременно удалять и создавать текст. В редакторе vi существуют 3 основные команды изменения текста: r, s и c.
rx заменить текущий символ (символ, на который показывает курсор) на x. Эта команда не устанавливает режим ввода текста и, следовательно, нет необходимости нажимать после нее клавишу <ESCAPE>.
nrx заменить n символов на <x>. После этой команды также не надо нажимать клавишу <ESCAPE>.
R заменяет только те символы, которые введены в режиме ESCAPE. Если будет достигнут конец строки, то эта команда добавит ввод как новый текст.
Например, вы хотите заменить слово acts на ants в следующем предложении:
The circus has many acts.
Поместите курсор под буквой c в слове acts и введите команду
rn
Предложение будет иметь вид
The circus has many ants.
Для того чтобы заменить слово many на 7777, поместите курсор под буквой m в слове many и введите команду
4r7
Команда r заменит слово many на четыре цифры 7:
The circus has 7777 ants.
Команда подстановки текста заменяет символы, но затем позволяет вам продолжать ввод текста с того места, где вы нажали клавишу <ESCAPE>.
s удалить символ, на который указывает курсор и добавить текст. После окончания ввода текста нажмите клавишу <ESCAPE>;
ns удалить n символов и добавить текст. После окончания ввода текста нажмите клавишу <ESCAPE>;
S заменить все символы в строке.
Когда вы вводите команду s, последний символ в строке символов, который будет заменен, переписывается со знаком $. Символ не стирается с экрана, пока вы не введете на его место новый символ или не нажмете клавишу <ESCAPE>.
Команда подстановки заменяет символы. Команда изменения заменяет объект текста и затем продолжает добавлять текст с этого места до тех пор, пока вы не нажмете клавишу <ESCAPE>.
Команда изменения может содержать аргумент text_object. Вы можете заменить символ, слово на новый текст:
ncx заменить n-ый объект текста типа x (предложение, параграф);
cw заменить слово или оставшиеся символы в слове на новый текст. Редактор vi печатает знак $, чтобы показать последний символ, который будет заменен;
ncw заменить n слов;
cc заменить все символы в строке;
ncc заменить все символы в текущей строке и n верхних строк;
C заменить оставшиеся символы в строке от курсора до конца строки; dfn nC заменить оставшиеся символы, начиная от курсора в текущей строке и во всех n верхних строках.
Команда c использует знак $, чтобы отметить последний символ, который должен быть замещен. После того как выполнилась команда изменения, вы находитесь в режиме ввода текста и можете вводить любой текст. Текст будет храниться в буфере, пока вы не нажмете клавишу <ESCAPE>.
Редактор vi предоставляет набор команд, которые разбивают текст в файл и набор команд, которые копируют часть текста и помещают в другое место в файле.
Вы можете переместить текст из одного места в буфере редактора vi в другое, удалив строки, а затем поместив их в требуемое место. Удаленный текст сохраняется во временном буфере. Переместите курсор на то место, куда вы хотите поместить текст и нажмите клавишу <p>. Удаленные строки будут добавлены ниже текущей строки.
p поместить содержимое временного буфера после курсора или ниже текущей строки.
Удаленная с помощью команды удаления строка может быть помещена в середине другой строки. Установите курсор между двумя словами, затем нажмите клавишу <p>. Удаленная строка будет помещена после курсора.
Так как временный буфер сохраняет результат только последней команды, то команда p должна использоваться сразу же после команды удаления. Команда p используется также для копирования текста, помещенного во временный буфер командой y.
Вы можете копировать одну или несколько строк текста во временный буфер и затем поместить копию этого текста в определенное место в файле. Для того чтобы поместить текст на новое место, введите команду y. Команда y имеет следующий общий формат:
[число]y[текст]
Копирование строк с помощью команды y не удаляет их с прежнего места в файле, т.е. вы можете поместить один и тот же кусок текста в нескольких местах.
В табл. П.3.2 приведены способы использования команды y.
Таблица П.3.2
Команда y
Команда |
Функция |
nyx |
Копирование nго объекта текста типа x (предложение или параграф) |
yw |
Создание копии слова |
yy |
Создание копии текущей строки |
nyy |
Копирование n строк |
y) |
Создание копии всего текста до конца предложения |
y} |
Создание копии всего текста до конца параграфа |
Обратите внимание, что эта команда позволяет указывать номер объекта текста, который будет копироваться.
Перемещение и копирование нескольких разделов текста в различные части файла является утомительной работой. Редактор vi предлагает вам использовать так называемые регистры, в которых вы можете хранить текст до тех пор, пока он вам не понадобится. Сохранить текст вы можете либо с помощью команды y, либо с помощью команды удаления. Использование регистров особенно полезно, если часть текста должна появиться во многих местах в файле. Извлекаемый текст остается в указанном регистре, пока вы не завершите работу с ним, поэтому либо заканчивайте работу с редактором, либо поместите в этот регистр другой текст.
Общий формат команды:
[число]["X]команда[текст]
Здесь:
X имя регистра, состоящее из одной буквы верхнего регистра. Имени регистра должны предшествовать двойные кавычки.
В табл. П.3.3 приведены команды извлечения и присоединения текста.
Таблица П.3.3
Команды извлечения и присоединения текста
Команда |
Функция |
p |
Помещает содержимое временного буфера, полученное с помощью команды y и команд удаления, в текст после курсора |
yy |
Создает копию строки текста и помещает во временный буфер |
nyx |
Создает копию nго объекта текста типа x и помещает ее во временный буфер |
"xyn |
Помещает копию объекта текста типа n в регистр с именем x |
"xp |
Помещает содержимое регистра x после курсора |
Команды расширенного режима начинаются с символа ":" (двоеточие). После того как вы введете двоеточие, курсор опускается в самый низ экрана и отображает двоеточие. Оставшаяся часть команды тоже появляется внизу экрана.
Когда вы входите в vi, то содержимое буфера заполняет ваш экран, делая невозможным выдачу команд для shell. Однако вам может это понадобиться. Например, вам необходимо будет получить информацию из другого файла для присоединения ее к текущему тексту. Вы можете получить эту информацию, запустив одну из команд shell, которая отображает текст файла на экране. Например, cat или ps. Однако процедура завершения работы с редактором и повторный вход в редактор потребуют времени и сил. Редактор vi предлагает вам два способа временного выхода из редактора для того, Для того чтобы вы могли ввести команды shell (и даже редактировать другие файлы), не покидая сам редактор. Это команды :sh и :!.
Команда :! позволяет вам выйти из редактора и запустить команду shell одной командной строкой. Находясь в командном режиме редактора vi, введите :!. Эти символы будут напечатаны внизу экрана. Сразу же после символа ! введите команду shell. Shell запустит вашу команду, даст вам ответ и напечатает сообщение:
Hit return to continue
После того как вы нажмете клавишу <RETURN>, vi обновит экран и курсор примет свое прежнее положение.
Команда редактора :sh позволяет вам делать то же самое, но ведет себя по другому на экране. Из командного режима редактора vi введите :sh и нажмите клавишу <RETURN>. Подсказка команды shell появится на следующей строке. Ведите ваши команды после подсказки так, будто бы вы работаете в нормальном режиме с shell. Когда вы будете готовы вернуться к редактору vi, введите ^d или exit. Экран обновит информация из вашего буфера, и курсор вновь переместится на прежнее место.
При временном переходе к shell даже изменение справочников не мешает возврату к буферу редактора vi при вводе ^d или exit.
Команда w позволяет вам создавать файл, копируя строки текста из файла, который вы в данный момент редактируете, в файл, который вы указали. Для того чтобы создать новый файл, нужно указать строку или строки (номера строк) и имя нового файла в командной строке. Общий формат этой команды:
:line_number[, line_number]w filename
Например, для того чтобы записать третью строку буфера в файл three, введите
:3w three<CR>
При успешном создании нового файла, редактор vi напечатает следующую информацию:
"three" [New file] 1 line, 20 characters
Для того чтобы записать текущую строку в файл, укажите . (точку) как адрес строки:
:.w junk<CR>
Создастся новый файл с именем junk. Он будет содержать только текущую строку буфера vi.
Вы можете записать часть буфера в новый файл, обозначив границы строк. Например, для того чтобы строки с 23-й по 37-ю записать в файл, введите следующую команду:
:23,37w newfile<CR>
Для того чтобы добавить текст из файла ниже указанной строки в буфер редактора, воспользуйтесь командой r. Например, для того чтобы перенести содержимое файла data в ваш текущий файл, поместите курсор на то место, где должен стоять текст и введите команду
:r data<CR>
Вместо перемещения курсора вы можете указать номер строки. Например, Для того чтобы вставить файл data после 56й строки в буфере, введите:
:56r data<CR>
:g/образец/command<CR> для каждой строки, содержащей pattern, выполнить команду command редактора. Построчный редактор напечатает все строки, сождержащие образец;
:s/образец /новый_текст<CR> это команда замены. Построчный редактор отыскивает первое появление символов «образец» в текущей строке и заменяет его на «новый_текст»;
:s/образец /новый_текст/g<CR> редактор заменяет каждое появление символов «образец» в текущей строке.
ПРИЛОЖЕНИЕ 4
Команда cat часто используется для создания файлов (хотя можно воспользоваться и командой touch). По команде cat на стандартный вывод (т. е. на экран) выводится содержимое указанного файла (или нескольких файлов, если их имена последовательно задать в качестве аргументов команды). Если вывод команды cat перенаправить в файл, то можно получить копию какогото файла:
[user]$ cat file1 > file2
Собственно, первоначальное предназначение команды cat как раз и предполагало перенаправление вывода, так как эта команда создана для конкатенации, т.е. объединения нескольких файлов в один:
[user]$ cat file1 file2 ... fileN > newfile
Именно возможности перенаправления ввода и вывода этой команды и используются для создания новых файлов. Для этого на вход команды cat направляют данные со стандартного ввода (т. е. с клавиатуры), а вывод команды направляется в новый файл:
[user]$ cat > newfile
После того как вы напечатаете все, что хотите, нажмите комбинацию клавиш <Ctrl>+<D> или <Ctrl>+<C>, и все, что вы ввели, будет записано в newfile. Конечно, таким образом создаются в основном короткие текстовые файлы.
Хотя для копирования файлов иногда пользуются командой cat, но в Linux существует для этого специальная команда cp. Ее можно применять в одной из двух форм:
[user]$ cp [options] source destination
[user]$ cp [options] source_directory new_directory
В первом случае файл или каталог source копируется соответственно в файл или каталог destination, а во втором случае файлы, содержащиеся в каталоге source_directory, копируются в каталог new_directory. Для копирования надо иметь права на чтение файлов, которые копируются, и права на запись в каталог, в который производится копирование.
Если в качестве целевого указывается существующий файл, то его содержимое будет затерто, поэтому при копировании надо соблюдать осторожность. Впрочем, можно использовать команду cp с опцией i, тогда перед перезаписью существующего файла будет запрашиваться подтверждение.
У команды cp имеется еще несколько полезных опций (табл. П.4.1).
Таблица П.4.1
Основные опции команды cp
Опция |
Значение |
-p |
Сохраняет время модификации файла и максимально возможные полномочия. Без этой опции для нового файла задаются полномочия, соответствующие полномочиям запустившего команду пользователя |
-R или -r |
Если source каталог, то копируется как он, так и все входящие в него подкаталоги, т. е. сохраняется исходная форма дерева каталогов |
Окончание табл. П.4.1
Опция |
Значение |
-d |
Если задать эту опцию, то символические ссылки будут оставаться ссылками (иначе вместо ссылки копируется файл, на который дается ссылка) |
-f |
Перезаписать файлы при копировании (если такие уже есть) без дополнительных предупреждений |
Если вам необходимо не скопировать, а переместить файл из одного каталога в другой, вы можете воспользоваться командой mv. Синтаксис этой команды аналогичен синтаксису команды cp. Более того, она сначала копирует файл (или каталог), а только потом удаляет исходный файл (каталог). И опции у нее такие же, как у cp.
Команда mv может использоваться не только для перемещения, но и для переименования файлов и каталогов (т. е. перемещения их внутри одного каталога). Для этого надо просто задать в качестве аргументов старое и новое имя файла:
[user]$ mv oldname newname
Но учтите, что команда mv не позволяет переименовать сразу несколько файлов (используя шаблон имени), так что команда mv *.xxx *.yyy не будет работать.
При использовании команды mv, также как и при использовании cp, не забывайте применять опцию i для того, чтобы получить предупреждение, когда файл будет перезаписываться.
Для удаления ненужных файлов и каталогов в Linux служат команды rm (удаляет файлы) и rmdir (удаляет пустой каталог). Для того чтобы воспользоваться этими командами, вы должны иметь право записи в каталоге, в котором расположены удаляемые файлы или каталоги. При этом полномочия на изменение самих файлов не обязательны. Если хотите перед удалением файла получить дополнительный запрос на подтверждение операции, используйте опцию i.
Если вы попытаетесь использовать команду rm (безо всяких опций) для удаления каталога, то будет выдано сообщение, что это каталог, и удаления не произойдет. Для удаления каталога надо удалить в нем все файлы, после чего удалить сам каталог с помощью команды rmdir. Однако можно удалить и не пустой каталог со всеми входящими в него подкаталогами и файлами, если использовать команду rm с опцией -r.
Если вы дадите команду rm *, то удалите все файлы в текущем каталоге. Подкаталоги при этом не удалятся. Для удаления как файлов, так и подкаталогов текущего каталога надо также воспользоваться опцией -r. Однако всегда помните, что в Linux нет команды восстановления файлов после их удаления (даже если вы спохватились сразу же после ошибочного удаления файла или каталога)!
Так что дважды подумайте перед тем, как удалить что-либо, и не пренебрегайте опцией -i.
Команда cat позволяет вывести на стандартный вывод (на экран) содержимое любого файла, однако она используется для этих целей очень редко, разве что для вывода очень небольших по объему файлов. Дело в том, что содержимое большого файла мгновенно «проскакивает» на экране, и пользователь видит только последние строки файла. Поэтому cat используется в основном по ее прямому назначению для конкатенации файлов, а для просмотра содержимого файлов (конечно, текстовых) используются команды more и less (или текстовые редакторы).
Командафильтр more выводит содержимое файла на экран отдельными страницами, размером как раз в целый экран. Для того чтобы увидеть следующую страницу, надо нажать на клавишу пробела. Нажатие на клавишу <Enter> приводит к смещению на одну строку. Кроме клавиш пробела и <Enter>, в режиме паузы еще некоторые клавиши действуют как управляющие (например, клавиша <B> возвращает вас на один экран назад), но мы здесь не будем приводить полного их перечня, как и перечня опций команды. Вам для начала надо только запомнить, что выйти из режима просмотра можно с помощью клавиши <Q>, т.к. если вы этого не знаете, то вам придется долго нажимать клавишу пробел, пока не доберетесь до конца длинного файла. Обо всех опциях команды more вы можете прочитать в интерактивном руководстве man или info.
Утилита less, разработанная в рамках проекта GNU, содержит все функции и команды управления выводом, имеющиеся в программе more, и некоторые дополнительные, например, позволяет использовать клавиши управления курсором (<Стрелка вверх>, <Стрелка вниз>, <PgUp>, <PgDown>) для перемещения по тексту. Вспомните, мы уже говорили об этом, когда рассматривали интерактивную подсказку man.
Команды more и less позволяют производить поиск подстроки в просматриваемом файле, причем команда less позволяет производить поиск, как в прямом, так и в обратном направлении. Для организации поиска строки символов string надо набрать в командной строке программы в нижней части экрана (там, где двоеточие) /string. Если искомая строка будет найдена, будет отображен соответствующий кусок текста, причем найденная строка будет находиться в самом верху экрана.
Еще одной часто используемой командой для работы с файлами в Linux является команда поиска нужного файла find. Команда find может искать файлы по имени, размеру, дате создания или модификации и некоторым другим критериям.
Общий синтаксис команды find имеет следующий вид:
find [список_каталогов] критерий_поиска
Параметр «список_каталогов» определяет, где искать нужный файл. Проще всего задать в качестве начального каталога поиска корневой каталог /, однако в таком случае поиск может затянуться очень надолго, так как будет просматриваться вся структура каталогов, включая смонтированные файловые системы (в том числе сетевые, если таковые есть). Можно сократить объем поиска, если задать вместо одного корневого каталога список из нескольких каталогов (естественно, тех, в которых может находиться искомый файл):
[user]$ find /usr/share/doc /usr/doc /usr/locale/doc name instr.txt
Началом «критерия_поиска», определяющего, что именно должна искать программа find, считается первый аргумент, начинающийся на «-», «(», «)», «,» или «!». Все аргументы, предшествующие «критерию_поиска», трактуются как имена каталогов, в которых надо производить поиск. Если не указано ни одного пути, поиск производится только в текущем каталоге и его подкаталогах.
Шаблоны имен файлов строятся с помощью специальных символов «*» и «?». Значок «*» используется для замены произвольной строки символов. В Linux:
Значок «?» заменяет один произвольный символ, поэтому index?.htm будет соответствовать именам index0.htm, index5.htm и indexa.htm.
Кроме «*» и «?» в Linux при задании шаблонов имен можно использовать квадратные скобки [], в которых дается либо список возможных символов, либо интервал, в который должны попадать возможные символы. Например, [abc]* соответствует всем именам файлов, начинающимся с a, b, c; *[IN13] соответствует файлам, имена которых оканчиваются на I, J, K, L, M, N, 1, 2, 3.
Вернемся к команде find и рассмотрим подробнее, какие критерии поиска возможны. Несколько примеров простых критериев поиска приведено в табл. П.4.2.
Таблица П.4.2
Критерии поиска для команды find
Опция |
Значение |
-name шаблон |
Ищет файлы, имена которых соответствуют шаблону |
-group имя |
Ищет файлы, принадлежащие указанной группе |
-size число[c] |
Ищет файлы, размером в число 512байтных блоков. Если после числа стоит символ c, значит размер указан в байтах (символах) |
Окончание табл. П.4.2
Опция |
Значение |
-mtime число |
Ищет файлы, которые в последний раз изменялись указанное число дней назад |
-newer образец |
Ищет файлы, которые изменялись после изменения файла, указанного в образце |
-type тип_файла |
Ищет файлы указанного типа. Тип задается одним из символов b (блокориентированные устройства), c (байториентированные устройства), d (файл каталога), f (обычный файл), p (именованный канал) либо l (символическая ссылка) |
Другие простые критерии вы можете узнать, если просмотрите manстраницу о команде find. Здесь же надо только сказать, что из простых критериев можно строить более сложные с помощью логических операций and, or или операции отрицания, знаком которой служит восклицательный знак. Например, если вы хотите найти все файлы, имена которых оканчиваются на .txt и .doc, то критерий можно записать как (-name *.txt -or -name *.doc). Можно комбинировать таким образом любое число критериев (и не только простых!). Если операция не указана явно, то подразумевается and, т. е. вместо (-name *.txt -and -name *.doc) можно записать просто (-name *.txt -name *.doc). Если применяется только одна операция and или !, то скобки обычно можно опустить, а с операцией or и в сложных выражениях скобки необходимы. Перед скобкой нужно поставить обратную косую черту, а после скобки пробел. Например, если вы хотите найти каталог по его имени, то можно сделать это командой
[user]$ find /usr -name doc -type d
или (с соблюдением правил построения сложных критериев)
[user]$ find /usr \( -name doc -and -type d \)
В следующем примере мы ищем файлы по такому критерию: либо имя файла оканчивается на *.tmp, либо размер файла больше 100 Кбайт:
[user]$ find /home/kos \( \( -name *.tmp \) -or \( -size +200 \) \)
В последнем примере стоит обратить внимание на то, что перед значением размера стоит знак «+». Такой знак можно использовать с любым числовым параметром в критериях поиска команды find. Он означает, что нужно искать файлы, у которых значение параметра больше заданного. Соответственно, знак «-» показывает, что надо искать файлы, у которых значение параметра меньше заданного. Если знаки «+» или «-» отсутствуют, ищутся файлы, у которых значение параметра равно заданному.
В заключение надо сказать еще о том, что после критерия поиска в команде find можно сразу же задать операцию, которая будет применяться ко всем файлам, найденным по указанному критерию. Простейшим примером использования такой возможности является указание команды print:
[user]$ find /home/kos -name *.tmp -print
по которой выдается на экран список имен всех найденных файлов с указанием полного пути к файлу. Эта операция применяется по умолчанию, т. е. когда никаких операций вообще не указано (как это было во всех приведенных выше примерах). Другим примером операции, применяемой ко всем найденным файлам, может служить операция exec cmd {} \;, где cmd произвольная команда оболочки shell. То есть в этом случае ко всем найденным файлам (их именами заменяются поочередно фигурные скобки) применяется команда cmd. За cmd {} должна следовать точка с запятой, экранированная обратной косой чертой.
Например, если вы хотите удалить в текущем каталоге все файлы, к которым пользователи не обращались в течение 30 дней, дайте команду
[root]# find . -type f -atime +30 -exec rm {} \;
Вместо -exec можно поставить -ok, тогда перед выполнением указанной команды cmd применительно к каждому файлу будет запрашиваться подтверждение.
В общем, команда find является мощным, полезным и чрезвычайно адаптируемым инструментом поиска в файловой системе. Все ее возможности здесь не перечислены, для их изучения обращайтесь к соответствующей man-странице. Будьте очень осторожны с применением таких возможностей команды, как вызов других команд, применяемых ко всем найденным файлам. Помните, что изменения часто необратимы!
Иногда бывает необходимо разбить один большой файл на несколько файлов меньшего объема. Для примера рассмотрим ситуацию, когда вы хотите перенести на свой домашний компьютер файл song.mp3 формата MP3, размером в 4,894,425 байт. Возможности перекачать этот файл по сети у вас нет, и единственно возможный способ переноса воспользоваться дискетами. Но поскольку на одну дискету файл не помещается, требуется разбить его на несколько маленьких файлов, а потом собрать снова. Для решения этой задачи можно воспользоваться командой split.
Команда split копирует файл, разбивая его на отдельные файлы заданной длины. В качестве аргументов ей надо указать имя исходного файла и префикс имен выходных файлов. Имена выходных файлов будут составляться из этого префикса и двух дополнительных букв «aa», «ab», «ac» и т. д. (без пробелов и точек между префиксом и буквами). Если префикс имен файлов не задан, то по умолчанию используется «x», так что выходные файлы будут называться «xaa», «xab» и т. д.
Кроме аргументов можно задать опцию -b, определяющую размер выходных файлов в байтах. Вслед за -b должно стоять число, а за ним буква k (показывающая, что размер выходного файла указан в килобайтах) или m (значит размер задан в мегабайтах). Если опция не задана, то по умолчанию размер выходных файлов принимается равным 1 Мбайту. Таким образом, для того чтобы перенести на дискетах файл song.mp3, надо вначале дать команду
[user]$ split b1400k song.mp3 song
скопировать полученные файлы song.aa, song.ab, song.ac, song.ad, song.ae на отдельные дискеты, перенести их на домашний компьютер, скопировать в какойнибудь каталог и восстановить исходный файл с помощью команды
[user]$ cat song.* > song.mp3
после чего можно удалить временные файлы song.xx.
Вы не замечали, что задача сравнения содержимого двух различных файлов возникает при работе с компьютером на удивление часто? Конечно, ведь так легко скопировать файл, а потом забываешь, какая же из версий новее или качественнее (по одному автору ведомым критериям). Так что инструменты для сравнения файлов просто необходимы, и Linux такие инструменты предоставляет.
Простейший из них команда cmp. Эта команда просто сравнивает содержимое двух файлов побайтно:
[user]$ cmp file1 file2
Если файлы полностью совпадают, она молча заканчивает свою работу (происходит возврат к командной строке без какихлибо дополнительных сообщений), а если файлы различаются, выдаются номер строки и номер байта в строке, где имеет место первое различие.
Конечно, информации, выдаваемой командой cmp, часто бывает недостаточно, чтобы принять, например, решение о том, какой из двух файлов нам более ценен. Поэтому стоит воспользоваться командой diff для получения полного отчета о том, каковы же различия в интересующих нас файлах. Для получения отчета достаточно указать команде, какие именно файлы сравнивать:
[user]$ diff paper.old paper.new
Отчет о выявленных различиях будет выдан на стандартный выход. Естественно, его лучше перенаправить в файл:
[user]$ diff paper.old paper.new >paper.diff
Для оценки версий одного и того же файла более удобной может оказаться команда sdiff, которая выдает результат сравнения в виде двух столбцов, разделенных пробелами. Если строки с одинаковыми номерами в файлах различаются, то в выводе команды sdiff они разделены вертикальной чертой |. Если строка имеется только в первом файле, она отмечена знаком <. Соответственно строка, встречающаяся только во втором файле, помечена знаком >.
Существует также команда diff3, которая позволяет сравнить сразу 3 файла.
Но все же наиболее часто используется традиционная для UNIXсистем команда diff. Эта ее востребованность объясняется тем, что создаваемый ею отчет о различиях двух файлов может быть использован командой patch. Чаще всего эти возможности используются при распространении обновлений программного обеспечения. Предположим, что некоторое программное приложение было разослано пользователям в виде файла program.c, содержащего исходный код программы на языке Си. После этого разработчик внес в программу некоторые исправления и сохранил текст в виде файла program.c.new. Требуется довести исправленный текст программы до пользователей. Очевидно, что пользователям достаточно сообщить только исправления, т. е. отчет об изменениях, создаваемый по команде
[user]$ diff program.c program.c.new > program.c.diff
Естественно, объем файла program.c.diff существенно меньше объема файла program.c.new, так что можно было бы получить существенную экономию на передаче файлов, если отправлять пользователям только файл program.c.diff (ведь объемы современных программных приложений составляют десятки мегабайт). Однако пользователи должны иметь возможность внести эти исправления в имеющуюся у них версию программы. Эту задачу позволяет решить команда patch. Имея файлы program.c и program.c.diff, пользователь может дать команду
[user]$ patch program.c program.c.diff > program.c.new
в результате выполнения которой он получит файл program.c.new.
Сортировка текстовых файлов
Утилита sort упорядочивает записи файла в алфавитноцифровом порядке.
Пример:
$ sort имяфайла
Bill Williams 100
Henry Morgan 112
Mary Clark 101
$
Записи отсортированы по первой букве имени. Однако можно выполнить сортировку и по фамилиям:
$ sort +1 имяфайла
Mary Clark 102
Henry Morgan 112
Bill Williams 100
$
Ключ +1 означает, что одно поле с начала записи было игнорировано при сортировке.
Сортировка по третьему полю с игнорированием лидирующих пробелов выполняется с использованием ключа -b (blank): $ sort -b +2 people
Пример результата выполнения:
Bill Williams 100
Mary Clark 101
Henry Morgan 112
$
Для сохранения результата сортировки в файле используется ключ -o (output):
sort -o sortpeople +1 people
Для слияния уже отсортированных файлов используется ключ -m.
Пример:
$ sort +1 имяфайла1> sort1
$ sort +1 имяфайла2> sort2
$ sort +1 имяфайла3> sort3
$ sort m +1 sort1, sort2, sort3 > sortall
$
Имеется возможность удаления дублированных записей при использовании ключа -u (uniq), а также сортировки по нескольким несмежным полям.
Подсчет строк, слов, знаков в файле
Подсчет числа строк, слов и знаков в заданном файле выполняется командой wc.
Например:
$ wc people
3 9 51 people
$
Ключи -l (lines), -w (words), -c (character) могут указать явно объекты счета.
Например:
$ wc l people
3 people
$ wc lc people
10 51 people
$
Утилита grep осуществляет поиск по одному или нескольким файлам и печатает все строки, содержащие предъявленный образец текста, на стандартном выводе.
В простейшем случае образец задается постоянной строкой знаков. В общем же случае он задается регулярным выражением (grep акроним от global regular expression printer).
Пример:
$ grep Henry имяфайла1 имяфайла2 имяфайла3
Softpeople: Henry Morgan 112
$
Ключ -v (invert) предписывает печать всех строк, кроме найденных, например:
$ grep v "Henry Morgan" имяфайла
Bill Williams 100
Mary Clark 101
$
Двойные кавычки требуются для размещения в образце пробелов.
Регулярные выражения позволяют вести поиск типа: найти все слова из четырех букв, начинающиеся на d, или все слова, кончающиеся на able, и тому подобное. Рассмотрим примеры задания образцов посредством регулярных выражений.
Знаки ^ и $ помечают начало и конец строки соответственно:
«^Genesis» найти все строки, начинающиеся словом Genesis;
«eschatus$» найти все строки, кончающиеся словом eschatus;
«^Out in cold$» найти все строки, равные образцу.
Точка помечает любую букву:
«d...» найти все слова из четырех букв, начинающиеся с d;
«d...$» то же в конце строки;
«d..\ .» найти все слова из четырех букв, начинающиеся с d и оканчивающиеся точкой (знак \ обратный слэш отменяет специальное значение следующего символа).
Квадратные скобы задают возможные значения знака:
«^ [abcxyz]» найти все строки, начинающиеся с букв a, b, c, x, y или z; «[^Dd][az][az][az]» найти все слова из четырех букв, не начинающиеся с D или d, в которых последние три буквы малые (от a до z).
Фигурные скобки задают количество повторений (замыкание) предыдущего знака:
«[^Dd][az]{3}» то же самое, что и предыдущий пример;
«[az]{3,5}» найти все слова, содержащие от 3 до 5 малых букв.
Частные случаи замыкания обозначаются специальным образом:
Например:
$ grep ".*" имяфайла просто напечатает все строки файла.
Примеры использования регулярных выражений:
Командный файл (сценарий shell) состоит из отдельных команд; как правило, каждая команда начинается с новой строки. Создавать командный файл можно в тестовом редакторе, например vi.
Существует два способа вызова командного файла на выполнение:
1. $ имя_интерпретатора_команд имя_сценария;
Например:
bash comfile
2. $ chmod 755 имя_сценария (сделать файл имя_сценария выполнимым, т.е. rwxrxrx)
$имя_сценария
Примечание. Если вы не указываете полный путь к файлу, то поиск исполняемого файла осуществляется в каталогах, список которых содержится в переменной PATH.
Значение переменной PATH можно получить с помощью команды
$ echo $PATH
Текущий каталог, как правило, не включен в путь поиска исполняемых файлов; поэтому, если вы создали файл сценария в текущем каталоге, нужно набирать полный путь к нему. Например, так:
~/command
ПРИЛОЖЕНИЕ 5
При работе с Linux вы, может быть, еще не скоро столкнетесь с необходимостью работать с большинством консольных команд, поскольку имеются такие оболочки, как Midnight Commander, или графические оболочки типа KDE. Но с командами архивирования (точнее, разархивирования) вам работать придется обязательно, хотя бы потому, что вы будете часто встречать архивированные файлы в Интернете.
Основным средством архивирования в UNIX (а следовательно, и в Linux) является комплекс из двух программ tar и gzip. Существует возможность использования arj, pkzip, lha, rar и т.д. версии этих программ для Linux общедоступны. Исторически сложилось так, что пользователи Unix чаще применяют именно tar и gzip, и именно в таком формате распространяется большая часть программного обеспечения для Unix.
У тех, кто привык к архиваторам типа arj, которые собирают файлы в единый архив и сразу «сжимают» их, может возникнуть вопрос: «Зачем использовать две программы?» Дело в том, что tar расшифровывается как Tape ARchiver, он не сжимает данные, а лишь объединяет их в единый файл с последовательным доступом для последующей записи на ленту. По умолчанию этот архивный файл создается на ленточном накопителе, точнее, на устройстве /dev/rmt0. Если вы хотите создать архивный файл на диске, то необходимо использовать команду tar с опцией f, после которой указывается имя архивного файла.
У программы tar имеется 8 опций, отличающихся от остальных тем, что при вызове программы должна обязательно задаваться одна из этих опций. Эти опции определяют основные функции программы (табл. П.5.1).
Таблица П.5.1
Основные опции программы tar
Опция |
Значение |
-A, --catenate, --concatenate |
Добавляет файлы в существующий архив |
-c, --create |
Создает новый архив |
-d, -diff, --compare |
Найти различия между архивом и файловой системой |
--delete |
Удалить из архива (не может использоваться с магнитной лентой!) |
-r, --append |
Дописывает файлы в конец архива |
-t, --list |
Выводит список файлов архива |
-u, --update |
Добавляет только файлы, которые новее, чем имеющаяся в архиве копия |
-x, --extract, --get |
Извлечь файлы из архива |
Если вы работаете с файлами архивов на дисках, а не с ленточным устройством, то, очевидно, обязательной будет и опция f. Другие опции не являются обязательными, они служат только для конкретизации задания программе. Например, опция v заставляет программу выводить список обрабатываемых файлов.
Однобуквенные опции программы tar могут перечисляться друг за другом (вы увидите это в приводимых ниже примерах).
Не будем давать здесь описание всех опций команды tar, просто приведем несколько командных строк для выполнения самых необходимых действий с архивами.
Для того чтобы создать один tarархив из нескольких файлов, используется команда:
[user]$ tar -cf имя_архива файл1 файл2 ...,
где опция -c сообщает программе, что необходимо создать (create) архив, а опция f говорит о том, что архив должен создаваться в виде файла (имя которого должно следовать сразу за этой опцией).
В именах файлов, которые сохраняются в архиве, можно использовать шаблоны имен файлов, в том числе просто символызаместители * и ?. Благодаря этому можно очень короткой командой отправить в архив сразу много файлов. Например, для того чтобы создать архив, содержащий все файлы одного из подкаталогов (пусть это будет sub_dir) текущего каталога, достаточно дать команду
[user]$ tar -cvf имя_архива ./sub_dir/*
или даже просто
[user]$ tar -cvf имя_архива sub_dir
По этой команде в архиве будут сохранены не только файлы, расположенные непосредственно в подкаталоге sub_dir, но и рекурсивно все файлы из подкаталогов каталога sub_dir. При этом в архиве сохраняется вся структура подкаталогов каталога sub_dir.
Заметим, что если в только что приведенном примере вместо * поставить *.*, то будут сохранены только те файлы, которые расположены непосредственно в подкаталоге sub_dir, а подкаталоги каталога sub_dir архивированы не будут. Если в том же примере не указать имя подкаталога, то будут архивироваться все файлы (и подкаталоги) текущего каталога. Но если вы дадите команду следующего вида:
[user]$ tar -cvf имя_архива ./.*
то в архиве будут сохранены не только все файлы (и подкаталоги) текущего каталога, но и файлы из родительского каталога.
Для того чтобы распаковать (извлечь) файлы из архива, нужно дать команду
[user]$ tar -xvf имя_архива файлы
Получить список файлов архива можно командой
[user]$ tar -tf имя_архива | less
Программа tar является удобным средством для создания резервных копий файлов. Конечно, существуют специальные утилиты резервного архивирования, но даже если вы о них еще не знаете, то, по меньшей мере, можете сделать следующее:
[user]$ tar -Mcvf /dev/fd0H1440 /каталог
Такая команда создаст на дискетах архив с содержимым каталога, разбивая его на тома. Монтировать дискеты перед запуском команды не нужно, программа просто пишет на устройство потоком (в данном случае на дискету по секторам). При этом никакой файловой системы на дискете не создается. После заполнения дискеты вам будет выдан запрос на смену дискеты. Прежде чем запускать такую команду на выполнение, приготовьте достаточное количество свободных дискет (помните, что tar не сжимает файлы), которые лучше всего соответствующим образом пометить и обязательно пронумеровать. Кроме того, имейте в виду, что вся информация на дискетах будет без предупреждения уничтожена.
Для того чтобы восстановить сохраненные данные, воспользуйтесь командой
[user]$ tar -Mxpvf /dev/fd0H1440
Если вы ошибетесь в порядке вставляемых дискет, программы сообщит вам об этом и попросит заменить том.
В заключение заметим, что всегда можно получить подсказку по использованию программы tar, дав команду
[user]$ tar -help
При этом если вы используете русифицированный дистрибутив Linux, то подсказка будет выдаваться по-русски.
Хотя программа tar создает архивы, она, как было сказано, не сжимает архивы, а просто соединяет отдельные файлы в единый архивный файл. Для сжатия этого файла часто применяют команду gzip. В простейшем случае она вызывается в следующем формате:
[user]$ gzip файл
В командной строке можно указать сразу несколько имен файлов или шаблон имени файла. Но в этом случае каждый из указанных файлов будет заархивирован отдельно (общий архив не создается).
Для того чтобы распаковать архив, используйте команду
[user]$ gzip -d файл_архива
или
[user]$ gunzip файл_архива
Исходные файлы после сжатия удаляются, остается только архивный файл (файлы перемещаются в архив), а при разархивации удаляется архив.
Перечислим кратко другие полезные опции программы gzip (табл. П.5.2).
Таблица П.5.2
Основные опции программы gzip
Опция |
Значение |
-h, --help |
Вызов краткой помощи по использованию программы |
-l, --list |
Выдает имя файла, содержащегося в архиве, его объем и степень сжатия |
-L, --license |
Отображает номер версии и лицензию на программу |
-N, --name |
Сохранять (или восстанавливать) исходное имя и время создания файла |
-n, --noname |
Не сохранять (не восстанавливать) исходное имя и время создания файла |
-q, --quiet |
Подавляет выдачу на экран предупреждающих сообщений |
-r, --recursive |
Рекурсивно обрабатывать подкаталоги (используется в случае. когда задан шаблон имен обрабатываемых файлов) |
Окончание табл. П.5.2
Опция |
Значение |
-S .suf, --suffix .suf |
Добавить суффикс .suf к имени сжатого файла (вместо добавляемого по умолчанию суффикса gz; но учтите, что при разархивации файлов с суффиксами, отличными от gz, программа вас не поймет) |
-t, --test |
Протестировать архивный файл |
-v, --verbose |
Выдача дополнительных сообщений в процессе работы программы |
-V, --version |
Отобразить версию программы |
-f, --fast |
Быстрое сжатие |
-9, --best |
Более высокая степень сжатия |
Поскольку программа gzip не умеет сохранять в одном архиве несколько файлов, то обычно ее применяют для сжатия архивов, созданных программой tar. Более того, среди опций программы tar имеется специальная опция -z, позволяющая сразу после создания архива сжать его с помощью программы gzip. Для выполнения такого сжатия надо использовать команду tar примерно следующим образом:
[user]$ tar -czf имя_архива шаблон_имен_файлов (или имя_каталога)
Только имейте в виду, что в этом случае суффикс .gz не добавляется автоматически к имени создаваемого архива, поэтому лучше сразу задать имя архива с указанием обеих суффиксов: имя.tar.gz.
В последнее время все чаще вместо программы gzip используется архиватор bzip2, который обеспечивает более высокую степень сжатия и работает несколько быстрее.
Работает bzip2 примерно так же, как команда gzip, т. е. замещает каждый файл, имя которого задано в командной строке, сжатой версией, добавляя к имени файла суффикс .bz2.
Сжатый файл имеет те же самые время модификации, права доступа и, по возможности, того же владельца, что и исходный файл, что дает возможность восстановить эти атрибуты при извлечении файлов из архива.
В некоторых случаях сжатый файл может оказаться даже больше по размеру, чем исходный. Это происходит, например, для файлов длиной менее 100 байт, потому что механизм сжатия использует заголовок длиной около 50 байт. Для файлов, представляющих собой случайную последовательность символов (в том числе для выходных файлов большинства файловых архиваторов) длина файла увеличивается примерно на 0,5 %.
Команда bunzip2 (или bzip2 -d) разархивирует указанные в командной строке файлы. Если эти файлы не были созданы программой bzip2, они не будут разархивироваться, будет выдано соответствующее предупреждение. При разархивации bzip2 пытается угадать имя разархивируемого файла по следующим правилам:
Опции командной строки для bzip2 очень похожи на опции команды gzip, но все же они не идентичны. Приведем краткую сводку наиболее необходимых в работе опций (табл. П.5.3).
Таблица П.5.3
Основные опции программы bzip2
Опция |
Значение |
-d, --decompress |
Принудительная разархивация. Эта опция необходима в силу того, что bzip2, bunzip2 и bzcat это на самом деле одна и та же программа, которая сама по расширению имени файла принимает решение о том, какое действие надо выполнить над указанным файлом. Опция -d отключает этот механизм и заставляет программу разархивировать указанные файлы |
-z, --compress |
Принудительная архивация |
-t, --test |
Проверка целостности указанного файла(ов) без разархивации |
-f, --force |
Перезапись существующего файла. По умолчанию bzip2 не перезаписывает существующие файлы. Если вы хотите перезаписать существующий файл, надо задать опцию f |
-k, --keep |
Сохранять (не удалять) исходные файлы при архивации или разархивации |
-s, --small |
Снизить требования к объему используемой оперативной памяти за счет снижения скорости архивации. Эту опцию рекомендуется применять на компьютерах с малым объемом ОЗУ (8 Мбайт и меньше) |
-q, --quiet |
Не выводить малосущественные сообщения |
-v, --verbose |
Выводить дополнительную информацию в процессе работе (представляет интерес в диагностических целях) |
Окончание табл. П.5.3
Опция |
Значение |
-L, --license, -V, --version |
Отобразить версию программы и лицензионное соглашение |
Аргументы командной строки, которым предшествует двойное тире и пробел, трактуются как имена файлов, даже если они начинаются с тире. Например:
[user]$ bzip2 -- -myfilename
Приведенных данных достаточно для квалифицированного применения архиваторов tar, gzip и bzip2. За дополнительными сведениями обращайтесь к интерактивной подсказке man. По утилите bzip2 имеется «Bzip2HOWTO», переведенный на русский язык.
[1] Лабораторная работа 4. Создание учетных записей пользователей и групп в среде ОС Linux. Организация рабочей среды пользователя
[2]
[3] [4] Текстовый редактор vi [4.1] Режимы редактора [4.2] Создание файла [4.2.1] Создание текста в режиме Append (редактирования) [4.2.2] Выход из режима Append [4.3] Редактирование текста в командном режиме [4.3.1] Перемещение курсора [4.3.2] Удаление текста [4.3.3] Добавление текста [4.4] Завершение работы c vi [4.5] Перемещение курсора по экрану [4.5.1] Позиционирование курсора на символ [4.5.2] Перемещение курсора в начало или конец строки [4.5.3] Поиск символа в строке [4.5.4] Позиционирование слов [4.5.5] Позиционирование курсора на предложение [4.5.6] Позиционирование курсора по параграфам [4.5.7] Позиционирование в окне [4.5.8] Прокрутка текста [4.5.9] Переход на указанную строку [4.5.10] Номера строки [4.5.11] Поиск символов по шаблону: команды / и ? [4.6] Создание текста [4.6.1] Добавить текст [4.6.2] Вставить текст [4.6.3] Открыть строку для текста [4.7] Удаление текста [4.7.1] Удаление текста в режиме ввода текста [4.7.2] Отменить последнюю команду [4.7.3] Команды удаления в командном режиме [4.7.4] Удаление слов [4.7.5] Удаление параграфов [4.7.6] Удаление строк [4.7.7] Удаление текста после курсора [4.8] Модификация текста [4.8.1] Замена текста [4.8.2] Подстановка текста [4.8.3] Изменение текста [4.9] Извлечение и присоединение текста [4.9.1] Перемещение текста [4.9.2] Копирование текста [4.10] Копирование и перемещение текста с использованием регистров [4.11] Расширенный режим работы редактора vi [4.11.1] Временный возврат к shell [4.11.2] Запись текста в новый файл [4.11.3] Добавить файл в буфер [4.11.4] Провести глобальные изменения [5] Команды shell работы с файлами [5.1] Команда cat [5.2] Команда cp [5.3] Команда mv [5.4] Команды rm и rmdir [5.5] Команды more и less [5.6] Команда find и символы шаблонов для имен файлов [5.7] Команда split разбиение файла на несколько частей [5.8] Сравнение файлов и команда patch [5.9] Поиск строк в файле по образцу (grep [5.10] Создание командного файла [6] Команды архивирования файлов в ОС Linux [6.1] Программа tar [6.2] Программа gzip [6.3] Программа bzip2
[7] |
А также другие работы, которые могут Вас заинтересовать | |||
15745. | Панорамный подход к проектированию педагогического исследования | 104.5 KB | |
Панорамный подход к проектированию педагогического исследования Владимир ЗАГВЯЗИНСКИЙ Статья которую мы вам предлагаем носит сугубо методологический теоретический характер. Но в то же время вдумчивому исследователю она раскрывает чёткий алгоритм действий в пои... | |||
15746. | СЛОВЕСНЫЙ ОБРАЗ В ЭПОХУ СИНКРЕТИЗМА | 374 KB | |
ЛЕКЦИЯ ПЕРВАЯ. СЛОВЕСНЫЙ ОБРАЗ В ЭПОХУ СИНКРЕТИЗМА Слово в эпоху синкретизма. Проблема генезиса и исходной формы образа. Эволюция образного сознания в эпоху синкретизма. Кумуляция как наиболее архаическая форма образа ее историческая семантика. Параллелизм его фо | |||
15747. | 13 замечаний Огилви о заголовках | 26 KB | |
13 замечаний Огилви о заголовках Фрагмент из книги рекламного гуру Дэвида Огилви Огилви о рекламеOgilvy on Advertising. Vintage Books Заголовки читают в пять раз большее число читателей чем основной текст. Это означает что продают как раз заголовки а 90 денег тратятся зря. Л... | |||
15748. | Культура делового общения | 1.42 MB | |
Культура делового общения В пособии сделана попытка рассмотреть деловой разговор в сфере предпринимательской деятельности с позиций его речевой логической психологической и невербальной культуры а также на основе обобщения отечественного и зарубежного опыта оп... | |||
15749. | О СМЕЩЕНИИ ЖАНРОВ ЛИРИКИ ХХ ВЕКА | 69.5 KB | |
С.Ю. АРТЁМОВА Тверь О СМЕЩЕНИИ ЖАНРОВ ЛИРИКИ ХХ ВЕКА Вопрос о жанрах лирики как и вообще литературы поднимается в литературоведении с XIX века до сегодняшних дней1. Однако о чистых жанрах уместно говорить только применительно к поэзии XVIII века когда жанровые норм... | |||
15750. | К ОПРЕДЕЛЕНИЮ ПОНЯТИЯ «ВТОРИЧНЫЙ ТЕКСТ» | 46 KB | |
О.А. ВЛАДИМИРОВА Тверь К ОПРЕДЕЛЕНИЮ ПОНЯТИЯ ВТОРИЧНЫЙ ТЕКСТ Понятие вторичные текст обычно употребляется как клише литературными критиками. Так они обозначают произведения авторы которых изза недостатка таланта не в силах создать чтолибо оригинальное и в | |||
15751. | К ОПРЕДЕЛЕНИЮ ПОНЯТИЙ «ЦИКЛ» И «ЦИКЛИЗАЦИЯ» | 71 KB | |
К определению понятий цикл и циклизация Е.Ю. АФОНИНА Тверь К ОПРЕДЕЛЕНИЮ ПОНЯТИЙ ЦИКЛ И ЦИКЛИЗАЦИЯ В практике литературоведческих исследований традиционным является рассмотрение текстов в их взаимосвязи. Возникновение особого исследоват... | |||
15752. | СЕМИОТИЧЕСКИЕ МЕХАНИЗМЫ ИНТЕРТЕКСТУАЛЬНОСТИ | 49.5 KB | |
А.В. БОРИСЕНКО Тверь СЕМИОТИЧЕСКИЕ МЕХАНИЗМЫ ИНТЕРТЕКСТУАЛЬНОСТИ Интерес к работам Ч. Пирса обострившийся в последнее время в значительной мере связан с тем что его концепция знака оказалась в большей степени адекватна современным представлениям о природе комм... | |||
15753. | АРХИТЕКТОНИКА И СТРУКТУРА ТЕКСТА: ПОСТАНОВКА ПРОБЛЕМЫ (НА МАТЕРИАЛЕ РАССКАЗА И.А. БУНИНА «ПРЕОБРАЖЕНИЕ») | 50.5 KB | |
Л.Ю. ЧУНЁВА Тверь АРХИТЕКТОНИКА И СТРУКТУРА ТЕКСТА: ПОСТАНОВКА ПРОБЛЕМЫ НА МАТЕРИАЛЕ РАССКАЗА И.А. БУНИНА ПРЕОБРАЖЕНИЕ Понятие архитектоника часто встречается в литературоведческих исследованиях1 но его значение пока остается неопределенным. Даже в тех р | |||