Bash Wildcard

Bash Wildcard

Ketika kita perlu mencari sesuatu menggunakan perintah shell maka kita perlu mendefinisikan pola untuk pencarian. Karakter wildcard digunakan untuk menentukan pola pencarian atau pencocokan teks pada data string di bash shell. Penggunaan umum lainnya dari karakter wildcard adalah untuk membuat ekspresi reguler. Bagaimana Anda dapat menggunakan berbagai jenis karakter wildcard untuk mencari file ditunjukkan dalam tutorial ini.

Karakter Wildcard

Tiga karakter wildcard utama adalah,

  • Bintang atau Asterisk (*)
  • Tanda tanya (?)
  • Tanda kurung siku ([])

Asterisk (*) digunakan untuk mencari karakter tertentu untuk nol kali atau lebih. Tanda tanya (?) digunakan untuk mencari jumlah karakter yang tetap dimana setiap tanda tanya (?) menunjukkan setiap karakter. Tanda kurung siku digunakan untuk mencocokkan dengan karakter dari rentang yang ditentukan atau sekelompok karakter. Penggunaan karakter ini ditunjukkan di bagian selanjutnya dari tutorial ini.

Penggunaan Asterisk (*)

Asterisk (*) dapat digunakan dengan berbagai cara dengan perintah shell untuk mencari file. Penggunaan tanda bintang (*) yang berbeda ditunjukkan pada contoh berikut.

Contoh – 1: Mencari File Tertentu dengan Nama File dan ‘*’

Perintah ‘ls’ digunakan untuk mengetahui daftar file dan folder dari direktori saat ini.‘ls a*’ perintah akan mencari dan mencetak semua nama file dari direktori saat ini yang dimulai dengan karakter, ‘a’.

$ ls
$ ls a*

Keluaran:

Menurut output berikut, ada 12 file di direktori saat ini yang dimulai dengan karakter, ‘a’.

Contoh – 2: Mencari File dengan Ekstensi Tertentu dan ‘*’

Anda dapat mencari file apa saja dengan menggunakan tanda bintang (*) dan ekstensi file. Jika Anda ingin mencari semua file denganthe ‘.txt’ekstensi dari direktori saat ini kemudian jalankan perintah berikut dari terminal. Di sini, nama file dapat berupa karakter apa pun dan sejumlah karakter apa pun.

$ ls *.txt

Anda juga dapat mencari file dari ekstensi yang berbeda dengan menggunakan tanda bintang (*). Perintah berikut akan mencari file apa pun dengan ekstensi‘.sh’ atau ‘.txt’

$ ls *.sh *.txt

Keluaran:

Output menunjukkan daftar semua file yang ada dari direktori saat ini dengan ekstensi ‘.sh’ dan ‘.txt.

Contoh – 3: Menghapus File dengan Pencocokan Parsial dan ‘*’

Anda dapat menggunakan tanda bintang (*) untuk mencocokkan sebagian nama file. Perintah berikut akan menghapus file yang berisi:‘test’ Word di bagian mana pun dari nama file.

$ ls
$ rm *test*
$ ls

Keluaran:

Output berikut menunjukkan bahwa ada dua file di direktori saat ini yang berisi kata ‘test’ dan file-file ini telah dihapus setelah menjalankan perintah ‘rm’.

Penggunaan Tanda Tanya (?)

Ketika Anda mengetahui jumlah pasti karakter yang ingin Anda cari maka tanda tanya (?) wildcard dapat digunakan. Contoh berikut menunjukkan perbedaan useran tanda tanya (?) wildcard.

Contoh – 1: Mencari File dengan Nama File dan ‘?’

Misalkan ekstensi file, jumlah karakter file, dan beberapa karakter file diketahui, maka Anda dapat menggunakan wildcard ini untuk mencari file. Perintah pertama akan mencari file-file yang memiliki ekstensi‘.txt’. Perintah kedua akan mencari file-file yang panjangnya empat karakter, karakter terakhir adalah ‘t’ dan ekstensi file adalah ‘.txt’.

$ ls *.txt
$ ls ???t.txt

Keluaran:

Output menunjukkan bahwa 7 file ada di direktori saat ini dengan ekstensi ‘.txt’ dan ada satu file teks yang panjangnya 4 karakter dan karakter terakhir adalah ‘t’.

Contoh -2: Mencari File dengan Ekstensi dan ‘?’

Misalkan, Anda mengetahui nama file dan jumlah karakter ekstensi file maka Anda dapat menggunakan tanda tanya (?) wildcard untuk mencari file. Perintah berikut akan mencari file dengan nama file‘hello’ dan ekstensinya terdiri dari tiga karakter.

$ ls
$ ls hello.???

Keluaran:

Menurut output, ada dua file di direktori saat ini yang memiliki nama, ‘halo’ dan ekstensi sepanjang tiga karakter.

Penggunaan Tanda Kurung Kotak ([])

Rentang karakter atau kelompok karakter yang berbeda dapat digunakan dalam tanda kurung siku ([]) untuk mencari file berdasarkan rentang tersebut.

Contoh -1: Cari File Ekstensi Apa Pun dengan Nilai Dua Rentang

