Bash Scripting – Perintah Printf Dijelaskan Dengan Contoh

Pada artikel ini, saya akan menjelaskan penggunaan dasar perintah printf Bash dengan contoh di Linux. Pada akhir artikel ini, Anda akan merasa nyaman dalam menggunakan perintah printf di skrip shell Bash.
Contents
Bash perintah printfDisplay Bash printf helpBentuk dasar perintah printfVariabel dan interpretasi perintahPerilaku tanda kutip tunggal vs gandaMengarahkan dan menyalurkan outputMenetapkan output ke variabelPernyataan printf MultiLineBackslash karakter yang lolosNewline karakter (n)Tab horizontal (t) dan tab vertikal(v)Karakter spasi mundur (b)Carriage return (r)Karakter garis miring terbalik ()Penentu format cetak Penentu string (%s)Integer desimal bertanda (%d ) dan bilangan bulat desimal tidak bertanda (%u)Nomor titik mengambang (%f)Menafsirkan urutan garis miring terbalik Arahan konversi PrintfPengubah lebarPengubah presisiPengubah presisiConclusionBash perintah printf

Bash menawarkan dua jenis perintah yang dapat digunakan untuk mencetak keluaran Anda ke terminal. Salah satunya adalah perintah echo yang banyak digunakan untuk tujuan ini. Yang kedua adalah perintah printf.

Printf mirip dengan fungsi printf dalam bahasa C tetapi dengan serangkaian fiturnya sendiri. Perbedaan utama antara perintah echo dan printf adalah printf menawarkan pemformatan dan fungsionalitas tambahan dibandingkan dengan perintah echo.

Jika Anda belum pernah menggunakan perintah echo sebelumnya, kami memiliki artikel rinci tentang hal itu yang harus Anda lihat.
Bash Perintah Echo Dijelaskan Dengan Contoh Di Linux
Printf adalah shell built-in, tetapi Anda juga dapat menemukan perintah eksternal untuk printf. Builtin lebih diutamakan daripada perintah eksternal. Anda bisa mendapatkan informasi ini dengan menjalankan perintah type seperti yang ditunjukkan di bawah ini.

$ type -a printf printf is a shell builtin printf is /usr/bin/printf printf is /bin/printf

Untuk detail lebih lanjut tentang perintah type, lihat panduan berikut :
Tutorial Perintah Ketik Dengan Contoh Untuk Pemulas
Jika Anda ingin menjalankan versi eksternal printf, Anda harus menunjuk ke path direktori lengkap tempat biner berada.

$ printf "Hello Worldn" # SHELL BUILTIN$ /usr/bin /printf "Hello Worldn" # VERSI EKSTERNAL PRINTF

Display Bash printf help

Seperti yang saya sebutkan di bagian sebelumnya, printf adalah bawaan bash. Anda harus membuka halaman manual bash dan menavigasi ke bagian printf.

$ man bash/printf → presss

Anda juga dapat menjalankan perintah berikut yang akan menampilkan bagian bantuan printf dari halaman manual bash.

$ man bash | less --pattern='^ *printf +['

Basic form of printf command

Melalui contoh, saya akan membandingkan printf dengan perintah echo untuk memahami kesamaannya.

Di bawah ini adalah format untuk perintah printf:

printf [-v var] format [argumen]

Arguments harus diteruskan ke printf jika tidak maka akan gagal seperti yang ditunjukkan pada gambar di bawah ini.

$ printf$ echo $?

Pass argumen dan jalankan perintah printf lagi. Dari contoh di bawah ini Anda dapat melihat saya telah menambahkan n yang merupakan karakter baris baru. Secara default, printf tidak akan menambahkan baris baru seperti perintah echo, jadi Anda harus menambahkan n.

$ printf “Linux menyenangkan untuk digunakan” # TANPA GARIS BARU$ printf “Linux menyenangkan untuk bekerja dengann” # DENGAN Variabel LINE
BARU dan interpretasi perintah

