GNU/Linux >> Linux Esercitazione >  >> Linux

Due ottimi usi per il comando cp:scorciatoie Bash

Lo scorso luglio ho scritto di due ottimi usi del comando cp:fare un backup di un file e sincronizzare una copia secondaria di una cartella.

Avendo scoperto queste fantastiche utilità, trovo che siano più dettagliate del necessario, quindi ho creato scorciatoie per esse nel mio script di avvio della shell Bash. Ho pensato di condividere queste scorciatoie nel caso in cui fossero utili ad altri o potessero offrire ispirazione agli utenti di Bash che non hanno ancora adottato alias o funzioni della shell.

Aggiornamento di una seconda copia di una cartella – alias Bash

Il modello generale per aggiornare una seconda copia di una cartella con cp è:

cp -r -u -v SOURCE-FOLDER DESTINATION-DIRECTORY

dove il -r sta per "discendere ricorsivamente attraverso la cartella visitando tutti i file", -u sta per "aggiorna la destinazione" e -v sta per "modalità dettagliata", SOURCE-FOLDER è il nome della cartella che contiene le informazioni più aggiornate e DESTINATION-DIRECTORY è la directory contenente la copia della SOURCE-FOLDER che deve essere sincronizzato.

Ricordo facilmente il -r opzione perché lo uso spesso quando copio le cartelle in giro. Probabilmente posso, con qualche sforzo in più, ricordare -v e, con ancora più sforzo, -u (è "aggiorna" o "sincronizza" o...).

Oppure posso semplicemente usare la capacità di alias in Bash per convertire il cp comando e opzioni per qualcosa di più memorabile, come questo:

alias sync='cp -r -u -v'

Se lo salvo nel mio .bash_aliases file nella mia home directory e quindi avviare una nuova sessione di terminale, posso usare l'alias, ad esempio:

sync Pictures /media/me/4388-E5FE

per sincronizzare la mia cartella Immagini nella mia home directory con la versione della stessa nella mia unità USB.

Non sono sicuro di avere già una sync alias definito? Puoi elencare tutti gli alias attualmente definiti digitando la parola alias al prompt dei comandi nella finestra del terminale.

Ti piace così tanto che vuoi solo iniziare a usarlo subito? Apri una finestra di terminale e digita:

echo "alias sync='cp -r -u -v'" >> ~/.bash_aliases

Quindi apri una nuova finestra di terminale e digita la parola alias al prompt dei comandi. Dovresti vedere qualcosa del genere:

me@mymachine~$ alias

alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'

alias egrep='egrep --color=auto'

alias fgrep='fgrep --color=auto'

alias grep='grep --color=auto'

alias gvm='sdk'

alias l='ls -CF'

alias la='ls -A'

alias ll='ls -alF'

alias ls='ls --color=auto'

alias sync='cp -r -u -v'

me@mymachine:~$

Lì puoi vedere la sync alias definito.

Effettuare backup con versione – Funzione Bash

Il modello generale per eseguire un backup di un file con cp è:

cp --force --backup=numbered WORKING-FILE BACKED-UP-FILE

dove il -- force sta per "fai la copia indipendentemente da cosa", the -- backup=numbered sta per "usa un numero per indicare la generazione del backup", WORKING-FILE è il file corrente che desideriamo conservare e BACKED-UP-FILE è lo stesso nome del WORKING-FILE e verranno aggiunte le informazioni sulla generazione.

Oltre a ricordare le opzioni per il cp comando, dobbiamo anche ricordarci di ripetere il WORKING-FILE nominare una seconda volta. Ma perché ripeterci quando una funzione Bash può occuparsi di quel sovraccarico per noi, in questo modo:

Ancora una volta, puoi salvarlo nel tuo .bash_aliases file nella tua home directory.

function backup {

    if [ $# -ne 1 ]; then

        echo "Usage: $0 filename"

    elif [ -f $1 ] ; then

        echo "cp --force --backup=numbered $1 $1"

        cp --force --backup=numbered $1 $1

    else

        echo "$0: $1 is not a file"

    fi

}

Ho chiamato questa funzione "backup" perché non ho altri comandi chiamati "backup" sul mio sistema, ma puoi scegliere il nome che preferisci.

Il primo if l'istruzione controlla che sia fornito un solo argomento alla funzione, altrimenti stampa l'utilizzo corretto con echo comando.

Il elif l'istruzione controlla per assicurarsi che l'argomento fornito sia un file e, in tal caso, utilizza (in modo dettagliato) il secondo echo per stampare il cp comando da usare e poi lo esegue.

Se il singolo argomento non è un file, il terzo echo stampa un messaggio di errore in tal senso.

Nella mia home directory, se eseguo il backup comando così definito nel file checkCounts.sql , vedo quel backup crea un file chiamato checkCounts.sql.~1~ . Se lo eseguo ancora una volta, vedo un nuovo file checkCounts.sql.~2~ .

Successo! Come previsto, posso continuare a modificare checkCounts.sql , ma se ne faccio uno snapshot ogni tanto con il backup, posso tornare allo snapshot più recente in caso di problemi.

Ad un certo punto, è meglio iniziare a utilizzare git per il controllo della versione, ma backup come definito sopra è un ottimo strumento economico quando devi creare istantanee ma non sei pronto per git .

Conclusione

Nel mio ultimo articolo, ti ho promesso che le attività ripetitive spesso possono essere facilmente semplificate attraverso l'uso di script di shell, funzioni di shell e alias di shell.

Qui ho mostrato esempi concreti dell'uso di alias e funzioni di shell per ottimizzare la funzionalità di sincronizzazione e backup del cp comando. Se desideri saperne di più, dai un'occhiata ai due articoli sopra citati:Come salvare le sequenze di tasti sulla riga di comando con alias e script della shell:un'introduzione al metodo shift e alle funzioni personalizzate, scritta dai miei colleghi Greg e Seth , rispettivamente.


Linux
  1. Una guida al terminale Linux per principianti

  2. 8 suggerimenti per la riga di comando di Linux

  3. Alias ​​della riga di comando nella shell di Linux

  4. Comandi Bash bang:un trucco da conoscere per la riga di comando di Linux

  5. '&&' vs. '&' con il comando 'test' in Bash

3 gestori di password per la riga di comando di Linux

Come utilizzare il comando di lettura Bash

Scorciatoie per la navigazione nella cronologia del terminale

L'elenco delle scorciatoie da tastiera utili di Bash

Il ciclo Bash FOR spiegato e semplificato

8 usi comuni del comando touch di Linux