Perintah berikut akan mencari file apa pun yang namanya berisi karakter apa pun di dalam ‘a-p‘ dan digit apa saja di dalam ‘0-5‘ dan ekstensi file dapat berupa karakter apa saja.

$ ls
$ ls [a-p0-5]*.*

Keluaran:

Output berikut menunjukkan daftar semua file yang cocok dengan pola yang digunakan dalam perintah.

Contoh-2: Pencarian File Dimulai dengan Karakter Tertentu dan Diikuti oleh Karakter Lain

Dalam contoh ini, perintah kedua akan mencari nama file yang dimulai dengan salah satu karakter berikut [afgh] diikuti dengan karakter ‘o’ dengan ekstensi apa pun.

$ ls
$ ls [afgh]*o*

Keluaran:

Output berikut menunjukkan daftar semua file yang cocok dengan pola yang digunakan dalam perintah.

Contoh-3: Cari Nama File dengan Nilai Awalan

Perintah berikut akan cocok dengan file-file yang namanya dimulai dengan ‘fn’ dan diikuti oleh angka dalam 0 sampai 5.

$ ls fn[0-5]

Perintah berikut akan mencocokkan file-file yang berisi nama, ‘halo’ dan ekstensi berisi karakter apa pun dari t hingga z.

$ ls hello.[t-z]*

Keluaran:

Output berikut menunjukkan daftar semua file yang cocok dengan pola yang digunakan dalam perintah.

Kelas karakter dapat digunakan dalam tanda kurung ketiga untuk mencocokkan nama file atau string tertentu dalam skrip. Kelas yang berbeda yang dapat digunakan dalam pola telah dijelaskan di bawah ini.

 
Class name Purpose
[:alpha:] It is used to match with any uppercase and lowercase letter and equivalent to [a-zA-Z].
[:digit:] It is used to match with any digits and is equivalent to [0-9].
[:alnum:] It is used to match any alphabet and digit. It is equivalent to [a-zA-Z].
[:upper:] It is used to match with uppercase latter only and equivalent to [A-Z]
[:lower:] It is used to match with uppercase latter only and equivalent to [a-z]
[:blank:] It is used to match with space and tab.
[:print:] It is used to match with printable characters.
[:cntrl:] It is used to match with non-printable characters.
[:space:] It is used to match with while-space.
[:xdigit:] It is used to match with hexadecimal digits.
[:ascii:] It is used to match with ASCII characters.
[:word:] It is used to alphanumeric characters including underscore(_).

Penggunaan empat kelas yang paling sering digunakan telah dijelaskan dalam empat contoh berikut.

Contoh-1: Penggunaan [:alpha:] di Bash Script

Skrip berikut akan memeriksa bahwa input yang diambil dari user hanya berisi karakter alfabet.

#!/bin/bash
echo -n "What is your name? "
# Assign input value to the variable
read name

# Check the input value contains the alphabet only
if [[ "$name"  =~ ^[[:alpha:]] ]]; then
    echo "Your name is $name."
else
    echo "Enter alphabetic character only."
fi

Output: Output
berikut menunjukkan pesan untuk input yang tidak valid dan valid.

Contoh-2: Penggunaan [:digit:] di Bash Script

Skrip berikut akan memeriksa bahwa input yang diambil dari user hanya berisi karakter numerik.

#!/bin/bash
echo -n "Enter your ID: "
# Assign input value to the variable
read id

# Set the ID value
ID="ID-$id"
# Set the pattern using [[:digit:]] class
regex="ID-[[:digit:]]+"

# Check the input value contains the number only
if [[ $ID  =~ $regex ]]; then
    echo "$ID is valid."
else
    echo "$ID is invalid."
fi

Keluaran:

Output berikut menunjukkan pesan untuk input yang tidak valid dan valid.

Contoh-3: Penggunaan [:alnum:] di Bash Script

Skrip berikut akan memeriksa bahwa input yang diambil dari user hanya berisi karakter alfanumerik.

#!/bin/bash
echo -n "Enter your address: "
# Assign input value to the variable
read addr

# Check the input value contains the alphabet and number only
if [[ $addr  =~ ^[[:alnum:]] ]]; then
    echo "Address is valid."
else
    echo "Address is invalid."
fi

Keluaran:

Output berikut menunjukkan pesan untuk input yang tidak valid dan valid.

Contoh-4: Penggunaan [:upper:] di Bash Script

Skrip berikut akan memeriksa bahwa input yang diambil dari user hanya berisi huruf kapital.

#!/bin/bash
echo -n "Enter your code in uppercase letter: "
# Assign input value to the variable
read code

# Check the input value contains all uppercase latter
if [[ $code  =~ ^[[:upper:]] ]]; then
    echo "Code is correct."
else
    echo "Code can contain uppercase only."
fi

Keluaran:

Output berikut menunjukkan pesan untuk input yang tidak valid dan valid.

Kesimpulan

Penggunaan dasar karakter wildcard untuk mencari file di terminal dan memvalidasi data menggunakan skrip bash telah ditunjukkan dalam tutorial ini. Saya harap contoh yang ditampilkan di sini akan membantu user Linux untuk menulis pola ekspresi reguler dengan benar agar sesuai dengan konten apa pun untuk tujuan yang berbeda.

Related Posts