Anda dapat menyertakan variabel apa pun atau menjalankan perintah dalam pernyataan printf. Perilaku ini mirip dengan perintah echo.

$ VAR1="Linux"$ printf "$VAR1 menyenangkan untuk digunakann"

Disarankan baca:
Bash Scripting – Variabel Dijelaskan Dengan ContohPerilaku tanda kutip tunggal vs ganda

Ketika Anda menyertakan argumen Anda dengan satu mengutip variabel dan perintah akan diperlakukan sebagai teks biasa. Ini adalah perilaku yang sama dalam perintah echo juga. Anda harus menyertakan argumen dengan tanda kutip ganda jika Anda ingin variabel dan perintah diperluas.

$ printf '$VAR1 menyenangkan untuk digunakann'$ printf 'Tanggal hari ini = $(tanggal)n'

Ketika Anda lulus argumen tanpa tanda kutip, printf hanya akan mempertimbangkan kata pertama sebagai argumen dan mencetaknya. Jadi menggunakan tanda kutip di sekitar printf diperlukan.

$ printf Today date = $(date)n

Mengarahkan dan menyalurkan output

Secara default, printf akan mengirimkan output ke stdout (terminal). Anda dapat mengarahkan output ke file menggunakan operator redirection atau menggabungkannya dengan operator pipa untuk diproses lebih lanjut.

# PRINT TO STDOUT $ printf "Hari ini tanggal = $(tanggal)n"
# REDIRECT TO A FILE $ printf " Tanggal hari ini = $(tanggal)n" > /tmp/tdy.txt $ cat /tmp/tdy.txt
# PIPE $ printf "Tanggal hari ini = $(tanggal)n" | grep -i -o IST

Related read:
Bash Redirection Dijelaskan Dengan ContohMenetapkan output ke variabel

Terkadang Anda mungkin ingin menyimpan output printf ke variabel dan menggunakannya nanti untuk beberapa pemrosesan. Biasanya Anda akan menjalankan printf yang diapit dengan tanda kurung yang akan menjalankan perintah dan menetapkan output ke variabel.

$ ZONE=$(printf "Hari ini tanggal = $(tanggal)n" | grep -i -o IST)$ printf $ZONE

Sebagai alternatif, Anda dapat menggunakan flag -v bersama dengan printf untuk menyimpan output ke variabel. Anda harus memasukkan nama variabel setelah -v flag.

$ printf -v # SYNTAX$ printf -v TIME "Hari ini tanggal = $(tanggal)n"$ echo $TIME

MultiLine printf statement

Bila Anda memiliki lebih dari satu baris untuk dicetak, maka Anda dapat melampirkan teks dalam tanda kutip ganda. Demikian pula, jika Anda memiliki garis besar untuk dicetak sebagai satu baris dan ingin menulis baris dalam multi-baris untuk keterbacaan kode yang lebih baik, Anda dapat menggunakan garis miring terbalik di akhir setiap baris di mana baris berikutnya akan dianggap sebagai lanjutan ke baris sebelumnya.

$ printf "n Saya menjalankan PoP_OSIni adalah OS yang hebatDengan Fitur hebatn"
$ printf "Saya menjalankan pop_os Ini adalah OS yang hebat Dengan fitur hebatn"

Backslash karakter yang lolos

Anda bisa gunakan karakter garis miring terbalik berikut di printf.
Karakter baris baru (n)Tab Horizontal (t) dan Tab Vertikal (v)Karakter spasi mundur (b)Carriage return (r)
Mari kita bahas satu per satu dengan contoh.
Karakter baris baru (n)

Kita telah melihat tentang karakter baris baru (n) di semua bagian sebelumnya. Karakter baris baru (n) akan menambahkan baris baru.

$ printf "Tanggal hari ini = $(tanggal)n"

Tab horizontal (t) dan tab vertikal(v)

