Saya menggunakan Ubuntu 14.04 dan saya memiliki masalah aneh dengan layar terminal saya yang banyak mengganggu saya. Bisakah seseorang membantu saya dengan itu atau menjelaskan saya jika saya melakukan sesuatu yang salah atau non-cara linux? Saya punya semacam solusi tetapi saya ingin mengerti mengapa ini terjadi berulang kali.
Saya sering menyalin perintah bash dari catatan saya atau dari Internet dan kadang-kadang saya mendapatkan simbol 0 ~ dan 1 ~ aneh yang membungkus hal-hal yang saya salin. Ini sangat menjengkelkan dan ini terjadi secara acak.
Setelah pencarian yang panjang saya menemukan bahwa hal ini disebut mode pasta bracked jadi sekarang saya menggunakan perintah ini printf "\e[?2004l"
untuk memperbaiki terminal saya jika mode ini tiba-tiba diaktifkan.
Apakah mungkin menonaktifkan fitur ini secara permanen? Saya berhadapan dengannya di semua mesin Ubuntu tempat saya bekerja sekarang. Sebelumnya saya menggunakan Ubuntu 10.10 dan 12.04 dan saya belum pernah mengalami masalah seperti itu sebelumnya.
sumber
bind
mem-parsing argumen yang tidak dikenali, itulah yang akan terjadi jika Anda menjalankan perintah ini menggunakan Readline sebelum versi 7 atau Bash sebelum 4.4. Jawaban ini tidak akan melakukan apa pun yang berguna sampai rilis Ubuntu berikutnya (17.04).printf
pendekatan bekerja, tapi itu tidak bekerja ketika dimasukkan ke dalam saya.bashrc
, dan fitur entah bagaimana mati sendiri kembali secara berkala. Thebind
Pendekatan istirahat keyboard (p
tombol tidak bekerja, and putting that line in my
~ / .inputrc` karya, selama 10 detik, dan kemudian konsol dimulai barfing keluar-enaset-enaset-...
selamanya setelah 10 detik dari penggunaan. Saya akhirnya hanya secara manual upgrade ke pesta 4,4 dari sumber untuk memperbaiki bodoh masalahbind 'set enable-bracketed-paste off'
(dengan spasi alih-alih `-`` pertama. Mengedit hanya satu karakter tampaknya tidak mungkin.Anda dapat menempatkan perintah itu di
bashrc
. Maka itu akan berlaku setiap kali Anda membuka terminal Anda.Cukup ketik
vi ~/.bashrc
dan tambahkanprintf "\e[?2004l"
di bagian akhir dan simpan file dengan:wq
sumber
echo 'printf "\e[?2004l"' >> ~/.bashrc
melakukan hal yang sama dalam satu baris, dan Anda dapat memverifikasinyatail -n1 ~/.bashrc
. Tidak perlu digunakanvi
.Untuk menjawab pertanyaan awal Anda mengapa hal ini terjadi, berikut ini skenario yang mungkin:
Masalahnya adalah, program terminal saya masih menganggap braket tempel diaktifkan ketika sshing dari shell A ke shell B, jadi itu terus menambahkan karakter di sekitar konten yang Anda tempelkan (0 ~ dan 1 ~ bit). Shell B tidak mendukung mereka sehingga hanya melewati mereka tanpa perubahan. Anda harus memberi tahu terminal Anda untuk mematikan pasta yang diberi tanda kurung dengan meminta shell Anda mencetak urutan pelarian khusus - yang memang
printf "\e[?2004l"
demikian.Ada beberapa cara untuk mengatasi masalah ini:
Jika Anda sama sekali tidak peduli dengan braket tempel, matikan pada shell A sehingga tidak pernah diaktifkan di tempat pertama (@ jwd's answer)
Jika Anda ingin terus menggunakan kurung kurung pada shell A, tetapi nonaktifkan pada shell B, tambahkan urutan escape ke
.bashrc
(@ jawaban MOHRE) AndaMutakhirkan shell B untuk mendukung pasta yang diberi tanda kurung, sehingga menafsirkan dengan benar 0 ~ dan 1 ~ karakter tersebut.
Catatan: jika Anda menggunakan layar GNU, Anda harus menjalankan
printf
perintah itu di luar layar. Sepertinya tidak berfungsi saat di dalam.sumber