Come copiare file utilizzando il comando “installa” su Linux

install è un versatile comando di copia dei file in Linux e macOS. È perfetto per l’utente esperto che cerca efficienza. Leggi questo articolo per scoprire come lavorare in modo più intelligente, non di più.

Aspetta: non serve per installare il software?

Il comando di installazione potrebbe avere il nome più fuorviante di uno qualsiasi dei comandi di Linux. In realtà non installa alcun software. Se stai tentando di installare un pacchetto software dalla riga di comando in Ubuntu o un’altra distribuzione basata su Debian, usa il comando apt-get. Su altre distribuzioni Linux, usa invece lo strumento di gestione dei pacchetti della tua distribuzione Linux, ad esempio dnf su Fedora o zypper su openSUSE.

Quindi cosa fa l’installazione?

In poche parole install combina elementi dal cp (copia), chown (Cambiare proprietario), chmod (cambia modalità), mkdir (make directory) e striscia (simboli di strisce) comandi. Ti consente di utilizzare le funzioni di tutte quelle in un’unica azione.

Il comando di installazione può:

Copia file come il comando cp.
Scegli se sovrascrivere i file esistenti.
Crea la directory di destinazione se non esiste, come mkdir.
Imposta i flag di autorizzazione utente dei file, proprio come il comando chmod.
Imposta il proprietario dei file, proprio come il comando chown.
Rimuovi i bagagli non essenziali dai file eseguibili, proprio come il comando strip.

Nonostante tutte queste funzionalità, anche il comando di installazione non ha molte opzioni fare i conti con.

Quando lo useresti

Il comando di installazione probabilmente non verrà utilizzato tutti i giorni. È utile, ma solo per determinate situazioni. Uno scenario in cui l’installazione entra in gioco è lo sviluppo del software. Supponiamo che tu stia programmando una nuova utility. Dovrai eseguire test al di fuori dell’ambiente di sviluppo. Per fare ciò è necessario copiare i nuovi file di programma in una directory di prova. Potrebbe essere necessario creare la directory di test ed è necessario impostare le autorizzazioni e la proprietà corrette per i file.

Poiché lo sviluppo è un’attività iterativa, puoi finire per fare questa sequenza di azioni molte, molte volte. Il comando di installazione fa tutto il lavoro pesante per te. Infine, quando la nuova utility è pronta per essere distribuita, è possibile utilizzare install per copiarla con le autorizzazioni corrette nella posizione di lavoro finale.

Un esempio

Un programmatore sta lavorando a una nuova utility di questo tipo, chiamata ana. Consiste in un file binario eseguibile e un database. Dopo il test, deve essere copiato in / usr / local / bin per renderlo disponibile a tutti gli utenti del sistema Linux. Dovrai sostituire i nomi dei file ei percorsi delle directory nel nostro esempio con i file ei percorsi che stai utilizzando sul tuo computer quando utilizzi install.

Finché non sarà pronto per il rilascio verrà testato in una directory chiamata ~ / test / ana. I membri del gruppo geek avranno i permessi di lettura ed esecuzione. Anche altri utenti avranno i permessi di lettura ed esecuzione. Il comando install usa la stessa rappresentazione numerica per i permessi di chmod. Il nostro programmatore ha deciso che le autorizzazioni devono essere impostate su:

Proprietario: leggere, scrivere ed eseguire.
Gruppo: lettura ed esecuzione.
Altri: solo esecuzione.

Come utilizzare il comando di installazione

La directory di lavoro del nostro programmatore immaginario è ~ / work. Ha scritto il programma, lo ha compilato e ha prodotto un binario chiamato ana. Ha già creato il file di database con cui lavora ana, Words.db. Quindi entrambi i file sono pronti per il test. Diamo un’occhiata a loro:

ls -l ana Words.db

L’utility ana che ha appena scritto crea anagrammi da una frase fornita sulla riga di comando. Il test di verifica è abbastanza semplice.

test di un'utilità nella directory di lavoro

Il nostro programmatore ha invocato ana con la frase “biscotto” e tutto sembra a posto. Ora vuole copiare questi due file nella directory ~ / test / ana per vedere se il nuovo programma di utilità funziona correttamente lontano dall’ambiente di sviluppo. Emette il seguente comando:

install -D -v ana Words.db -t ~/test/ana

Installa il comando in / test / ana

Le opzioni utilizzate sulla riga di comando erano:

D: creare directory, comprese le directory principali, se necessario.
v: Verbose, elenca ogni directory man mano che viene creata e ogni copia di file mentre viene eseguita.
t: directory di destinazione.

Possiamo vedere che install crea la directory ~ / test, quindi crea la directory ~ / test / ana. I file vengono elencati uno per uno man mano che vengono copiati nella directory di destinazione.

L’elenco dei file in ~ / test / ana conferma che sono stati copiati correttamente.

ls -l

ls nella directory / test / ana

Il passaggio successivo consiste nel testare l’utilità ana richiamandola nella directory ~ / test / ana.

test di un'utilità ana nella directory / test / ana

L’utilità funziona come previsto, il che è fantastico. Tuttavia, le autorizzazioni non sono corrette. Il requisito è impostare i membri del gruppo geek in modo che dispongano delle autorizzazioni di lettura ed esecuzione e che gli altri utenti abbiano solo l’esecuzione.