Karakter tab horizontal dan vertikal digunakan untuk menambahkan spasi tab to your printf argument.

$ printf "Tanggal hari ini t $(tanggal)n" # HORIZONTAL TAB$ printf "Tanggal hari ini v $(tanggal)n" # VERTICAL TAB

Backspace character (b)

Backspace character (b ) akan menghapus satu huruf. Ini seperti menekan tombol Backspace dari keyboard kita.

$ printf "Hari ini hujann"

Carriage return (r)

Kursor disetel kembali ke posisi pertama saat carriage return (r) digunakan. Apa pun yang muncul setelah r akan menggantikan karakter dari posisi pertama.

$ printf "Hari ini hujannrn"

Escape karakter garis miring terbalik ()

Jika Anda ingin menghindari karakter khusus (n, t, v, b, r) dan perlakukan seperti string lalu awali dengan garis miring terbalik ganda ().

$ printf "Hari ini hujannn"

Apa pun yang Anda lihat sampai sekarang, Anda juga dapat menemukan rangkaian operasi yang sama dalam perintah echo. Jika Anda sudah mengetahui perintah echo, saat ini Anda akan merasa sangat nyaman dengan perintah printf juga. Penentu format
Printf Penentu format

adalah cara untuk mengganti nilai di printf alih-alih mengkodekan nilai di printf. Ada banyak huruf yang digunakan untuk substitusi dan setiap huruf mewakili tipe data tertentu. Saat menggunakan specifier, Anda harus mengawalinya dengan simbol %. Mari kita lihat beberapa format specifier yang umum digunakan.
String specifier (%s)

Jika Anda ingin menempatkan string di dalam printf, Anda harus menggunakan %s. Lihatlah contoh di bawah ini. Saya memiliki pernyataan printf dan saya ingin mengganti nilai “Bersatu” di dalam printf. Jadi %s digunakan yang merupakan penentu string dan ketika Anda menjalankan perintah, nilai “bersatu” akan menggantikan %s.

$ printf "++ Manchester %s memiliki barisan yang kuat musim ini" "Bersatu"

You dapat meneruskan argumen substitusi sebanyak yang Anda inginkan dan Anda harus menggunakan jumlah penentu yang sama di dalam argumen.

$ printf "++ %s %s memiliki barisan yang kuat %s ini" "Manchester" "United" "musim" 

Bagaimana jika lebih sedikit penentu dan lebih banyak argumen yang digunakan?

Lihat contoh di bawah ini. Saya hanya menggunakan satu penentu di awal dan telah melewati tiga argumen (string) untuk diganti. Cara printf memperlakukan ini, ia akan mulai mengganti argumen pertama di penentu pertama dan argumen berikutnya akan diteruskan lagi ke penentu pertama karena tidak ada penentu lain. Dengan cara ini akan terjadi tiga pergantian pemain yang sebenarnya tidak benar dan hasil yang kita inginkan.

$ printf "++ %s United memiliki lineup yang kuat Musim inin" "Manchester" "United" "season"

Ada beberapa kegunaan kasus di mana perilaku ini masuk akal. Lihatlah contoh di bawah ini. Saya ingin mencetak pesan selamat datang untuk beberapa pemain dan memberikan nama mereka sebagai argumen. Biasanya Anda dapat menyimpan daftar nama dalam array dan mengulang melalui array dan mencetak pesan. Tapi ini adalah cara yang efektif untuk mencapai hasil dengan menghindari penggunaan loops.

$ printf "++ Selamat datang %s ke manchester unitedn" "Ronaldo" "Varane" "Jadon Sanchon" ++ Selamat datang Ronaldo di manchester bersatu ++ Selamat datang Varane di manchester united ++ Selamat datang Jadon Sancho di manchester united

Bilangan bulat desimal bertanda (%d) dan bilangan bulat desimal tidak bertanda (%u)

Untuk mengganti bilangan bulat tunggal, gunakan %d.

