Cara Menggunakan Perintah Echo di Linux

The echoarahan sesuai untuk menulis teks diformat ke tetingkap terminal. Dan tidak semestinya teks statik. Ini boleh merangkumi pemboleh ubah shell, nama fail, dan direktori. Anda juga boleh mengarahkan gema untuk membuat fail teks dan fail log. Ikuti panduan ringkas ini untuk mengetahui caranya.

Echo Mengulangi Apa yang Anda Katakan untuk Diulang

Zeus gemar meninggalkan Gunung Olympus untuk bersekutu dengan nimfa yang cantik. Dalam satu perjalanan, dia memberitahu seorang nimfa gunung yang disebut Echo untuk memerintahkan isterinya, Hera, jika dia mengikutinya. Hera datang mencari Zeus, dan Echo berusaha sedaya upaya agar Hera terus berbual. Akhirnya, Hera hilang sabar dan mengutuk Echo yang malang sehingga dia hanya mengulangi kata-kata terakhir yang diucapkan oleh orang lain. Apa yang Hera lakukan kepada Zeus ketika dia mengejarnya adalah dugaan siapa pun.

Dan itu, cukup banyak, echodalam kehidupan. Ia mengulangi apa yang diberitahu untuk diulang. Itu fungsi yang mudah, tetapi yang penting. Tanpa echo, kita tidak dapat memperoleh output yang dapat dilihat dari skrip shell, misalnya.

Walaupun tidak dibebani dengan banyak loceng dan wisel, ada peluang baik yang echomempunyai beberapa kemampuan yang tidak anda ketahui atau yang anda lupakan.

bergema? bergema!

Sebilangan besar sistem Linux menyediakan dua versi echo. Shell Bash mempunyai echobinaannya sendiri , dan terdapat versi binari yang dapat dilaksanakan echojuga.

Kita dapat melihat dua versi yang berbeza dengan menggunakan perintah berikut:

taipkan gema
di mana gema

The typearahan memberitahu kita sama ada arahan kita lulus kepadanya sebagai hujah ialah builtin shell, boleh laku perduaan, alias, atau fungsi. Ia melaporkan kepada kita bahawa itu echoadalah shell builtin.

Sebaik sahaja mendapat jawapan, typeberhenti mencari perlawanan yang lebih jauh. Oleh itu, ia tidak memberitahu kita jika terdapat perintah lain dengan nama yang sama di dalam sistem. Tetapi ia memberitahu kita mana yang pertama dijumpainya. Dan itulah yang akan digunakan secara lalai ketika kita mengeluarkan perintah itu.

Yang whereiskelihatan arahan untuk boleh laku perduaan, kod sumber, dan halaman lelaki untuk arahan kita lulus kepadanya sebagai parameter baris arahan itu. Ia tidak mencari shell builtin kerana mereka tidak mempunyai binary yang boleh dilaksanakan. Mereka adalah bahagian tidak terpisahkan dari Bash yang dapat dilaksanakan.

The whereislaporan arahan yang echoadalah laku perduaan terletak di /bindirektori.

Untuk menggunakan versi itu, echoanda perlu memanggilnya secara eksplisit dengan memberikan jalan ke yang dapat dijalankan pada baris perintah:

/ bin / gema - penukaran

Shell shell tidak tahu apa --versionargumen baris perintah itu, hanya mengulanginya di tetingkap terminal:

gema - penukaran

Contoh yang ditunjukkan di sini semuanya menggunakan versi lalai echo, dalam shell Bash.

Menulis Teks ke Terminal

Untuk menulis rentetan teks sederhana ke tetingkap terminal, ketik echodan rentetan yang anda mahu paparkan:

echo Nama saya Dave.

Teks diulang untuk kita. Tetapi semasa anda bereksperimen, anda akan segera mengetahui bahawa perkara boleh menjadi lebih rumit. Lihat contoh ini:

echo Nama saya Dave dan saya geek.

Tingkap terminal memaparkan   > tanda dan duduk di sana, menunggu. Ctrl + C akan mengembalikan anda ke command prompt. Apa yang berlaku di sana?

Petikan tunggal atau kerasulan dalam perkataan "Saya" keliru echo. Ia mentafsirkan petikan tunggal itu sebagai permulaan bahagian teks yang dipetik. Kerana tidak mengesan petikan tunggal penutup,  echosedang menunggu lebih banyak input. Ia menjangkakan bahawa input lebih lanjut akan memasukkan petikan tunggal yang hilang yang ditunggu-tunggu.

Untuk memasukkan satu petikan dalam rentetan, penyelesaian paling mudah adalah membungkus keseluruhan rentetan dalam tanda petik berganda:

