TAB tự động hoàn thành trong Bourne Shell


7

Tôi không biết cách lấy khóa TAB để tự động hoàn thành tên tệp, lệnh hoặc bất cứ thứ gì.

Tôi đang sử dụng hệ thống giống Unix (OS / 390) và phụ thuộc vào một số tập lệnh hoạt động trong sh (shell Bourne, không phải BASH), nhưng không phải trong các shell khác (ví dụ: tcsh), vì vậy tôi không thể chuyển đổi shell . Tôi thường kết nối với hệ thống này thông qua ssh hoặc telnet từ Thiết bị đầu cuối Gnome của Ubuntu chạy bash cục bộ. Những người khác kết nối với hệ thống OS / 390 qua telnet từ dấu nhắc lệnh của Windows XP và họ có thể tự động hoàn thành với khóa TAB sau khi phát hành "set -o emacs". Khi tôi phát hành "set -o emacs", tôi sẽ nhận được một số chức năng phù hợp (ví dụ: ctrl-p để lùi lại lịch sử chẳng hạn), nhưng không tự động hoàn thành.

Tôi biết tùy chọn "set -o vi", nhưng sử dụng "ESC- *", v.v. không hấp dẫn tôi vì tôi biết rằng phím TAB đơn giản hoạt động cho người khác.

Có điều gì đó về Ubuntu, Terminal Gnome, bash hoặc ssh gửi một ký tự tab khác với dấu nhắc lệnh Windows XP chạy telnet không?

Có ai có ý tưởng về lý do tại sao tôi có thể không có được tab để tự động hoàn tất trong khi mọi người trên cùng một máy từ xa, chạy cùng một vỏ, có thể không?

Nên làm gì để cho phép tự động hoàn thành tab ?

Câu trả lời:


5

(Không có câu trả lời cho câu hỏi chính xác của bạn, nhưng nhiều cách giải quyết.)

Bạn không cần phải khớp vỏ kịch bản của mình với vỏ tương tác. (Ví dụ: hầu hết (t) người dùng csh hoặc zsh viết tập lệnh sh). Nếu bạn có hoặc có thể cài đặt một vỏ tương tác tốt hơn so với vỏ Bourne (zsh, bash, tcsh), hãy dùng nó. Ngay cả khi bạn không thể, hãy xem nếu có ksh, có khả năng có các tính năng tương tác tốt hơn một chút so với vỏ Bourne.

Bạn có thể kiểm tra ký tự mà phím tab gửi bằng cách nhập echo ' Ctrl+ V Tab ' | od -t x1 Enter. 0000000 09 0a(tức là ở vị trí 0, hai ký tự, tab và dòng mới) là đầu ra dự kiến. Tôi không mong đợi đây là vấn đề.

Nếu bạn không thể có được một môi trường thoải mái, bạn có thể thử làm nhiều việc hơn từ xa, sử dụng máy cục bộ của bạn để tương tác nhiều nhất có thể. Điều này có những thăng trầm của nó.

  • Từ Linux (hoặc hầu hết các thông báo khác bao gồm OSX, nhưng không phải từ Windows), bạn có thể sử dụng sshfs để truy cập hệ thống tệp từ xa.
  • Trong Emacs, bạn có thể dễ dàng duyệt các tệp từ xa thông qua Tramp (mở /os390hostname:/path/on/remote/machine, bạn đã hoàn thành). Bạn cũng có thể sử dụng Eshell để có giao diện shell từ xa (shell tích hợp Emacs); nếu bạn thay đổi thành một thư mục từ xa ( cd /os390hostname:/path/on/remote/machine), các lệnh bên ngoài bạn khởi chạy sẽ được thực thi trên máy từ xa. Nếu bạn cần chạy các lệnh dưới quyền root, Tramp (và Eshell dựa trên nó) có thể kết hợp ssh với su hoặc sudo .

cám ơn! ctrl + v TAB dường như chỉ mở rộng thành một tab, như trong:> echo '' | od -t x1 0000000000 05 15 0000000002
Thomas G Henry

Nó tước đi khoảng trắng trên tôi! Cần có một khoảng cách kích thước tab giữa '' và một dòng mới trước 0000000000 và 0000000002. Dù sao, tôi sẽ thử các đề xuất từ ​​xa của bạn. Cám ơn!
Thomas G Henry

Tôi ủng hộ điều này, nhưng tôi không có đủ danh tiếng trong cộng đồng này.
Thomas G Henry

@ThomasGHenry: Bây giờ bạn làm! :-)
oKtosiTe

Vâng Và tôi đã thực hiện đặc quyền của mình. :)
Thomas G Henry

1

Khi bạn có thể phát hành set -o emacsvà không nhận được thông báo lỗi, rất có thể bạn không sử dụng bourne shellnhưng một dẫn xuất ksh.

Shell Korn tự động hoàn thành với ESC, bạn đã thử chưa?

BTW: nếu bạn thực sự muốn sử dụng Bourne Shell với trình chỉnh sửa lịch sử và hoàn thành tên tệp, bạn có thể thử Bourne Shell di động của tôi trong:

http://sourceforge.net/projects/schilytools/files/

Vì đây là Shell Bourne đã được chuyển đổi từ sbrk () sang malloc (), nó chạy trên các môi trường không phải là UNIX.

Vẫn có thể có một số vấn đề với chuyển:

  • Nếu môi trường OS / 390 của bạn sử dụng EBCDIC, các tệp ctype * cần một số công việc.

  • Nếu môi trường của bạn không hỗ trợ giả lập fork () cũng như giả lập vfork () của OpenVMS, có thể không có cách nào để làm cho nó biên dịch và chạy mà không cần một vài ngày nỗ lực.

Xem http://schillix.sourceforge.net/man/man1/bosh.1.html để kiểm tra nhanh các tính năng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.