GNU/Linux >> Belajar Linux >  >> Linux

Bash Scripting – Perintah Printf Dijelaskan Dengan Contoh

Dalam artikel ini, saya akan menjelaskan penggunaan dasar Bash printf perintah dengan contoh di Linux. Pada akhir artikel ini, Anda akan nyaman menggunakan perintah printf dalam skrip shell Bash.

Perintah printf bash

Peluk menawarkan dua jenis perintah yang dapat digunakan untuk mencetak output Anda ke terminal. Salah satunya adalah gema perintah yang banyak digunakan untuk tujuan ini. Yang kedua adalah printf perintah.

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

Jika Anda belum menggunakan echo perintah sebelumnya, kami memiliki artikel terperinci tentangnya yang harus Anda lihat.

  • Perintah Bash 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 type perintah seperti yang ditunjukkan di bawah ini.

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

Untuk lebih jelasnya tentang type perintah, lihat panduan berikut:

  • Tutorial Perintah Mengetik Dengan Contoh Untuk Pemula

Jika Anda ingin menjalankan versi eksternal printf , Anda harus menunjuk ke jalur direktori lengkap tempat biner berada.

$ printf "Hello World\n" # SHELL BUILTIN
$ /usr/bin/printf "Hello World\n" # EXTERNAL VERSION OF PRINTF

Menampilkan bantuan cetak Bash

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

$ man bash
/printf → presss

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

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

Bentuk dasar perintah printf

Sepanjang contoh, saya akan membandingkan printf dengan echo perintah untuk memahami kesamaan.

Di bawah ini adalah format untuk printf perintah:

printf [-v var] format [arguments]

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

$ printf
$ echo $?

Berikan argumen dan jalankan printf perintah 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 echo perintah, jadi Anda harus menambahkan \n .

$ printf "Linux is fun to work with" # WITHOUT NEW LINE
$ printf "Linux is fun to work with\n" # WITH NEW LINE

Variabel dan interpretasi perintah

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

$ VAR1="Linux"
$ printf "$VAR1 is fun to work with\n"

Bacaan yang disarankan:

  • Bash Scripting – Variabel Dijelaskan Dengan Contoh

Perilaku tanda kutip tunggal vs ganda

Saat Anda menyertakan argumen Anda dengan tanda kutip tunggal, variabel dan perintah akan diperlakukan sebagai teks biasa. Ini adalah perilaku yang sama di echo perintah juga. Anda harus menyertakan argumen dengan tanda kutip ganda jika Anda ingin variabel dan perintah diperluas.

$ printf '$VAR1 is fun to work with\n'
$ printf 'Today date = $(date)\n'

Saat Anda memberikan argumen tanpa tanda kutip, printf hanya akan mempertimbangkan kata pertama sebagai argumen dan mencetaknya. Jadi gunakan 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 pengalihan atau gabungkan dengan operator pipa untuk diproses lebih lanjut.

# PRINT TO STDOUT
$ printf "Today date = $(date)\n"
# REDIRECT TO A FILE
$ printf "Today date = $(date)\n" > /tmp/tdy.txt
$ cat /tmp/tdy.txt
# PIPE
$ printf "Today date = $(date)\n" | grep -i -o IST

Bacaan terkait:

  • Pengalihan Bash Dijelaskan Dengan Contoh

Menetapkan output ke variabel

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

$ ZONE=$(printf "Today date = $(date)\n" | grep -i -o IST)
$ printf $ZONE

Atau, Anda dapat menggunakan -v tandai bersama dengan printf untuk menyimpan output ke variabel. Anda harus memberikan nama variabel setelah -v bendera.

$ printf -v TIME "Today date = $(date)\n"
$ echo $TIME

Pernyataan printf MultiLine

Bila Anda memiliki lebih dari satu baris untuk dicetak, maka Anda dapat menyertakan 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 I am running PoP_OS
It is a great OS
With Great features\n"
$ printf "I am running pop_os \
It is a great OS \
With Great features\n"

Karakter yang lolos dari garis miring terbalik

