AR(1P)

NOME
ar - crea e mantiene archivi di librerie

SINTASSI

ar -d[-v] archivio file ...

ar -m [-v] archivio file ...

ar -m -a[-v] posname archivio file ...

ar -m -b[-v] posname archivio file ...

ar -m -i[-v] posname archivio file ...

ar -p[-v][-s] archivio [file ...]

ar -q[-cv] archivio file ...

ar -r[-cuv] archivio file ...

ar -r -a[-cuv] posname archivio file ...

ar -r -b[-cuv] posname archivio file ...

ar -r -i[-cuv] posname archivio file ...

ar -t[-v][-s] archivio [file ...]

ar -x[-v][-sCT] archivio [file ...]

DESCRIZIONE

L'utility ar fa parte delle Software Development Utilities.

L'utility ar viene usata per creare e mantenere gruppi di file combinati in un archivio. Quando viene creato un archivio vengono aggiunti nuovi file, e i file presenti nell'archivio possono essere estratti, eliminati o sostituiti. Quando l'archivio è costituito interamente da file oggetto validi, l'implementazione dovrebbe formattare l'archivio così che possa essere utilizzabile come libreria per il link editing (vedere c99 e fort77). Quando alcuni dei file archiviati non sono file oggetto validi, l'idoneità dell'archivio all'uso come libreria è indefinita. Se un archivio è composto interamente da file stampabili, l'intero archivio sarà stampabile.

Quando ar crea un archivio, crea le informazioni amministrative che indicano se è presente una tabella di simboli. Quando è presente almeno un file oggetto che ar riconosce come tale, ar crea e mantiene una tabella di simboli dell'archivio: questa potrà essere usata da un link editor per eseguire ricerche all'interno dell'archivio. Ogni volta che l'utility ar viene usata per creare o aggiornare i contenuti di un tale archivio, la tabella dei simboli viene ricostruita. L'opzione -s forza la ricostruzione della tabella dei simboli.

Tutti gli operandi file possono essere percorsi. Tuttavia, file all'interno di archivi possono essere chiamati da un nome di file, ossia l'ultimo elemento del percorso usato quando il file è stato inserito nell'archivio. La comparazione tra operandi file e nomi dei file nell'archivio viene eseguita confrontando l'ultimo elemento dell'operando con il nome del file presente nell'archivio.

Non è specificato se in un archivio più file possono avere lo stesso nome. In questi casi, tuttavia, ogni operando file e posname troverà solo il primo file nell'archivio con il nome uguale all'ultimo elemento dell'operando.

OPZIONI

L'utility ar deve essere conforme al volume Base Definitions di IEEE Std 1003.1-2001, Sezione 12.2, Utility Syntax Guidelines.

Devono essere supportate le seguenti opzioni:

-a  Posiziona nuovi file nell'archivio dopo il file chiamato dall'operando posname.

-b  Posiziona nuovi file nell'archivio prima del file chiamato dall'operando posname.

-c  Sopprime i messaggi diagnostici scritti in modo predefinito sullo standard error quando un archivio archivio viene creato.

-C  Evita che i file estratti sostituiscano file omonimi presenti nel file system. Quest'opzione è utile quando è usata con -T, per salvaguardare i nomi di file troncati dalla sostituzione con file con lo stesso prefisso.

-d  Cancella uno o più file da archivio.

-i  Posiziona nuovi file nell'archivio prima del file chiamato dall'operando posname (equivalente a -b).

-m  Sposta i file selezionati nell'archivio. Le opzioni -a, -b, o -i con l'operando posname ne indicano la posizione; altrimenti i file vengono spostati alla fine dell'archivio.

-p  Stampa i contenuti del file nell'archivio selezionato grazie all'operando file da archivio sullo standard output. Se non sono specificati operandi file, verrà stampato il contenuto di tutti i file nell'ordine in cui sono presenti nell'archivio.

-q  Aggiunge i file indicati alla fine dell'archivio. In questo caso ar non controlla se i file aggiunti sono già presenti nell'archivio. Può essere utile per evitare la ricerca fatta quando si crea un grande archivio pezzo per pezzo.

