Unix / Linux - Mekanisme Petikan Shell

Hai, para pemrogram yang sedang mencari ilmu! Hari ini, kita akan mendalam ke dalam dunia yang menarik dari mekanisme petikan shell di Unix dan Linux. Sebagai guru komputer yang ramah di lingkungan tetangga Anda, saya di sini untuk mengarahkan Anda dalam perjalanan ini, langkah demi langkah. Jangan khawatir jika Anda belum pernah memrogram sebelumnya - kita akan mulai dari dasar-dasar dan naik tingkat perlahan-lahan. Jadi, ambil secangkir kopi (atau teh, jika itu yang Anda sukai), dan mari kita mulai!

Unix / Linux - Quoting Mechanisms

Karakter Meta

Sebelum kita melompat ke petikan, kita perlu memahami apa itu karakter meta. Dalam shell, karakter meta adalah karakter khusus yang memiliki arti unik. Mereka seperti rempah-rempah dalam makanan favorit Anda - sedikit saja sudah cukup jauh!

Berikut adalah tabel karakter meta umum:

Karakter Meta Arti
* Wildcard (cocok dengan sejumlah karakter apapun)
? Wildcard (cocok dengan karakter tunggal apapun)
> Redireksi output
< Redireksi input
& Jalankan perintah di latar belakang
; Pemisah perintah
() Grup perintah
[] Kelas karakter

Mari kita lihat contoh:

ls *.txt

Dalam perintah ini, * adalah karakter meta. Itu mengatakan ke shell untuk mencantumkan semua file yang berakhir dengan .txt. Bagus, kan?

Tapi, apa kalau kita benar-benar ingin menggunakan karakter ini sebagai karakter biasa? Itu adalah tempat petikan masuk!

Tanda Petik Tunggal

Tanda petik tunggal adalah bentuk petikan yang paling sederhana. Mereka mengatakan ke shell untuk menganggap segala sesuatu di dalamnya sebagai karakter literal. Itu seperti memasukkan kata-kata Anda dalam gelembung perlindungan!

Mari kita coba contoh:

echo 'The * is a wildcard character'

Output:

The * is a wildcard character

Lihat itu? * tidak diperluas untuk mencantumkan semua file. Itu diperlakukan sebagai karakter biasa.

Tanda petik tunggal sangat baik saat Anda ingin menjaga nilai literal setiap karakter dalam string. Bahkan karakter petikan lain kehilangan arti khusus di dalam tanda petik tunggal!

echo 'This is a $VARIABLE with "double quotes" inside'

Output:

This is a $VARIABLE with "double quotes" inside

Semua yang ada di dalam tanda petik tunggal dicetak seperti yang ada. Tidak ada substitusi, tidak ada interpretasi. Hanya teks murni dan tak tercampur!

Tanda Petik Ganda

Tanda petik ganda lebih fleksibel daripada saudara tanda petik tunggal mereka. Mereka menjaga nilai literal kebanyakan karakter, tetapi masih memungkinkan beberapa substitusi. Itu seperti permukaan semi-permeabel untuk teks Anda!

Berikut adalah apa yang diizinkan oleh tanda petik ganda:

  1. Substitusi variabel
  2. Substitusi perintah
  3. Penebalan backslash

Mari kita lihat beberapa contoh:

NAME="Alice"
echo "Hello, $NAME!"

Output:

Hello, Alice!

Variabel $NAME digantikan dengan nilainya. Magic!

Sekarang, mari kita coba substitusi perintah:

echo "Today's date is $(date)"

Output:

Today's date is Tue May 23 10:30:45 PDT 2023

Bagian $(date) digantikan dengan output perintah date. Bagus, kan?

Tetapi, ingat, beberapa karakter masih menjaga arti khusus di dalam tanda petik ganda:

echo "This is a newline: \n And this is a tab: \t"

Output:

This is a newline:
And this is a tab:

\n dan \t diinterpretasikan sebagai baris baru dan tab masing-masing.

Backquotes

Backquotes, juga dikenal sebagai backticks, adalah bentuk older substitusi perintah. Mereka seperti pengembara waktu dari hari-hari awal Unix!

Berikut adalah cara kerjanya:

echo "The current directory contains `ls | wc -l` files"

Output:

The current directory contains 42 files

Perintah antara backquotes (ls | wc -l) dieksekusi, dan outputnya digantikan ke dalam string.

Meskipun backquotes masih berfungsi, sintaks $() yang lebih modern biasanya lebih disukai:

echo "The current directory contains $(ls | wc -l) files"

Ini melakukan hal yang sama tetapi lebih mudah untuk disembunyikan dan, menurut pendapat saya, lebih mudah dibaca. Itu seperti meningkat dari telepon flip ke smartphone - fungsi dasar yang sama, tetapi lebih ramah pengguna!

Menggabungkan Semua

Sekarang kita telah mengeksplorasi semua mekanisme petikan ini, mari kita gabungkan mereka dalam skrip kecil yang menyenangkan:

#!/bin/bash

NAME="World"
GREETING='Hello'
DATE=$(date +"%A, %B %d, %Y")

echo "$GREETING, $NAME!"
echo 'Today is not actually $DATE'
echo "But for real, today is $DATE"
echo "There are `ls | wc -l` files in this directory"

Jika kita menjalankan skrip ini, kita mungkin mendapatkan output seperti ini:

Hello, World!
Today is not actually $DATE
But for real, today is Tuesday, May 23, 2023
There are 42 files in this directory

Anda bisa melihat bagaimana jenis petik yang berbeda mempengaruhi output? Tanda petik tunggal menjaga segala sesuatu secara literal, tanda petik ganda memungkinkan substitusi, dan backquotes (atau $()) melakukan substitusi perintah.

Dan itu dia, teman-teman! Anda telah mengambil langkah pertama ke dunia mekanisme petikan shell. Ingat, latihan membuat sempurna, jadi jangan khawatir untuk mencoba konsep ini. Sebelum Anda tahu, Anda akan menjadi ahli dalam petikan!

Selamat coding, dan may the shell be with you! ??

Credits: Image by storyset