Anda dapat menggunakan karakter garis miring terbalik berikut di printf .

  • Karakter baris baru (\n)
  • Tab Horizontal (\t) dan Tab Vertikal (\v)
  • Karakter spasi mundur (\b)
  • Kereta pulang (\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 "Today date = $(date)\n"

Tab horizontal (\t) dan tab vertikal(\v)

Karakter tab horizontal dan vertikal digunakan untuk menambahkan spasi tab ke printf argumen.

$ printf "Today date \t $(date)\n" # HORIZONTAL TAB
$ printf "Today date \v $(date)\n" # VERTICAL TAB

Karakter spasi mundur (\b)

Karakter spasi mundur (\b ) akan menghapus satu huruf. Ini seperti menekan tombol Backspace dari keyboard kita.

$ printf "It's a rain\by day..\n"

Carriage return (\r)

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

$ printf "It's a rain\by\r day..\n"

Escape karakter backslash (\)

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

$ printf "It's a rain\\by\\r day..\n"

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

Penentu format printf

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

Penentu string (%s)

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

$ printf "++ Manchester %s has a strong lineup this season" "United"

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

$ printf "++ %s %s has a strong lineup this %s" "Manchester" "United" "season"

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

Lihatlah 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 kali pergantian pemain yang sebenarnya tidak tepat dan hasil yang kita inginkan.

$ printf "++ %s United has a strong lineup this Season\n" "Manchester" "United" "season"

Ada beberapa kasus penggunaan 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 loop.

$ printf "++ Welcome %s to manchester united\n" "Ronaldo" "Varane" "Jadon Sancho\n"
++ Welcome Ronaldo to manchester united
++ Welcome Varane to manchester united
++ Welcome Jadon Sancho to manchester united

Integer desimal bertanda (%d) dan integer desimal tidak bertanda (%u)

Untuk mengganti bilangan bulat yang hilang, gunakan %d .

$ printf ">> Welcome %s to manchester united - You get shirt number - %d\n" "Ronaldo" 7 "Varane" 19 "Jadon Sancho" 25

Untuk mengganti bilangan bulat tak bertanda, gunakan %u .

$ printf "UNSIGNED INTEGER = %u\n" 10

Jika Anda mencoba mengganti tipe data apa pun selain integer, Anda akan mendapatkan kesalahan.

$ printf ">> Ronaldo gets no %d\n" seven

Angka titik mengambang (%f)

Untuk mengganti angka floating point, gunakan %f .

$ printf "Integer 100 to floating-point %f\n" 100

Menafsirkan urutan escape backslash

Anda dapat meneruskan urutan escape backslash sebagai argumen dan menggunakan %b yang akan menginterpretasikan dan memperluas urutan escape backslash.

$ printf "Welcome to %b Manchester united %b" "\v" "\n"

Petunjuk konversi printf

Ada pengubah konversi opsional yang dapat digunakan untuk memformat printf keluaran.

%[flags][width][.precision]specifier

Pengubah lebar

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

$ printf "%10s\n" "Ronaldo"

Jika Anda perhatikan gambar di atas, specifier (Ronaldo) adalah 7 karakter dan saya telah menentukan lebarnya 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 alih-alih spasi. Misalnya, jika output harus rata kiri, Anda dapat menambahkan tanda hubung (- ) pengubah bendera.

$ printf "%-10s\n" "Ronaldo"

Dalam hal nilai integer dan floating-point, Anda dapat mengganti 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, integer, dan posisi floating-point yang akan dicetak. Anda harus menggunakan dot(.) diikuti oleh bilangan bulat untuk menentukan jumlah posisi yang akan dicetak.

Lihatlah contoh di bawah ini. Saya menggunakan penentu string dan menyetel pengubah presisi ke empat.

$ printf "%.7s\n" "Ronaldo has joined Manu"

Tanda bintang (* ) dapat diteruskan sebagai ganti nilai bilangan bulat presisi. Tanda bintang akan menerima argumen untuk presisi, bukan hard-coding nilai presisi.

$ printf "%.*s\n" 7 "Ronaldo has joined Manu"

Kesimpulan

Kami telah membahas sedikit informasi tentang perintah Bash printf dalam artikel ini. Untuk menggunakan printf dengan nyaman, praktikkan saja 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 efisien.

Bacaan terkait:

  • Bash Scripting – Array Terindeks Dijelaskan Dengan Contoh
  • Bash Scripting – Array Asosiatif Dijelaskan Dengan Contoh
  • Bash Scripting – Sementara Dan Sampai Perulangan Dijelaskan Dengan Contoh
  • Skrip Bash – Untuk Pengulangan Dijelaskan Dengan Contoh
  • Bash Scripting – Fungsi Dijelaskan Dengan Contoh
  • Tutorial Bash Heredoc Untuk Pemula

Linux
  1. Perintah shutdown Linux Dijelaskan dengan Contoh

  2. Perintah Traceroute Linux, Dijelaskan dengan Contoh

  3. '&&' vs. '&' dengan perintah 'test' di Bash

  1. Tutorial Bash HereDoc Dengan Contoh

  2. Perintah potong Linux Dijelaskan dengan 6 Contoh

  3. Perintah Bash printf

  1. Perintah Linux ldd Dijelaskan dengan Contoh

  2. Perintah Bash Echo Dijelaskan Dengan Contoh Di Linux

  3. Bash Scripting – Sementara Dan Sampai Loop Dijelaskan Dengan Contoh