Câu trả lời:
backspace chỉ di chuyển con trỏ lùi lại.
backspace(hoặc deletebất kỳ ký tự nào tùy thuộc vào cấu hình) chỉ xóa ký tự được in cuối cùng khi các điều kiện này được đáp ứng:
echo
trong ví dụ của bạnNếu bạn muốn xóa ctrong ví dụ của mình, bạn cần ghi đè lên nó bằng một ký tự khác, ví dụ:
echo "abc^H "
echo "abc^H "
không làm việc cho tôi, tuy nhiên echo -e "abc\b "
đã làm. Tôi không thể hiểu tại sao ^H
không làm việc. ps. Vỏ của tôi là bash 4.1.5.
^H
bằng cách nhập Ctrl-V
,Ctrl-H
Bằng cách nhập ^ V ^ H, bạn đang chèn mã Backspace trong chuỗi, không phát lệnh Backspace. ^ H không bắt buộc phải là một backspace phá hoại; một số phần mềm sử dụng nó để in đè.
Suy nghĩ lại: Người tạo ra tiếng vang (1) lý do rằng nếu bạn nhập ^ V và mã điều khiển, bạn làm như vậy vì bạn muốn một quy trình khác, không phải tiếng vang (1), để phân tích mã điều khiển. Trong trường hợp Ctrl-H, echo (1) đặt 0x08 vào chuỗi đầu ra và hiển thị rằng với dấu mũ và H. Nếu chuỗi được chuyển hướng đến thứ gì đó PARSES 0x08 làm khoảng lùi bị phá hủy trong INPUT của nó, bạn có thể nhận được kết quả như ý.
$'\b'
mà vỏ cải để một 0x08 và chuyển đến chương trình hoặc lệnh khác.
^H
có nghĩa là "con trỏ bên trái một".