echo "Nama saya Dave dan saya geek."

Membungkus teks anda dalam tanda petik berganda adalah nasihat umum yang baik. Dalam skrip, ia dengan jelas membatasi parameter yang anda sampaikan echo. Ini menjadikan pembacaan - dan penyahpepijatan - skrip menjadi lebih mudah.

Bagaimana jika anda mahu memasukkan watak petikan ganda dalam rentetan teks anda? Itu mudah, letakkan garis miring terbalik \di hadapan tanda petik berganda (tanpa ruang di antara mereka).

echo "Nama saya Dave dan saya \" geek. \ ""

Ini membungkus perkataan "geek" dalam tanda petik berganda bagi kita. Kami akan melihat lebih banyak watak yang dilarikan dari garis miring terbalik ini tidak lama lagi.

Menggunakan Pemboleh ubah Dengan gema

Setakat ini, kami telah menulis teks yang telah ditentukan ke tetingkap terminal. Kita boleh menggunakan pemboleh ubah dengan echountuk menghasilkan output yang lebih dinamik dan mempunyai nilai yang dimasukkan ke dalamnya oleh shell. Kita boleh menentukan pemboleh ubah mudah dengan arahan ini:

my_name = "Dave"

Pemboleh ubah yang dipanggil my_nametelah dibuat. Telah diberikan nilai teks "Dave." Kita boleh menggunakan nama pemboleh ubah dalam rentetan yang kita sampaikan echo , dan nilai pemboleh ubah akan ditulis ke tetingkap terminal. Anda mesti meletakkan tanda dolar $di hadapan nama pemboleh ubah untuk memberitahu echobahawa ia adalah pemboleh ubah.

Ada peringatan. Sekiranya anda membungkus tali anda dalam tanda petikan tunggal, anda echo akan memperlakukan semuanya secara harfiah. Untuk mempunyai pembolehubah nilai dipaparkan, dan bukan nama pembolehubah, gunakan tanda petikan berganda.

echo 'Nama saya $ my_name'
gema "Nama saya $ my_name"

Agak pantas, perlu diulang:

  • Menggunakan tanda petikan tunggal menghasilkan teks ditulis ke tetingkap terminal secara literal .
  • Menggunakan  tanda petik berganda menyebabkan pemboleh ubah ditafsirkan - juga disebut pemboleh ubah pengembangan - dan nilainya ditulis ke tetingkap terminal.

BERKAITAN: Cara Bekerja dengan Pembolehubah di Bash

Menggunakan Perintah Dengan gema

Kita dapat menggunakan perintah dengan echodan memasukkan outputnya ke dalam string yang ditulis ke tetingkap terminal. Kita mesti menggunakan tanda dolar $seolah-olah perintah itu berubah-ubah, dan membungkus keseluruhan perintah dalam kurungan.

Kami akan menggunakan arahan tarikh. Satu petua adalah menggunakan perintah itu sendiri sebelum anda mula menggunakannya echo. Dengan cara itu, jika ada sesuatu yang salah dengan sintaks perintah anda, anda mengenal pasti dan membetulkannya sebelum memasukkannya ke dalam echoperintah. Kemudian, jika echoperintah itu tidak melakukan apa yang anda harapkan, anda akan tahu bahawa masalahnya mesti berlaku dengan echosintaks kerana anda sudah membuktikan sintaks perintah.

Oleh itu, cubalah ini di tetingkap terminal:

tarikh +% D

Dan, berpuas hati bahawa kami mendapat apa yang kami harapkan dari perintah tarikh, kami akan mengintegrasikannya ke dalam echoperintah:

echo "Tarikh hari ini ialah: $ (tarikh +% D)"

Perhatikan arahan berada di dalam kurungan dan tanda dolar $ tepat sebelum kurungan pertama.

Memformat Teks Dengan gema

Pilihan -e(aktifkan garis miring balik) membolehkan kita menggunakan beberapa watak yang dilarikan dengan garis miring terbalik untuk mengubah susun atur teks. Ini adalah watak yang dilarikan dari garis miring terbalik yang boleh kita gunakan:

  • \ a : Makluman (secara historis dikenali sebagai BEL). Ini menghasilkan bunyi amaran lalai.
  • \ b : Menulis watak ruang belakang.
  • \ c : Meninggalkan sebarang output selanjutnya.
  • \ e : Menulis watak pelarian.
  • \ f : Menulis watak suapan bentuk.
  • \ n : Menulis baris baru.
  • \ r : Menulis perjalanan pulang.
  • \ t : Menulis tab mendatar.
  • \ v : Menulis tab menegak.
  • \\ : Menulis watak garis miring terbalik.

