GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Zwei großartige Anwendungen für den cp-Befehl:Bash-Shortcuts

Letzten Juli habe ich über zwei großartige Anwendungen für den cp-Befehl geschrieben:das Erstellen einer Sicherungskopie einer Datei und das Synchronisieren einer sekundären Kopie eines Ordners.

Nachdem ich diese großartigen Dienstprogramme entdeckt habe, finde ich, dass sie ausführlicher als nötig sind, also habe ich Verknüpfungen zu ihnen in meinem Bash-Shell-Startskript erstellt. Ich dachte, ich würde diese Shortcuts teilen, falls sie für andere nützlich sind oder Bash-Benutzer inspirieren könnten, die Aliase oder Shell-Funktionen noch nicht ganz übernommen haben.

Aktualisieren einer zweiten Kopie eines Ordners – Bash-Alias

Das allgemeine Muster zum Aktualisieren einer zweiten Kopie eines Ordners mit cp ist:

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

wo das -r steht für „rekursiv durch den Ordner absteigend alle Dateien besuchend“, -u steht für „update the target“ und -v steht für „verbose mode“, SOURCE-FOLDER ist der Name des Ordners, der die aktuellsten Informationen enthält, und DESTINATION-DIRECTORY ist das Verzeichnis, das die Kopie des SOURCE-FOLDER enthält die synchronisiert werden müssen.

Ich kann mir leicht das -r merken Option, weil ich sie oft beim Kopieren von Ordnern verwende. Ich kann mich wahrscheinlich mit etwas mehr Mühe an -v erinnern , und mit noch mehr Aufwand -u (ist es „aktualisieren“ oder „synchronisieren“ oder …).

Oder ich kann einfach die Alias-Funktion in Bash verwenden, um den cp zu konvertieren Befehl und Optionen zu etwas einprägsamerem, wie diesem:

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

Wenn ich das in meiner .bash_aliases speichere Datei in meinem Home-Verzeichnis und starte dann eine neue Terminalsitzung, kann ich den Alias ​​verwenden, zum Beispiel:

sync Pictures /media/me/4388-E5FE

um meinen Bilderordner in meinem Home-Verzeichnis mit der Version desselben auf meinem USB-Laufwerk zu synchronisieren.

Nicht sicher, ob Sie bereits eine sync haben Pseudonym definiert? Sie können alle Ihre derzeit definierten Aliase auflisten, indem Sie das Wort alias eingeben an der Eingabeaufforderung in Ihrem Terminalfenster.

Gefällt Ihnen das so sehr, dass Sie es sofort verwenden möchten? Öffnen Sie ein Terminalfenster und geben Sie Folgendes ein:

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

Starten Sie dann ein neues Terminalfenster und geben Sie das Wort alias ein an der Eingabeaufforderung. Sie sollten so etwas sehen:

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:~$

Dort sehen Sie den sync Alias ​​definiert.

Versionierte Backups erstellen – Bash-Funktion

Das allgemeine Muster zum Erstellen einer Sicherungskopie einer Datei mit cp ist:

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

wo die -- force steht für „macht die Kopie egal was“, der -- backup=numbered steht für „Benutze eine Nummer, um die Backup-Generierung anzugeben“, WORKING-FILE ist die aktuelle Datei, die wir aufbewahren möchten, und BACKED-UP-FILE ist derselbe Name wie die WORKING-FILE und es werden die Generierungsinformationen angehängt.

Neben dem Erinnern an die Optionen zum cp müssen wir auch daran denken, das WORKING-FILE zu wiederholen ein zweites Mal nennen. Aber warum sollten wir uns wiederholen, wenn eine Bash-Funktion diesen Overhead für uns erledigen kann, wie hier:

Auch dies können Sie in Ihren .bash_aliases speichern Datei in Ihrem Home-Verzeichnis.

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

}

Ich habe diese Funktion „Backup“ genannt, weil ich keine anderen Befehle namens „Backup“ auf meinem System habe, aber Sie können einen beliebigen Namen wählen.

Das erste if -Anweisung überprüft, ob nur ein Argument für die Funktion bereitgestellt wird, andernfalls wird die korrekte Verwendung mit dem echo ausgegeben Befehl.

Das elif -Anweisung überprüft, ob das angegebene Argument eine Datei ist, und wenn dies der Fall ist, verwendet sie (ausführlich) das zweite echo um den cp zu drucken zu verwendenden Befehl und führt ihn dann aus.

Wenn das einzelne Argument keine Datei ist, wird das dritte echo gibt eine entsprechende Fehlermeldung aus.

In meinem Homeverzeichnis, wenn ich das backup ausführe Befehl, der so in der Datei checkCounts.sql definiert ist , sehe ich diese backup erstellt eine Datei namens checkCounts.sql.~1~ . Wenn ich es noch einmal ausführe, sehe ich eine neue Datei checkCounts.sql.~2~ .

Erfolg! Wie geplant kann ich mit der Bearbeitung von checkCounts.sql fortfahren , aber wenn ich ab und zu einen Schnappschuss davon mit einer Sicherung mache, kann ich auf den neuesten Schnappschuss zurückgreifen, falls ich auf Probleme stoße.

Irgendwann ist es besser, mit git anzufangen für die Versionskontrolle, aber backup wie oben definiert, ist ein nettes, billiges Tool, wenn Sie Snapshots erstellen müssen, aber nicht bereit für git sind .

Schlussfolgerung

In meinem letzten Artikel habe ich Ihnen versprochen, dass sich wiederholende Aufgaben oft leicht durch die Verwendung von Shell-Skripten, Shell-Funktionen und Shell-Aliasen rationalisiert werden können.

Hier habe ich konkrete Beispiele für die Verwendung von Shell-Aliassen und Shell-Funktionen gezeigt, um die Synchronisierungs- und Backup-Funktionalität des cp zu optimieren Befehl. Wenn Sie mehr darüber erfahren möchten, lesen Sie die beiden oben zitierten Artikel:How to save keystrokes at the command line with alias and Shell scripting:An Introduction to the shift method and custom functions, geschrieben von meinen Kollegen Greg und Seth .


Linux
  1. 8 Tipps für die Linux-Kommandozeile

  2. Bash-Tipps für den Alltag an der Kommandozeile

  3. Bash-Bang-Befehle:Ein Must-Know-Trick für die Linux-Befehlszeile

  4. Der „eval“-Befehl in Bash?

  5. Wie erhalte ich die Bash-Vervollständigung für Befehlsaliase?

3 Passwort-Manager für die Linux-Kommandozeile

So verwenden Sie den Bash-Lesebefehl

Verknüpfungen zum Navigieren im Terminalverlauf

Die Liste nützlicher Bash-Tastaturkürzel

Die Bash FOR-Schleife erklärt und vereinfacht

8 Häufige Verwendungen des Linux-Touch-Befehls