คำเตือน: ไม่ได้เปิดใช้งานการแก้ไขสาย


21

ฉันพบคำสั่งที่มีประโยชน์นี้bind -x '"\C-r"':resetเพื่อล้างข้อมูลเทอร์มินัล แต่ฉันต้องการสร้างสคริปต์ทุบตีง่ายๆ:

#!/bin/bash
bind -x '"\C-r"':reset

เอาท์พุท:

alfred@alfred-laptop:~/bash$ ./bind 
./bind: line 2: bind: warning: line editing not enabled

มีคนช่วยอธิบายได้ไหม:

  1. ฉันจะแก้ไขสิ่งนี้ได้อย่างไร
  2. อะไรwarning: line editing not enabledหมายถึง?

ฉันแก้ไขสิ่งนี้โดยใช้echo -e '\0033\0143'ขอบคุณsuperuser.com/questions/122911/bash-reset-and-clear-commands/ ......แต่ฉันยังต้องการทราบว่าข้อผิดพลาดนี้มีความหมายอย่างไรและจะแก้ไขอย่างไร ขอบคุณมาก.
อัลเฟรด

@quircle ขอบคุณสำหรับการปรับปรุงที่ดี คุณอาจรู้คำตอบสำหรับคำถามของฉัน: P?
อัลเฟรด

4
สำหรับบันทึก (เพราะยังไม่ได้รับคำตอบจริงๆ): คุณจะได้รับ "การแก้ไขสายไม่ได้เปิดใช้งาน" เพราะใน bash ที่วางไข่เมื่อคุณเรียกใช้งานสคริปต์ของคุณจะไม่เปิดใช้งานและคุณต้องทำเอง .eg โดยการแทรก a set -o emacsหรือset -o viเข้าไปในสคริปต์ของคุณ (ก่อนหน้าbindนั้นแน่นอน)
Elmar Zander

คำตอบ:


10

คุณต้องระบุที่มาสคริปต์ ทำ. ./bindหรือsource ./bindเพื่อให้การเชื่อมโยงคีย์นั้นแอ็คทีฟในเซสชันปัจจุบัน

การรันตามปกติไม่มีเทอร์มินัลเพื่อให้ข้อความแสดงข้อผิดพลาดนั้นแก่คุณ นอกจากนี้หากต้องใช้งานจะทำงานเฉพาะในช่วงเวลาของสคริปต์

หากคุณต้องการให้การผูกคีย์นั้นยังคงอยู่ให้เพิ่มคำสั่ง~/.bashrcนั้นลงใน


1. ฉันรู้เกี่ยวกับความเพียร 2. ตัวอย่างของคุณใช้งานได้ แต่เพิ่มความซับซ้อนในการใช้คำสั่ง (ในความคิดของฉัน) ผมคิดว่าตอนนี้ฉันรู้นี้ sourceแต่ผมอยากจะมีไฟล์ง่ายทุบตีที่ฉันสามารถทำงานได้โดยไม่นี้
อัลเฟรด

2
@alfredwesterveld: ถ้าคุณไม่ต้องการให้มีผลผูกพันโหลดทุกครั้งที่คุณเริ่มต้นเปลือก แต่คุณต้องการที่จะสามารถเปิดใช้งานได้ตลอดเวลาโดยไม่ต้องใช้sourceหรือจุด ( .), เพิ่มฟังก์ชั่นที่คุณ~/.bashrc: rbind () { bind -x '"\C-r"':reset; }แล้วคุณสามารถป้อนrbindโดย ตัวเองเป็นคำสั่งและการเชื่อมโยงจะถูกเปิดใช้งาน
หยุดชั่วคราวจนกว่าจะมีการแจ้งให้ทราบต่อไป

9

ฉันมีข้อความที่คล้ายกัน แต่ของฉันมาจากสคริปต์ที่ทำงานอยู่นอกเปลือกโต้ตอบ (เข้าสู่ระบบ); มันเป็นเชลล์สคริปต์ที่ถูกเรียกใช้ผ่านสคริปต์ CGI ข้อความของฉันคือ:

/home/richard/.bash_profile: line 4: bind: warning: line editing not enabled

และถึงแม้ว่ามันจะไม่ได้อยู่บนบรรทัดที่ 4 แต่เพียงอย่างเดียวbindในไฟล์นั้นคือ:

bind 'set completion-ignore-case on'

หลักสูตรใดที่เหมาะสมถ้าเปิดใช้งานการแก้ไขบรรทัดเช่นถ้าเป็นเชลล์แบบโต้ตอบ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.