Possiamo risolvere entrambi questi problemi semplicemente con il seguente comando. Nota l’uso di sudo per eseguire il comando con i permessi di root. Le opzioni -o e -g e lo richiedono. Ci verrà chiesta la nostra password quando emettiamo il comando.

sudo install -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana

comando di installazione con opzioni di backup e impostazioni di premissioni

L’opzione -b (backup) crea backup dei file prima che vengano sovrascritti.
L’opzione -S (suffisso) definisce il suffisso per i file di backup. Se non si fornisce un suffisso, viene utilizzata una ~ (tilde). Chiediamo all’installazione di utilizzare un suffisso di .bak.
Impostiamo il proprietario del file come dave usando l’opzione -o (proprietario).
L’opzione -g (gruppo) richiede il nome di un gruppo. Questo diventa il gruppo proprietario dei file. Il gruppo che useremo si chiama geek.
L’opzione -m (modalità) imposta le modalità dei file per i file, utilizzando la sintassi numerica chmod standard.

Non è più necessario utilizzare l’opzione -D (crea directory), perché sappiamo che la directory di test esiste già. Abbiamo anche omesso l’opzione -v (verbose). L’elenco dei file nella nostra directory ~ / test / ana ci mostra i dettagli del file:

ls -l

ls nella directory / test / ana

Ciò conferma che tutti i nostri requisiti sono stati soddisfatti.

I file sono stati copiati nella directory testing.
Le autorizzazioni sono state impostate correttamente.
dave è il proprietario dei file.
Il gruppo geek è il gruppo proprietario dei due file.
Sono state eseguite copie di backup di ogni file, denominato ana.bak e Words.db.bak.

Tutto ciò è stato ottenuto tramite l’uso di un comando. Neat.

Il nostro programmatore apporta alcune modifiche finali all’utilità e ricompila. I file che sono stati modificati devono essere copiati nella directory ~ / test / ana dalla directory ~ / work. Possiamo farlo usando l’opzione -C (confronta). Se il file di origine e il file di destinazione coincidono, il file di origine non viene copiato.

sudo install -C -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana

comando di installazione con l'opzione -C compare

Elencare i file nella directory di destinazione ci mostra che la dimensione del file ana è cambiata. È più grande di ana.bakfile. Anche il timestamp su ana è cambiato. Queste modifiche sono dovute al fatto che la nuova versione del file è stata copiata qui.

ls -l

Si trova in / test / ana con l'utility test fo ana

La dimensione del file e il timestamp del file Words.db non sono cambiati. Nessuna modifica è stata apportata al file Words.db, quindi non è stato copiato. Su un progetto con molti file, l’opzione -C (confronta) può far risparmiare molto tempo e abbattere il disco rigido, copiando solo i file che sono stati modificati.

Il programmatore ha nuovamente verificato che l’utility ana continui a funzionare.

È ora di usare install per copiare i file nella directory / usr / local / bin. Ciò renderà la nuova utilità disponibile per tutti gli utenti di questo computer Linux. Sappiamo che / usr / local / bin esiste, quindi non abbiamo bisogno di creare quella directory. Possiamo usare una versione modificata del nostro ultimo comando.

Abbiamo cambiato la directory di destinazione in / usr / local / bin. Abbiamo rimosso l’opzione -C (confronta) perché non ci sono ancora copie di questi file nella directory di destinazione, quindi non c’è niente con cui confrontare. Allo stesso modo, non c’è nulla di cui eseguire il backup, quindi possiamo rimuovere l’opzione -b (backup) e l’opzione -S (suffisso).

sudo install -o dave -g geek -m 751 ana Words.db -t /usr/local/bin

installa la copia dei file in / usr / local / bin

Possiamo elencare che i file sono arrivati ​​in / usr / local / bin:

ls -l

ls di / usr / local / bin

E come test finale cambiamo directory nella nostra directory home e vediamo se possiamo richiamare la nostra nuova utilità da lì.

test di un'utilità ana

Nota che non abbiamo bisogno di anteporre al comando ana ./, il che significa che è in esecuzione da / usr / local / bin. Missione compiuta.

Abbiamo accennato al fatto che l’installazione può rimuovere le tabelle dei simboli ridondanti e altri bagagli dall’interno del file binario, per ridurne le dimensioni. Facciamolo adesso. Notare che il comando seguente non include Words.db. Questo perché Words.db è un file di database, non un eseguibile binario. Per copiare e ridurre il file binario ana possiamo usare il seguente comando. Abbiamo aggiunto l’opzione -s (riduci) con una “s” minuscola. Abbiamo aggiunto di nuovo l’opzione -b (backup) e l’opzione -S (suffisso), con una “S” maiuscola

sudo install -s -b -S .bak -o dave -g geek -m 751 ana -t /usr/local/bin

opzione di installazione con l'opzione -s strip

Elencare i file in / usr / local / bin ci permette di confrontare la dimensione del file ana con la sua versione di backup. Il file ana è stato ridotto a quasi il 60% delle dimensioni precedenti.

ls -l /usr/local/bin

È nella directory di lavoro

In sintesi

Il comando di installazione si rivolge a un uso piuttosto di nicchia. Per molte persone non verrà utilizzato giorno dopo giorno, o forse di mese in mese. Nonostante ciò, il comando install è un ottimo strumento con cui familiarizzare e da avere nel proprio arsenale di trucchi. Per quelle occasioni in cui ne hai bisogno, premia la tua curva di apprendimento con miglioramenti in termini di efficienza, semplicità e semplicemente meno pressioni di tasti.