Ketika saya memasukkan tanda kutip tunggal '
di terminal ia pergi ke beberapa mode lain, dan perintah tidak dijalankan. Apa mode ini dan kapan kita menggunakannya?
root@sai:~# '
> ls
> '
ls
: command not found
root@sai:~#
command-line
bash
manikanta
sumber
sumber
'
)Jawaban:
Secara efektif, shell meminta perintah / ekspresi lengkap , dan untuk alasan itu menampilkan
PS2
string yang cepat.Dari
man bash
:Dan sedikit sebelum itu:
Jadi, seperti yang Anda tebak dari membaca dokumentasi, shell memiliki banyak prompt dengan tujuan berbeda. The
PS1
prompt Andaroot@sai:~#
string, yang muncul biasanya ketika Anda memasukkan perintah.>
adalahPS2
prompt. Ada juga yang lain:PS3
untukselect
blok perintah danPS4
untuk debugging denganset -x
perintah. Dalam hal ini kami lebih tertarikPS2
.Ada banyak cara di mana shell dapat menampilkan
PS2
prompt (dan di mana menyelesaikan perintah pada baris baru mungkin diperlukan). Prompt yang sama digunakan ketika Anda melakukanhere-doc
redirection (di mana perintah dianggap selesai ketika Anda melihat string terminating, dalam contoh ini,EOF
):Seringkali kelanjutan dari perintah yang panjang dapat dilakukan dengan menambahkan
\
dan segera (!) Baris baru, yang akan menyebabkan prompt yang sama muncul:Ketika pipa, operator logika, atau kata kunci khusus muncul di baris perintah sebelum baris baru, perintah juga dianggap tidak lengkap sampai semua pernyataan akhir dimasukkan:
Dalam kasus khusus Anda, kutipan tunggal menyiratkan interpretasi literal tentang apa yang ada di antara kutipan tunggal. Jadi, seperti yang ditunjukkan Zanna, Anda memasukkan perintah yang terdiri dari baris baru +
ls
+ baris baru. Nama file yang dapat dieksekusi tersebut tidak dapat ditemukan (dan biasanya nama file perintah harus hanya terdiri dari karakter alfanumerik, ditambah garis bawah, garis putus-putus, dan titik). Meskipun memang mungkin untuk memiliki nama file yang mengandung karakter khusus di dalamnya, selalu dihindari.CATATAN : perilaku seperti yang diperlihatkan dalam contoh Anda khusus untuk cangkang mirip Bourne, termasuk
bash
,dash
(di Ubuntu disinkronkan dengan/bin/sh
) ,,,ksh
danmksh
.csh
dan turunannya tidak berlaku seperti itu:Namun, dalam mode interaktif,
csh
akan tetap muncul?
sebagai prompt2 ketika lebih banyak input diperlukan:Lihat juga:
sumber
What's the difference between <<, <<< and < < in bash?
offline / salah.Shell hanya menunggu kutipan penutup. Ketika Anda memasukkannya, ia akan melakukan apa yang biasanya ia lakukan, dan berusaha untuk mengeksekusi perintah yang dimasukkan.
Kutipan menyebabkan shell tidak menafsirkan karakter khusus, yang berarti ekspansi tidak dilakukan. Kutipan tunggal menekan semua interpretasi karakter khusus sepenuhnya. Biasanya baris baru memisahkan perintah, tetapi di sini Anda telah memasukkan baris baru sebagai bagian dari perintah dengan mengutipnya.
Karena tidak ada perintah seperti
<newline>ls<newline>
itu, tidak ditemukan.sumber