Перейти к основному содержанию
Рецепты Linux

Main navigation

  • Основы
  • Система
  • Команды
  • Программы
  • Дистро
  • Интерфейсы
  • Устройства
  • Доки
User account menu
  • Войти

Строка навигации

  1. Главная

Команда Linux ar

Автор: admin, 22 июля, 2024
Команды

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

Использование в Linux команды ar с примерами

Содержание

  • Введение
  • Синтаксис
  • Параметры
    • Команды
    • Особые модификаторы для команд
  • Использование в Linux команды ar
    • Создание архива
    • Удаление файла из архива
    • Отображение элементов архива
    • Извлечение файлов из архива
  • Заключение

Введение

Команда ar создаёт и модифицирует архивы, а также извлекает компоненты из архива. Архив, это одиночный файл содержащий коллекцию других файлов (членов архива) в особом формате, который делает возможным восстановление оригинальных файлов, которые называются компонентами архива.

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

Утилита может обслуживать архивы, файлы в которых имеют имена любой длины, однако, в зависимости от того как утилита конфигурируется для вашей системы, может быть введено ограничение на длину имени (для совместимости с архивным форматом поддерживаемым другими программами). Если это имеет место, то ограничение обычно составляет 15 символов (обычно для формата a.out) или 16 символов (обычно для формата coff).

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

Синтаксис

ar [эмуляция параметров] [-]{dmpqrstx}[abcDfilMNoOPsSTuvV] [--plugin <name>] [имя_члена] [счёт] архивный_файл файл...

Параметры

Команды

d

Удаление файлов из архива

m[ab]

Перемещение файлов в архив

p

Вывод файлов, найденных в архиве

q[f]

Быстрое добавление файлов в архив

r[ab][f][u]

Замена существующих или вставка новых файлов в архив

s

Действовать как ranlib

t[O][v]

Отображение содержимого архива

x[o]

Извлечение файлов из архива

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

[a]

Размещение файлов после [имени_члена]

[b]

Размещение файлов до [имени_члена] (то же, что и [i])

[D]

Использование нуля для отметок времени и uids/gids (по умолчанию)

[U]

Использование актуальных отметок времени и uids/gids

[N]

Использование [счета], как варианта имени

[f]

Обрезание имен вставленных файлов

[P]

Использование полных путевых имен при сопоставлении

[o]

Сохранение исходных дат

[O]

Отображение смещений файлов в архиве

[u]

Замена файлов более новыми, чем текущее содержимое архива

[c]

Не предупреждать, если должна быть создана библиотека

[s]

Создание индекса архива (cf. ranlib)

[l ]

Указать зависимости этой библиотеки

[S]

Не создавать таблицу символов

[T]

Устарел, вместо него использовать --thin

[v]

Подробный режим

[V]

Вывод номера версии

@<файл>

Чтение параметров из <файла>

--target=BFDNAME

Назначить форматом объекта назначения BFDNAME

--output=DIRNAME

Указать выходной каталог для операций извлечения

--record-libdeps=

указать зависимости этой библиотеки

--thin

Создать тонкий архив

Использование в Linux команды ar

Создание архива

Создадим в каталоге Directory файлы с именами ar1.txt и ar2.txt. Нам необходимо создать архив с именем archive без модификатора. В этом случае используем следующую команду:

oleg@mobile:~/Directory:$ ar r archive.a *ar1.txt
ar: создаётся archive.a
oleg@mobile:~/Directory:$

В результате был создан архив с файлом (членом) ar1.txt.

С модификатором это будет выглядеть так:

oleg@mobile:~/Directory:$ ar rv archive.a *ar1.txt
r - ar1.xt
oleg@mobile:~/Directory:$

Модификатор v создаёт строку или вывод с буквой a или r, указывающей, добавлен файл или нет.

Добавляем в архив файл ar2.txt:

oleg@mobile:~/Directory:$ ar r archive.a *ar2.txt
oleg@mobile:~/Directory:$

Удаление файла из архива

Для удаления файлов из архива утилита используется с параметром d. Указываем имена всех удаляемых членов. При добавлении модификатора v, каждый файл перечисляется по мере его удаления.

В нашем предыдущем случае мы использовали файл ar1.txt при создании архива archive.a, теперь мы удалим этот файл из архива:

oleg@mobile:~/Directory:$ ar d archive.a ar1.txt
oleg@mobile:~/Directory:$

