Home > Linux, Tutorial > Bash: Membaca Masukan dalam Loop While

Bash: Membaca Masukan dalam Loop While

Saya membutuhkan program shell (bash) untuk mencari file .*swp dan menghapusnya. File .*swp merupakan file sementara yang dibuat saat kita mengedit file di konsol Linux menggunakan editor Vi atau Vim. File ini akan dihapus saat program Vim keluar.

Namun, saat koneksi terputus saat kita masih dalam keadaan mengedit file dan tidak menyimpannya, file .swp dapat digunakan untuk me-restore ke penyimpanan otomatis terakhir. Kadang file ini perlu dihapus karena akan selalu muncul warning dari Vim saat kita membuka file aslinya. Dan cukup mengganggu.

Berikut skrip sederhana untuk mencari dan menghapus file .*swp. Diinginkan setiap penghapusan memerlukan konfirmasi. Menggunakan rm -i tidak bisa dilakukan saat menggunakan “while read” untuk looping. Demikian juga dengan menggunakan read tanpa argumen -u.

SRC=some_dir # fill with target directory
# sanity test :)
[ -z "$SRC" -o "$SRC" == "/" ] && echo "SRC=$SRC. Error" && exit
# clear .tmp
echo "Clearing swp files"
{ find $SRC -type f -iname ".*swp" | while read swp; do
  [ -f "$swp" ] && (
    echo -n "Delete $swp (y/n)? "
    read -u 3 asw
    if echo "$asw" | grep -iq "^y"; then
      rm -v $swp
    fi
  )
done; } 3< &0

Cukup membantu saat kita ingin membersihkan direktori dari file .*swp. Semoga bermanfaat.

Categories: Linux, Tutorial
  1. No comments yet.
  1. No trackbacks yet.
*

This blog is kept spam free by WP-SpamFree.

Skip to toolbar