Ketika Anda menempelkan beberapa perintah di terminal, terkadang perintah itu akan secara otomatis menjalankan perintah (seperti jika tombol "Enter" ditekan), terkadang tidak.
Saya telah menggunakan Linux sejak lama, menyisipkan ribuan perintah di berbagai konsol di banyak distro, dan saya masih tidak dapat memastikan apakah perintah yang akan saya tempel akan dieksekusi secara otomatis atau tidak.
Apa yang memicu perilaku ini?
{
(dengan spasi) sebelum menempel, lalu akhiri dengan}
. Ini tidak berpengaruh pada cara kerja perintah yang ditempelkan, tetapi mencegah shell dari mengeksekusinya sampai Anda menutup blok. Dijelaskan di sini [ gnu.org/software/bash/manual/html_node/Command-Grouping.html]Jawaban:
Ini adalah karakter kembali dalam teks yang Anda salin yang memicu eksekusi otomatis.
Mari kita ambil contoh lain, salin semua baris ini sekaligus dan tempel ke terminal Anda:
Jika Anda melihat di terminal Anda, Anda tidak akan melihat ini:
Anda akan melihat ini (mungkin juga ada baris yang mengatakan
World
):Alih-alih menunggu semua input untuk ditempelkan, baris pertama dijalankan (dan untuk alasan yang sama, baris kedua mungkin atau mungkin tidak melakukannya juga). Ini karena ada
RETURN
karakter antara dua garis.Ketika Anda menekan
ENTER
tombol pada keyboard Anda, semua yang Anda lakukan adalah mengirim karakter dengan nilai ASCII13
. Karakter itu terdeteksi segera oleh terminal Anda, dan tahu itu memiliki instruksi khusus untuk mengeksekusi apa yang Anda ketikkan sejauh ini.Ketika disimpan di komputer Anda atau dicetak di layar Anda,
RETURN
karakternya sama seperti huruf lain dari alfabet, angka, atau simbol. Karakter ini dapat dihapus dengan backspace, atau disalin ke clipboard sama seperti karakter biasa lainnya.Satu-satunya perbedaan adalah, ketika browser Anda melihat karakter, ia tahu bahwa alih-alih mencetak karakter yang terlihat, ia harus memperlakukannya secara berbeda, dan memiliki instruksi khusus untuk memindahkan set teks berikutnya ke baris berikutnya. The
RETURN
karakter danSPACE
karakter (ascii32
), bersama dengan beberapa karakter lain jarang digunakan, dikenal sebagai "non-cetak karakter" untuk alasan ini.Terkadang ketika Anda menyalin teks dari situs web, sulit untuk menyalin hanya teks dan bukan pengembalian di akhir (dan sering menjadi lebih sulit dengan gaya pada halaman).
Waktu percobaan!
Di bawah ini Anda akan menemukan dua perintah yang akan menggambarkan masalah, dan Anda dapat "berlatih". Mulai kursor tepat sebelum
echo
dan seret sampai sorotan tepat sebelum panah:Dan sekarang coba perintah kedua. Mulai kursor Anda tepat sebelum
echo
dan seret ke bawah hingga kursor berada di baris kedua, tetapi tepat di depan<-
panah. Salin, lalu tempel ke terminal Anda:Bergantung pada browser Anda, bahkan mungkin tidak terlihat bahwa teks yang Anda pilih melewati dua baris. Tetapi ketika Anda menempelkannya ke terminal, Anda akan menemukan bahwa itu mengeksekusi baris, karena itu menemukan
RETURN
karakter dalam teks yang disalin.sumber
Saat Anda memilih teks, jika Anda memasukkan baris (tidak terlihat) di akhir baris, itu akan menjadi teks yang ditempel. Itu konsisten di semua emulator terminal yang saya tahu. Baris baru melakukan apa yang Anda sebut "validasi".
Pada beberapa sistem (seperti yang menggunakan terminal sinkron seperti IBM 3270), Enterkuncinya akan "memvalidasi" layar dengan menyalin semua perubahan ke host.
sumber
Jawaban lain telah menjawab pertanyaan dengan baik, tetapi saya pikir saya juga akan membagikan solusi untuk mencegah hal ini terjadi secara tidak sengaja jika Anda menggunakan Putty pada Windows - lihat /server/731022/prevent-accidental -eksekusi-of-perintah-di-linux-jika-paste-berisi-teks untuk rincian.
sumber
Karakter baris baru.
sumber