GNU/Linux >> Znalost Linux >  >> Linux

Dvě skvělá použití pro příkaz cp:Bash zkratky

Loni v červenci jsem psal o dvou skvělých použitích příkazu cp:vytvoření zálohy souboru a synchronizace sekundární kopie složky.

Když jsem objevil tyto skvělé nástroje, zjistil jsem, že jsou podrobnější, než je nutné, a tak jsem k nim vytvořil zástupce ve svém spouštěcím skriptu Bash shell. Napadlo mě, že bych se o tyto zkratky podělil pro případ, že by byly užitečné pro ostatní nebo by mohly nabídnout inspiraci uživatelům Bash, kteří si tak úplně nezvykli na aliasy nebo funkce shellu.

Aktualizace druhé kopie složky – alias Bash

Obecný vzor pro aktualizaci druhé kopie složky pomocí cp je:

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

kde -r znamená „rekurzivně sestupovat přes složku navštěvující všechny soubory“, -u znamená „aktualizovat cíl“ a -v znamená „podrobný režim“, SOURCE-FOLDER je název složky, která obsahuje nejaktuálnější informace, a DESTINATION-DIRECTORY je adresář obsahující kopii SOURCE-FOLDER který musí být synchronizován.

Snadno si pamatuji -r možnost, protože ji často používám při kopírování složek. Pravděpodobně si s větším úsilím vzpomenu na -v a s ještě větším úsilím -u (je to „aktualizace“ nebo „synchronizace“ nebo…).

Nebo mohu použít alias v Bash k převodu cp příkaz a možnosti na něco lépe zapamatovatelného, ​​jako je toto:

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

Pokud to uložím do svého .bash_aliases soubor v mém domovském adresáři a poté spustit novou relaci terminálu, mohu použít alias, například:

sync Pictures /media/me/4388-E5FE

pro synchronizaci složky Obrázky v mém domovském adresáři s verzí stejného adresáře na mém USB disku.

Nejste si jisti, zda již máte sync alias definovaný? Všechny aktuálně definované aliasy můžete vypsat zadáním slova alias na příkazovém řádku v okně terminálu.

Tak moc se vám to líbí a chcete to hned začít používat? Otevřete okno terminálu a zadejte:

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

Poté spusťte nové okno terminálu a zadejte slovo alias na příkazovém řádku. Měli byste vidět něco takového:

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

Zde můžete vidět sync alias definovaný.

Vytváření verzovaných záloh – funkce Bash

Obecný vzor pro vytvoření zálohy souboru pomocí cp je:

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

kde -- force znamená „vytvořit kopii bez ohledu na to“, -- backup=numbered znamená “použít číslo k označení generování zálohy”, WORKING-FILE je aktuální soubor, který chceme zachovat, a BACKED-UP-FILE je stejný název jako WORKING-FILE a budou mít připojeny informace o generování.

Kromě zapamatování možností cp musíme také pamatovat na opakování WORKING-FILE jméno podruhé. Ale proč se opakovat, když se o tu režii může postarat funkce Bash, jako je tato:

Opět to můžete uložit do .bash_aliases soubor ve vašem domovském adresáři.

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

}

Tuto funkci jsem nazval „backup“, protože v mém systému nemám žádné další příkazy zvané „backup“, ale můžete si vybrat jakýkoli název, který vám vyhovuje.

První if příkaz zkontroluje, zda je funkci poskytnut pouze jeden argument, jinak vytiskne správné použití pomocí echo příkaz.

elif příkaz zkontroluje, zda je zadaný argument soubor, a pokud ano, použije (výslovně) druhý echo vytisknout cp příkaz, který má být použit, a poté jej provede.

Pokud jediný argument není soubor, třetí echo vytiskne v tomto smyslu chybovou zprávu.

V mém domovském adresáři, pokud spustím backup příkaz takto definovaný v souboru checkCounts.sql , vidím tu backup vytvoří soubor s názvem checkCounts.sql.~1~ . Pokud jej spustím ještě jednou, zobrazí se nový soubor checkCounts.sql.~2~ .

Úspěch! Podle plánu mohu pokračovat v úpravách checkCounts.sql , ale pokud si to občas udělám se zálohou, můžu se vrátit k nejnovějšímu snímku, pokud bych se dostal do potíží.

V určitém okamžiku je lepší začít používat git pro správu verzí, ale backup jak je definováno výše, je pěkný levný nástroj, když potřebujete vytvořit snímky, ale nejste připraveni na git .

Závěr

Ve svém minulém článku jsem vám slíbil, že opakující se úkoly lze často snadno zjednodušit pomocí skriptů shellu, funkcí shellu a aliasů shellu.

Zde jsem ukázal konkrétní příklady použití aliasů shellu a funkcí shellu pro zefektivnění synchronizace a zálohování cp příkaz. Pokud byste se o tom chtěli dozvědět více, podívejte se na dva výše citované články:Jak ušetřit úhozy na příkazovém řádku pomocí aliasů a skriptování Shell:Úvod do metody shift a vlastních funkcí, napsaný mými kolegy Gregem a Sethem , respektive.


Linux
  1. 8 tipů pro příkazový řádek Linuxu

  2. Příkaz „eval“ v Bash?

  3. Need For The `builtin` Builtin?

  1. Průvodce linuxovým terminálem pro začátečníky

  2. Jak zakázat alias v Bash pro jeden příkaz?

  3. '&&' vs. '&' s příkazem 'test' v Bash

  1. 10 praktických aliasů Bash pro Linux

  2. Bash tipy pro každý den na příkazovém řádku

  3. Nala:Prettier Frontend pro APT Command