Mari gunakan sebahagian daripadanya dan lihat apa yang mereka lakukan.

echo -e "Ini adalah baris teks yang panjang \ nmemisah tiga baris \ ndengan \ ttabs \ ton \ tthe \ tthird \ tline"

Teks dibahagikan kepada baris baru di mana kita telah menggunakan \nwatak - watak dan tab dimasukkan di mana kita telah menggunakan \twatak - watak.

echo -e "Di sini \ vare \ vvertical \ vtabs"

Seperti \nwatak baris baru, tab menegak \vmemindahkan teks ke baris di bawah. Tetapi, tidak seperti  \n watak baris baru, \vtab menegak tidak memulakan baris baru pada lajur sifar. Ia menggunakan lajur semasa.

The \baksara backspace menggerakkan kursor belakang satu aksara. Sekiranya terdapat lebih banyak teks yang akan ditulis ke terminal, teks itu akan menimpa watak sebelumnya.

gema -e "123 \ b4"

"3" ditulis lebih banyak oleh "4".

The \rwatak pembawa kembali menyebabkan  echountuk kembali ke permulaan baris semasa dan menulis sebarang teks lagi dari ruangan sifar.

echo -e "123 \ r456"

Aksara "123" diganti dengan watak "456".

The \awatak amaran akan menghasilkan "bleep." Boleh didengar Ia menggunakan suara amaran lalai untuk tema semasa anda.

echo -e "Buat b \ n"

Pilihan -n(tidak ada baris baru) bukan urutan yang dilarikan dari garis miring terbalik, tetapi ia mempengaruhi kosmetik susun atur teks, jadi kami akan membincangkannya di sini. Ini menghalang echodaripada menambahkan baris baru pada akhir teks. Perintah arahan muncul tepat selepas teks yang ditulis ke tetingkap terminal.

echo -n "tiada baris baru akhir"

Menggunakan gema Dengan Fail dan Direktori

Anda boleh menggunakan echosebagai jenis versi orang miskin ls. Pilihan anda sedikit dan jauh di antara ketika anda menggunakan echoseperti ini. Sekiranya anda memerlukan kesetiaan atau kawalan yang baik, anda lebih baik menggunakan lsdan pilihannya.

Perintah ini menyenaraikan semua fail dan direktori dalam direktori semasa:

gema *

Perintah ini menyenaraikan semua fail dan direktori di direktori semasa yang namanya dimulai dengan "D":

gema D *

Perintah ini menyenaraikan semua fail ".desktop" dalam direktori semasa:

echo * .desktop

Yeah. Ini tidak sesuai dengan echokekuatan. Gunakan ls.

Menulis ke Fail dengan gema

Kita dapat mengalihkan output dari echodan membuat fail teks atau menulis ke fail teks yang ada.

Sekiranya kita menggunakan >operator pengalihan, fail akan dibuat jika tidak ada. Sekiranya fail itu wujud, output dari echoditambahkan pada awal fail, menimpa kandungan sebelumnya.

Sekiranya kita menggunakan >>operator pengalihan, fail akan dibuat jika tidak ada. Keluaran dari echoditambahkan ke akhir fail dan tidak menimpa kandungan fail yang ada.

gema "Membuat fail baru." > sample.txt
echo "Menambah ke fail." >> sample.txt
sampel kucing.txt

Fail baru dibuat oleh perintah pertama, dan teks dimasukkan ke dalamnya. Perintah kedua menambah sebaris teks ke bahagian bawah fail. The catarahan memaparkan kandungan fail ke tetingkap terminal.

Dan tentu saja, kita boleh memasukkan pemboleh ubah untuk menambahkan beberapa maklumat berguna ke fail kita. Sekiranya fail itu adalah logfile, kami mungkin mahu cap waktu ditambahkan ke dalamnya. Kita boleh melakukannya dengan arahan seterusnya.

Perhatikan tanda petikan tunggal di sekitar parameter untuk dateperintah tersebut. Mereka menghalang jarak antara parameter yang ditafsirkan sebagai akhir senarai parameter. Mereka memastikan parameter diteruskan dengan  date betul.

echo "Logfile dimulakan: $ (tarikh + '% D% T')"> logfile.txt
catfile.txt kucing

Log log kami dibuat untuk kami dan catmenunjukkan bahawa cap data dan cap waktu kedua-duanya ditambahkan ke dalamnya.

BERKAITAN: Apakah stdin, stdout, dan stderr di Linux?

Itulah Repertoire gema

Perintah yang mudah, tetapi sangat diperlukan. Sekiranya tidak ada, kita harus menciptanya.

Shenanigans Zeus melakukan beberapa kebaikan.