Programmazione BASH

Copia l'elenco dei file usando lo script Bash

Copia l'elenco dei file usando lo script Bash
Bash (Bourne Again Shell) è il tipo di shell che serve per eseguire comandi e script. Bash era una versione sviluppata della shell sh. Bash Script è un file in cui vengono script più comandi di shell per eseguire un'attività particolare. In questo articolo vedremo come possiamo copiare più file usando uno script bash. Per questo articolo, sto usando Ubuntu 20.04 per dimostrare l'esempio.

Nota: - $USER stamperà i nomi utente degli utenti che hanno effettuato l'accesso corrente.

Se sei curioso di sapere quale versione di bash shell è installata nel sistema, possiamo controllarla usando il seguente comando.

$ bash --version

Uscita versione Bash.

Creazione ed esecuzione di script Bash

Iniziamo con la creazione di un semplice file utilizzando qualsiasi editor di tua scelta. Per me, l'editor vi è più comodo. Per rendere eseguibile il file, dobbiamo aggiungere shebang (!#) e la posizione dell'interprete bash all'inizio dello script. ho creato un testo.txt e aggiungilo a bash_demo dir nella mia directory home che contiene del testo a scopo dimostrativo.

$ touch bash_demo.sh
$ vi bash_demo.sh

Aggiungi le seguenti righe nel tuo editor di testo per una demo di esempio dopo aver creato un file; se non l'hai fatto, l'editor creerà un nuovo file in scrittura ed esci.

#!/bin/bash
cp testo.txt /tmp/
echo “File copiato."

Possiamo eseguire lo script usando ./ prima del file di script, che determina il file dir corrente.

$ ./bash_demo.sh

Quando eseguiamo lo script, verrà generato il seguente errore nel nostro terminale.

Esecuzione iniziale del file bash.

Quando creiamo un file per impostazione predefinita, l'utente non dispone dei permessi di esecuzione per il file. Per fornire il permesso di esecuzione all'utente, deve essere eseguito il seguente comando.

$ chmod +x bash_demo.sh

Uscita dopo autorizzazione concessa.

Copia solo i file da una directory specifica

Per recuperare tutti i file e la directory da un percorso specifico, utilizzeremo il ciclo for nello script, quindi filtreremo l'unico file utilizzando la condizione if. Nell'esempio seguente, eseguiamo il comando cp eseguito solo se l'iteratore era un file che è determinato flag -f.

#!/bin/bash
dpath = /var/log/nginx/*
per FILE in $dpath
fare
if [[ -f $FILE ]]
poi
cp $FILE /home/$UTENTE/
altro
echo “Non ci sono file nel percorso indicato."
fi
fatto

Copia tutti i file con estensioni specifiche

In questo esempio, copieremo tutti i file con il .estensione di registro. Dobbiamo aggiungere *.log al percorso in modo da iterare l'unico file con .estensione log solo per loop.

#!/bin/bash
per FILE in /var/log/nginx/*.log
fare
cp $FILE /home/$UTENTE/
fatto

Copia tutti i file, inclusa la directory

In questo esempio, copieremo tutti i file, incluse le directory, in modo ricorsivo. Per questo, dobbiamo semplicemente aggiungere il comando -R cp dove -R determina il recupero ricorsivo della directory.

#!/bin/bash
per FILE in /var/log/*
fare
cp -R $FILE /home/$UTENTE/
fatto

Copia i file dal percorso specificato dall'utente

In questo esempio, copieremo i file dalla directory specificata dall'utente. Per fare ciò, useremo il comando read per richiedere il percorso all'utente, quindi controlleremo se l'utente fornisce il percorso a dir o meno, cosa che viene eseguita dal flag -d nella condizione. Dopo aver verificato dir, utilizzeremo un ciclo for per iterare tutti i file e la directory all'interno del percorso specificato, quindi filtreremo nuovamente i soli file utilizzando la condizione if. Se la condizione corrisponde, verrà eseguito il seguente comando cp.

#!/bin/bash
echo “Fornisci un percorso a dir."
leggi il percorso
if [[ -d $percorso ]]
poi
per FILE in $percorso/*
fare
if [[ -f $FILE ]]
poi
cp $FILE /home/$UTENTE/
altro
echo “Non ci sono file nel percorso indicato."
fi
fatto
altro
echo "Il percorso per la directory è obbligatorio"
fi

Nella mia directory home, ho i seguenti file e directory.

Output quando si fornisce il percorso di un file.

Output quando si fornisce il percorso di posizione della directory.

Dopo aver eseguito il file di script, possiamo controllare l'output nella directory predefinita nello script. Nel mio caso, ho copiato il file nella mia directory home e il risultato è il seguente.

Conclusione

In questo articolo, impariamo come copiare i file usando lo scripting bash. Possiamo usare molte altre operazioni come un ciclo, if-else, ecc. Lo scripting Bash è più efficace quando si lavora con più comandi per eseguire attività specifiche. Spero che questo articolo sulla copia di file utilizzando uno script bash ti piaccia.

I migliori emulatori di console di gioco per Linux
Questo articolo elencherà il popolare software di emulazione della console di gioco disponibile per Linux. L'emulazione è un livello di compatibilità ...
Le migliori distribuzioni Linux per il gioco nel 2021
Il sistema operativo Linux ha fatto molta strada dal suo aspetto originale, semplice e basato su server. Questo sistema operativo è notevolmente migli...
Come acquisire e riprodurre in streaming la tua sessione di gioco su Linux
In passato, giocare era considerato solo un hobby, ma con il tempo l'industria dei giochi ha visto una crescita enorme in termini di tecnologia e nume...