Có thể lặp lại một backspace trong bash?Echoing một backspace
Something như
echo $'stack\b'
nên không ra stac
? Hoặc tôi đang thiếu một cái gì đó?
Cụ thể hơn, tôi muốn sử dụng trong:
ls | wc -l; echo $'\b items'
Có thể lặp lại một backspace trong bash?Echoing một backspace
Something như
echo $'stack\b'
nên không ra stac
? Hoặc tôi đang thiếu một cái gì đó?
Cụ thể hơn, tôi muốn sử dụng trong:
ls | wc -l; echo $'\b items'
\b
làm cho di chuyển con trỏ sang trái, nhưng nó không xóa nhân vật. Xuất ra một không gian nếu bạn muốn xóa nó.
Đối với một số các bản phân phối bạn cũng có thể cần phải sử dụng -e
tắc của echo
:
-e enable interpretation of backslash escapes
Vì vậy, nó sẽ trông giống như
echo -e 'stack\b '
Ngoài ra, files=(*) ; echo "${#files[@]} items"
.
Nó không phải là chính xác những gì bạn đang yêu cầu, mà còn, trong dòng câu trả lời Ignacio, bạn có thể sử dụng cho trường hợp này:
echo "$(ls | wc -l) items"
AFAIK bạn không thể in một nhân vật mà xóa một trước , thậm chí không in char có số hexadecimanl correspoonds để backspace. Tuy nhiên, bạn có thể lùi lại và in một khoảng trống để xóa. Với cput bạn có thể thực hiện nhiều thứ và in bất cứ nơi nào bạn muốn trên màn hình.
Vì vậy, để trả lời câu hỏi thực tế về backspaces này sẽ mô phỏng một backspace:
echo -e "\b \b"
Nó sẽ di chuyển nhân vật trở lại một, sau đó echo một không gian ghi đè lên bất kỳ nhân vật đã ở đó, sau đó di chuyển trở lại một lần nữa - có hiệu lực xóa ký tự trước đó. Nó sẽ không quay trở lại một dòng mặc dù vậy đầu ra trước đó sẽ không tạo ra một dòng mới:
echo -n "blahh"; echo -e "\b \b"
Hmm, và tất nhiên nó không thể backspace trên một dòng mới, phải không? Đó là lý do tại sao giải pháp ban đầu của tôi không hoạt động (tôi đoán). Cảm ơn các giải pháp tốt đẹp cho các tập tin đếm. Tôi muốn cung cấp cho +2 nếu tôi có thể :-) – sidyll
Tại sao phương pháp xóa này không hoạt động cho các dòng mới? – Geremia
'\ b' trả về một ký tự đơn, tới cạnh trái của thiết bị đầu cuối. Một dòng mới theo nghĩa đen là một dòng * mới *, vì vậy dòng thứ hai có cạnh trái của chính nó. –