$ printf ">> Selamat datang %s ke manchester united - Anda mendapatkan nomor baju - %dn" "Ronaldo" 7 "Varane" 19 "Jadon Sancho" 25

Untuk mengganti nomor unsigned integer, gunakan %u.

$ printf "UNSIGNED INTEGER = %un" 10

Jika Anda mencoba untuk mengganti tipe data selain integer Anda akan mendapatkan error.

$ printf ">> Ronaldo tidak mendapatkan %dn" seven

Floating point number (%f)

Untuk mengganti angka floating point, gunakan %f.

$ printf "Integer 100 ke floating-point %fn" 100

Menafsirkan urutan escape backslash

Anda dapat melewati backslash e urutan scape sebagai argumen dan gunakan %b yang akan menafsirkan dan memperluas urutan garis miring terbalik.

$ printf "Selamat datang di %b Manchester united %b" "v" "n"

Printf arahan konversi

Ada pengubah konversi opsional yang dapat digunakan untuk memformat output printf Anda.

<

pre>%[flags][width][.precision]specifierypreWidth modifier

Pengubah lebar menentukan jumlah minimum karakter dalam konversi. Jika jumlah karakter lebih sedikit, maka akan diberi awalan spasi seperti di bawah ini.

$ printf "%10sn" "Ronaldo"

Jika Anda perhatikan gambar di atas, specifier (Ronaldo) adalah 7 karakter dan saya telah menentukan lebar menjadi 10. Dalam hal ini, itu akan menambahkan spasi untuk membenarkan lebar 10.

Anda juga dapat menggunakan pengubah bendera untuk membenarkan perataan atau menambahkan nol sebagai ganti spasi. Misalnya, jika output harus rata kiri maka Anda dapat menambahkan pengubah flag tanda hubung (-).

$ printf "%-10sn" "Ronaldo"

Dalam hal nilai integer dan floating-point, Anda dapat ganti spasi dengan nol dengan menambahkan pengubah bendera nol (0).

$ printf "%010d n" 7

Pengubah presisi

Ini adalah parameter opsional yang dapat digunakan untuk menentukan jumlah string, bilangan bulat, dan posisi titik-mengambang yang akan dicetak. Anda harus menggunakan titik (.) diikuti dengan bilangan bulat untuk menentukan jumlah posisi yang akan dicetak.

Perhatikan contoh di bawah ini. Saya menggunakan penentu string dan mengatur pengubah presisi ke four.

$ printf "%.7sn" "Ronaldo telah bergabung dengan Manu"

Asterisks (*) dapat diteruskan alih-alih nilai integer presisi. Tanda bintang akan menerima argumen untuk presisi, bukan hard-coding nilai presisi.

$ printf "%.*sn" 7 "Ronaldo telah bergabung dengan Manu"

Conclusion

Kami telah membahas sedikit informasi tentang perintah Bash printf dalam artikel ini. Untuk menggunakan printf dengan nyaman, cukup praktikkan semua contoh yang diberikan dalam artikel. Printf jauh lebih kuat dalam memformat daripada contoh yang saya tunjukkan di artikel ini. Jika Anda merasa nyaman dengan dasar-dasarnya, tergantung pada kasus penggunaan, Anda dapat menggunakan printf secara efisien.

Related read:
Bash Scripting – Indexed Array Dijelaskan Dengan ContohBash Scripting – Associative Array Dijelaskan Dengan ContohBash Scripting – Sementara Dan Sampai Loop Dijelaskan Dengan ContohBash Scripting – Untuk Loop Dijelaskan Dengan Scripting ExampleBash – Fungsi Dijelaskan Dengan Tutorial ExampleBash Heredoc Untuk Pemula

Wagiman Wiryosukiro

Petani Sistem Informasi, tukang las plugin & themes Wordpress. Co-Founder SistemInformasi.biz. Saat ini aktif sebagai Developer & kontributor di OpenMandriva Linux.

You may also like...

%d bloggers like this: