GNU/Linux >> Belajar Linux >  >> Linux

Dua kegunaan hebat untuk perintah cp:pintasan Bash

Juli lalu, saya menulis tentang dua kegunaan hebat dari perintah cp:membuat cadangan file, dan menyinkronkan salinan sekunder folder.

Setelah menemukan utilitas hebat ini, saya menemukan bahwa mereka lebih bertele-tele daripada yang diperlukan, jadi saya membuat pintasan untuk mereka di skrip startup Bash shell saya. Saya pikir saya akan membagikan pintasan ini jika itu berguna bagi orang lain atau dapat menawarkan inspirasi bagi pengguna Bash yang belum sepenuhnya menggunakan alias atau fungsi shell.

Memperbarui salinan folder kedua – Bash alias

Pola umum untuk memperbarui salinan kedua dari folder dengan cp adalah:

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

dimana -r singkatan dari "turun secara rekursif melalui folder mengunjungi semua file", -u singkatan dari "perbarui target" dan -v singkatan dari "mode verbose", SOURCE-FOLDER adalah nama folder yang berisi informasi terbaru, dan DESTINATION-DIRECTORY adalah direktori yang berisi salinan SOURCE-FOLDER yang harus disinkronkan.

Saya dapat dengan mudah mengingat -r pilihan karena saya sering menggunakannya saat menyalin folder. Saya mungkin bisa, dengan lebih banyak usaha, mengingat -v , dan dengan lebih banyak usaha, -u (apakah itu “perbarui” atau “sinkronisasi” atau…).

Atau saya bisa menggunakan kemampuan alias di Bash untuk mengonversi cp perintah dan opsi untuk sesuatu yang lebih berkesan, seperti ini:

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

Jika saya menyimpan ini di .bash_aliases saya file di direktori home saya dan kemudian memulai sesi terminal baru, saya dapat menggunakan alias, misalnya:

sync Pictures /media/me/4388-E5FE

untuk menyinkronkan folder Pictures saya di direktori home saya dengan versi yang sama di drive USB saya.

Tidak yakin apakah Anda sudah memiliki sync alias ditentukan? Anda dapat membuat daftar semua alias yang Anda tetapkan saat ini dengan mengetikkan kata alias pada prompt perintah di jendela terminal Anda.

Seperti ini begitu banyak Anda hanya ingin mulai menggunakannya segera? Buka jendela terminal dan ketik:

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

Kemudian buka jendela terminal baru dan ketik kata alias pada prompt perintah. Anda akan melihat sesuatu seperti ini:

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

Di sana Anda dapat melihat sync alias ditentukan.

Membuat cadangan berversi – Fungsi Bash

Pola umum untuk membuat cadangan file dengan cp adalah:

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

di mana -- force singkatan dari "buat salinan apa pun yang terjadi", -- backup=numbered singkatan dari "gunakan nomor untuk menunjukkan pembuatan cadangan", WORKING-FILE adalah file saat ini yang ingin kami pertahankan, dan BACKED-UP-FILE adalah nama yang sama dengan WORKING-FILE dan informasi generasi akan ditambahkan.

Selain mengingat opsi untuk cp perintah, kita juga perlu ingat untuk mengulang WORKING-FILE nama untuk kedua kalinya. Tetapi mengapa mengulangi diri kita sendiri ketika fungsi Bash dapat menangani overhead itu untuk kita, seperti ini:

Sekali lagi, Anda dapat menyimpan ini ke .bash_aliases file di direktori home Anda.

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

}

Saya menyebut fungsi ini "cadangan" karena saya tidak memiliki perintah lain yang disebut "cadangan" di sistem saya, tetapi Anda dapat memilih nama apa pun yang sesuai.

if pertama pernyataan memeriksa untuk memastikan bahwa hanya satu argumen yang diberikan ke fungsi, jika tidak, mencetak penggunaan yang benar dengan echo perintah.

elif pernyataan memeriksa untuk memastikan argumen yang diberikan adalah file, dan jika demikian, itu (secara verbal) menggunakan echo kedua untuk mencetak cp perintah yang akan digunakan dan kemudian mengeksekusinya.

Jika argumen tunggal bukan file, echo ketiga mencetak pesan kesalahan untuk efek itu.

Di direktori home saya, jika saya menjalankan backup perintah yang didefinisikan pada file checkCounts.sql , saya melihat bahwa backup membuat file bernama checkCounts.sql.~1~ . Jika saya menjalankannya sekali lagi, saya melihat file baru checkCounts.sql.~2~ .

Kesuksesan! Sesuai rencana, saya dapat terus mengedit checkCounts.sql , tetapi jika saya sering mengambil snapshot dengan cadangan, saya dapat kembali ke snapshot terbaru jika saya mengalami masalah.

Pada titik tertentu, lebih baik mulai menggunakan git untuk kontrol versi, tetapi backup seperti yang didefinisikan di atas adalah alat murah yang bagus ketika Anda perlu membuat snapshot tetapi Anda belum siap untuk git .

Kesimpulan

Dalam artikel terakhir saya, saya berjanji kepada Anda bahwa tugas yang berulang sering kali dapat dengan mudah disederhanakan melalui penggunaan skrip shell, fungsi shell, dan alias shell.

Di sini saya telah menunjukkan contoh nyata penggunaan alias shell dan fungsi shell untuk merampingkan fungsi sinkronisasi dan pencadangan cp memerintah. Jika Anda ingin mempelajari lebih lanjut tentang ini, lihat dua artikel yang dikutip di atas:Cara menyimpan penekanan tombol pada baris perintah dengan alias dan skrip Shell:Pengantar metode shift dan fungsi khusus, yang ditulis oleh rekan saya Greg dan Seth , masing-masing.


Linux
  1. Kiat bash untuk sehari-hari di baris perintah

  2. Nala:Tampilan Depan yang Lebih Cantik untuk Perintah APT

  3. '&&' vs. '&' dengan perintah 'test' di Bash

  1. 8 tips untuk baris perintah Linux

  2. 10 alias Bash yang berguna untuk Linux

  3. Alias ​​baris perintah di Linux Shell

  1. Perintah bash bang:Trik yang harus diketahui untuk baris perintah Linux

  2. Perintah "eval" Di Bash?

  3. Bagaimana Cara Mendapatkan Penyelesaian Bash Untuk Alias ​​​​Perintah?