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.