-r  Sostituisce o aggiunge file all'archivio. Se l'archivio selezionato da archivio non esistesse, ne verrà creato uno nuovo e verrà scritto un messaggio diagnostico sullo standard error (a meno che non venga specificata l'opzione -c). Se non viene specificato nessun file e archivio esiste, il risultato è indefinito. I file che sostituiranno file esistenti all'interno dell'archivio non cambieranno l'ordine dell'archivio. I file che non sostituiranno file esistenti dall'interno dell'archivio verranno aggiunti all'archivio a meno che venga specificata un'altra posizione con le opzioni -a, -b, o -i.

-s  Forza la rigenerazione della tabella dei simboli dell'archivio anche se ar non viene invocato con un opzione che modifichi i contenuti dell'archivio. Quest'opzione è utile per riparare la tabella dei simboli di un archivio dopo che è stato tagliato; vedi strip.

-t  Scrive un indice di archivio sullo standard output. I file specificati con l'operando file verranno inclusi nella lista. Se non viene specificato nessun operando file, tutti i file nell'archivio saranno inclusi nell'ordine in cui sono presenti.

-T  Abilita la troncatura dei nomi dei file estratti, i cui nomi sono più lunghi di quanto il file system possa supportare. Normalmente l'estrazione di file il cui nome è troppo lungo produce un errore; viene scritto un messaggio diagnostico e il file non viene estratto.

-u  Aggiorna i file vecchi presenti nell'archivio. Se usato con l'opzione -r i file presenti nell'archivio verrano sostitutiti solo se il corrispondente file ha una data di modifica più recente di quella del file contenuto nell'archivio.

-v  Fornisce un output dettagliato. Quando viene usato con le opzioni -d, -r, o -x scrive una descrizione dettagliata, file per file, dell'attività di creazione e manutenzione dell'archivio, come descritto nella sezione STDOUT.

Quando viene usato con l'opzione -p, scrive il nome del file nell'archivio sullo standard output prima di scrivere il file nell'archivio stesso, come descritto nella sezione STDOUT.

Quando viene usato con l'opzione -t, include una lunga lista di informazioni sui file presenti nell'archivio, come descritto nella sezione STDOUT.

-x  Estrae i file dell'archivio selezionati dall'operando file da archivio. Il contenuto dell'archivio non cambierà . Se non viene fornito l'operando file, tutti i file presenti nell'archivio verranno estratti. L'orario di modifica di ogni file estratto verrà  impostato all'orario in cui viene eseguita l'operazione di estrazione.

OPERANDI

Devono essere supportati i seguenti operandi:

archivio
    Il percorso dell'archivio.

file
    Un percorso. Solo l'ultimo componente sarà  usato per la comparazione con il nome del file contenuto nell'archivio. Se due o più operandi file hanno lo stesso ultimo componente del percorso (basename) il risultato è indefinito. Il formato di implementazione dell'archivio non tronca i nomi di file validi aggiunti o sostituiti nell'archivio.

posname
    Il nome del file nell'archivio, usato per il suo posizionamento relativo; vedere le opzioni -m e -r.

STDIN

Non usato.

FILE DI INPUT

L'archivio selezionato da archivio sarà  un file nel formato creato da ar -r.

VARIABILI DI AMBIENTE

Le seguenti variabili d'ambiente influenzano l'esecuzione di ar:

LANG
    Fornisce un valore predefinito per le variabili di internazionalizzazione non impostate o nulle. (Vedere il volume "Base Definitions" di IEEE Std 1003.1-2001, Sezione 8.2, Internationalization Variables per la precedenza delle variabili di internazionalizzazione usate per determinare i valori delle categorie di localizzazione.)

LC_ALL
    Se impostata a un valore di stringa non vuoto, sovrascrive il valore di tutte le altre variabili di internazionalizzazione.

LC_CTYPE
    Determina la localizzazione per l'interpretazione di sequenze di byte di dati di testo come caratteri (per esempio, caratteri single-byte o multi-byte in argomenti e file di input).

LC_MESSAGES
    Determina la localizzazione da usare per influenzare il formato e i contenuti dei messaggi diagnostici scritti sullo standard error.

LC_TIME
    Determina formato e contenuti per le stringhe di data e ora scritte da ar -tv.

NLSPATH
    Determina la posizione dei cataloghi di messaggi per l'elaborazione di LC_MESSAGES.

TMPDIR
    Determina il percorso che sovrascrive la directory predefinita dei file temporanei, se esiste.

TZ  Determina il fuso orario usato per calcolare le stringe di data e ora scritte da ar -tv. Se TZ è non assegnato o nullo il fuso orario verrà  impostato ad un valore non specificato.

EVENTI ASINCRONI

Default.

STDOUT

Se l'opzione -d viene usata con l'opzione -v il formato dello standard output sarà :

    "d - %s\n", <file>

dove file è l'operando specificato dalla riga di comando.

Se l'opzione -p viene usata con -v, ar precederà  il contenuto di ogni file con:

    "\n<%s>\n\n", <file>

dove file è l'operando specificato dalla riga di comando se sono stati specificati operandi file, e il nome del file presente nell'archivio se non sono stati specificati.

Se l'opzione -r è usata con -v:

*   Se file è già  presente nell'archivio il formato dello standard output sarà :

    "r - %s\n", <file>

dove file è l'operando specificato dalla riga di comando.

*   Se file non è presente nell'archivio il formato dello standard output sarà :

    "a - %s\n", <file>

dove file è l'operando specificato dalla riga di comando.

Se si usa l'opzione -t, ar scriverà  i nomi dei file presenti nell'archivio sullo standard output con il formato:

    "%s\n", <file>

dove file è l'operando specificato dalla riga di comando se sono stati specificati operandi file, o il nome del file nell'archivio se non sono stati specificati.

Se l'opzione -t viene usata con -v il formato dello standard output sarà :

    "%s %u/%u %u %s %d %d:%d %d %s\n", <modo dei membri>, <ID utente>,
        <ID gruppo>, <numero dei byte dei membri>,
        <mese abbreviato>, <giorno-del-mese>, <ora>,
        <minuto>, <anno>, <file>

dove:

<file>
    E' l'operando specificato dalla riga di comando se sono stati specificati operandi file, o il nome del file nell'archivio se non sono stati specificati.

<modo dei membri>

    Sarà  formattato come la stringa <modo file> definita nella sezione STDOUT di ls, eccetto che il primo carattere, il <tipo di voce>, non viene usato; la stringa rappresenta il modo del file nell'archivio nel momento in cui viene aggiunto o sostituito.

Le successive rappresentano il momento delle ultime modifiche di un file quando è stato recentemente aggiunto o sostitutito nell'archivio:

<mese abbreviato>

    Equivalente al formato di conversione di %b, come specificato in date.

<giorno-del-mese>

    Equivalente al formato di conversione di %e, come specificato in date.

<hour>
    Equivalente al formato di conversione di %H, come specificato in date.

<minute>
    Equivalente al formato di conversione di %M, come specificato in date.

<year>
    Equivalente al formato di conversione di %Y, come specificato in date.

Quando LC_TIME non specifica la localizzazione POSIX, possono essere usati un formato differente e un diverso ordine di rappresentazione di questi campi in relazione uno all'altro, in un formato appropriato alla localizzazione specificata.

Se l'opzione -x è usata con -v il formato dello standard output sarà :

    "x - %s\n", <file>

dove file è l'operando specificato dalla riga di comando se sono stati specificati operandi file, o il nome del file nell'archivio se non sono stati specificati.

STDERR

Lo standard error viene usato solo per i messaggi diagnostici. I messaggi diagnostici sulla creazione di nuovi archivi quando -c non è specificato non modificano lo stato di uscita.

FILE DI OUTPUT

Gli archivi sono file senza formato specifico.

DESCRIZIONE ESTESA

Vuoto.

STATO DI USCITA

In uscita devono essere restituiti i seguenti valori:

0   Completato con successo.

>0  Si è verificato un errore.

CONSEGUENZE DEGLI ERRORI

Default.

Le seguenti sezioni sono informative.

USO DELL'APPLICAZIONE

Vuoto.

ESEMPI

Vuoto.

LOGICA

Il formato degli archivi non è descritto. E' conosciuta l'esistenza di vari formati di ar che non sono compatibili. L'utility ar è, tuttavia, inclusa per dare la possibilità  di creare archivi utilizzabili solo su una macchina. L'archivio è specificato come file e può essere spostato come un file. Questo permette di muovere l'archivio da una macchina ad un'altra che usi la stessa implementazione di ar.

Utility come pax (e i suoi progenitori tar e cpio) inoltre forniscono archivi portabili. Non si tratta di un doppione: l'utility ar è inclusa per fornire un'interfaccia principalmente per make e per i compilatori, basati su un modello storico.

In implementazioni storiche, l'opzione -q (disponibile in sistemi conformi XSI) è nota per l'esecuzione veloce, perché ar non controlla se i file aggiunti sono già  presenti nell'archivio. E' utile per evitare la ricerca fatta quando si crea un grande archivio pezzo per pezzo. Queste osservazioni potrebbero essere vere per una nuova implementazione di questa utility, ma non è detto: per questo, essere sono state spostate nella LOGICA.

L'implementazione di BSD storicamente richiede che le applicazioni fornissero l'opzione -s se si supponeva che l'archivio contenesse una tabella di simboli. Come nel volume di IEEE Std 1003.1-2001, System V storicamente crea o aggiorna la tabella dei simboli di un archivio ogni volta che un file viene rimosso, aggiunto o aggiornato.

La sezione operandi richiede, anche se sembra superfluo specificarlo, che l'archivio non possa troncare i nomi dei file inferiori a {NAME_MAX}. Molte implementazioni storiche, tuttavia, lo fanno causando risultati inaspettati per l'applicazione. Per questo motivo questo volume di IEEE Std 1003.1-2001 lo esplicita, per non creare malintesi.

In accordo con la documentazione di System V, le opzioni -dmpqrtx non devono obbligatoriamente iniziare con un segno meno ('-'). Questo volume di IEEE Stl 1003.1-2001 richiede che l'applicazione, per essere conforme, usi il segno meno iniziale.

Il formato degli archivi usato dalla implementazione di BSD 4.4 è documentato in questa LOGICA come esempio: un file creato con ar inizia con la stringa "magica" "!<arch>\n" . Il resto dell'archivio è fatto di oggetti, ognuno dei quali è composto da un intestazione, un possibile nome di file e i suoi contenuti. L'intestazione è portabile tra differenti architetture hardware e, se i contenuti dei file sono stampabili, anche l'archivio stesso è stampabile.

L'intestazione è fatta da sei campi ASCII, seguiti da un finale a due caratteri. I campi sono il nome dell'oggetto (16 caratteri), la data dell'ultima modifica (12 caratteri), gli ID del gruppo e dell'utente (6 caratteri ciascuno), il modo del file (8 caratteri) e la dimensione del file (10 caratteri). Tutti i campi numerici sono decimali tranne il modo del file che è ottale.

La data di modifica è il campo st_mtime del file. Gli ID dell'utente e del gruppo sono i campi st_uid e st_gid. Il modo del file è il campo st_mode. La dimensione è il campo st_size; il finale a due caratteri è la stringa "`<newline>" .

Solo il campo del nome ha la possibilità  di eccedere i suoi limiti. Se un nome è più lungo di sedici caratteri o contiene uno spazio, viene scritta la stringa "#1/" seguita dalla lunghezza ASCII del nome nel campo nel nome. La dimensione del file (contenuta nell'intestazione dell'archivio) è incrementata dalla lunghezza del nome. Il nome viene poi scritto subito dopo l'intestazione dell'archivio.

Ogni carattere inutilizzato in ognuno di questi campi viene scritto come <spazio>. Se un campo ha qualche particolare numero massimo di caratteri di lunghezza, non ci sono divisioni tra i campi.

Gli oggetti nell'archivio sono sempre lunghi un numero pari di bytes; file di lunghezza dispari sono ampliati con <newline> fino a che la dimensione non diventa pari.

La descrizione dell'utility ar richiede che (quando tutti i membri sono file oggetto validi) essa produca una libreria di codici oggetto, che il link editor possa usare per estrarre i moduli oggetto. Se il link editor necessita di una tabella di simboli per permettere l'accesso casuale all'archivio, ar deve provvedere a fornirne una; tuttavia, ar non richiede una tabella di simboli.

L'opzione BSD -o è stata omessa. E' una rara applicazione conforme quella che che usa ar per estrarre il codice oggetto da una liberia con riferimento alla sua data di modifica, dato che può avere importanza solo per make. Quindi, fino a che questa funzionalità  non sarà ritenuta importante per la portabilità , la data di modifica dei file estratti verrà impostata alla data attuale.

C'è almeno un'implementazione conosciuta (per piccoli computer) che può aggiustare solo file oggetto per quel sistema, non permettendo oggetti misti e altri file. La capacità  di manipolare ogni tipo di file non solo è una pratica storica per molte implementazioni, ma è anche un'aspettativa ragionevole.

E' stato preso in considerazione il cambiamento del formato dell'output di ar -tv, usando lo stesso formato dell'output di ls -l. Questo avrebbe reso l'elaborazione dell'output di ar uguale a quello di ls. Il consiglio è stato seguito solo in parte, perché il formato attuale di ar è comunemente usato, e cambiamenti ne interromperebbero l'utilizzo storico. Inoltre, ar stampa l'ID utente e l'ID di gruppo in formato numerico con uno slash per dividerli. Cambiare questo per avere il nome utente e il nome del gruppo non sarebbe corretto se l'archivio venisse spostato su una macchina con un differente database utenti. Dato che ar non può sapere se l'archivio è stato generato sulla stessa macchina, non può sapere cosa riportare.

Il testo sulla combinazione di opzioni -ur è una pratica storica: dato che il nome di un file può facilmente rappresentare due differenti file (per esempio, /a/foo e /b/foo), è ragionevole sostituire un file nell'archivio anche quando la data di modifica nell'archivio è identica a quella nel file system.

DIREZIONI FUTURE

Nessuna.

VEDERE ANCHE

c99 , date , fort77 , pax , strip il volume Base Definitions di IEEE Std 1003.1-2001, Capitolo 13, Headers, <unistd.h> descrizione di {POSIX_NO_TRUNC}

COPYRIGHT
Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any discrepancy between this version and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at http://www.opengroup.org/unix/online.html .