У нас был архив archive.a, хранящий ar1.txt, после использования d без модификатора файл ar1.txt был просто удалён.

Рассмотрим тот же пример с модификатором v:

oleg@mobile:~/Directory:$ ar dv archive.a ar1.txt
d - ar1.txt
oleg@mobile:~/Directory:$

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

Возвращаем файл ar1.txt в архив:

oleg@mobile:~/Directory:$ ar r archive.a ar1.txt
oleg@mobile:~/Directory:$

Отображение элементов архива

Для отображения элементов архива в стандартном выходном файле утилита запускается с параметром p. Если модификатор не используется, элемент будет отображён так, словно это выходной файл. Если же используется модификатор v, то имя элемента будет показано до его копирования в выходной файл:

oleg@mobile:~/Directory:$ ar p archive.a
fistName lastName age city ID Ivan Ivanov 28 Toronto 400 Peter Petrov 43 Berlin 600 Sidor Sidorov 52 Sofia N/ Paul Pavlov 33 London 300 Carl Carlson 30 Rome N/A
fristName       lastName        age     city       ID
Ivan            Ivanov          28      Toronto    400
Peter           Petrov          43      Berlin     600
Sidor           Sidorov         52      Sofia      N/A
Paul            Pavlov          33      London     300
Carl            Carlson         30      Rome       N/A
oleg@mobile:~/Directory:$

Здесь он выдал вывод, который был записан в наших файлах ar1.txt и ar2.txt, теперь давайте проверим, что произойдёт, если мы используем в нем модификатор v:

oleg@mobile:~/Directory:$ ar pv archive.a
<ar2.txt>
fistName lastName age city ID Ivan Ivanov 28 Toronto 400 Peter Petrov 43 Berlin 600 Sidor Sidorov 52 Sofia N/ Paul Pavlov 33 London 300 Carl Carlson 30 Rome N/A
<ar1.txt>
fristName       lastName        age     city       ID
Ivan            Ivanov          28      Toronto    400
Peter           Petrov          43      Berlin     600
Sidor           Sidorov         52      Sofia      N/A
Paul            Pavlov          33      London     300
Carl            Carlson         30      Rome       N/A
oleg@mobile:~/Directory:$

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

Для отображения содержимого архива в виде списка утилита запускается с параметром t. Обычно он показывает содержимое архива, но если мы используем модификатор O, то он также показывает соответствующее смещение каждого члена архива:

oleg@mobile:~/Directory:$ ar t archive.a
ar2.txt
ar1.txt
oleg@mobile:~/Directory:$

Здесь отображены все члены архива.

Теперь выполним то же с использованием модификатора:

oleg@mobile:~/Directory:$ ar tO archive.a
ar2.txt 0x44
ar1.txt 0x122
oleg@mobile:~/Directory:$

На этот раз с помощью модификатора мы получаем соответствующее смещение каждого члена.

Извлечение файлов из архива

Для извлечения файлов из архива используется параметр x. При этом из архива извлекается каждый названный член, но если не называть имена файлов, которые необходимо извлечь, то извлекается весь архив:

oleg@mobile:~/Directory:$ ar x archive.a
oleg@mobile:~/Directory:$

Модификатор v отображает каждый извлечённый файл. Если при этом не указаны имена файлов, то извлекается весь архив:

oleg@mobile:~/Directory:$ ar xv archive.a
x - ar2.txt
x - ar1.txt
oleg@mobile:~/Directory:$

Мы можем использовать модификатор v для перечисления имени каждого извлекаемого члена. Если указывать имена элементов, то только они будут извлекаться из архива:

oleg@mobile:~/Directory:$ ar xv archive.a ar1.txt
x - ar1.txt
oleg@mobile:~/Directory:$

Заключение

В Linux команда ar является полезной, нужной и функциональной. Изучение её и работа с этой утилитой не представляют особых сложностей.

Последние материалы

  • Эмулятор терминала Terminator
    3 hours 6 minutes ago
  • Приложение scanimage
    6 days 1 hour ago
  • Утилита sensors
    1 week 2 days ago
  • Сканер Rkhunter
    2 weeks 3 days ago
  • Программа resize2fs
    3 weeks 2 days ago
RSS feed

Secondary menu

  • О проекте

© 2008–2025 Олег Меньшенин mensh@yandex.ru