Phép thuật nào cho phép tôi hoàn thành các tệp từ xa khi tôi nhập lệnh scp?


16

Có lẽ đây là một tính năng được cung cấp bởi một số plugin tôi đã kích hoạt trong thiết lập oh-my-zsh của tôi (Tôi đã sử dụng zsh trong nhiều năm nay).

Tôi nhận thấy kể từ khi tôi thêm khóa công khai của mình vào máy chủ (bây giờ tôi có thể SSH vào máy chủ mà không cần nhập mật khẩu), khi tôi soạn một scplệnh trong trình bao của mình, tôi thực sự có thể hoàn thành các đường dẫn tệp từ xa!

ví dụ

$ diff <(scp Remoteuser@remote.domain.net:/var/www/html/

Tôi nhấn tab và nó chỉ hoạt động! (đối với những gì tôi đang cố gắng thực hiện với chính lệnh đó, tôi sẽ sử dụng scpđể "sao chép" vào thiết bị xuất chuẩn và cung cấp dưới dạng tệp thành khác. Bằng cách này tôi có thể thấy các thay đổi chính xác mà tôi triển khai cho máy chủ trước đó đang chạy rsync)

Tôi tò mò về những gì làm cho công việc này rất tốt. Có phải cái gì đó được tích hợp vào scp được tích hợp với z shell? Hay cái gì khác?

Câu trả lời:


16

Oooh, tôi tìm thấy một lời giải thích .

Để trích dẫn phần có liên quan:

Shell zsh đi kèm với (nhiều hơn một) tính năng tuyệt vời, chẳng hạn như tabcompletion từ xa. Nếu bạn muốn sao chép một tập tin qua scp, chỉ cần nhấn tab ở bất kỳ phần nào của tên tệp trên máy chủ từ xa. zsh có thể thiết lập một phiên ssh trên nền và tìm nạp thông tin liên quan cho bạn, vì vậy bạn có thể lập bảng thông qua máng các tệp từ xa.

Bài đăng tiếp tục hiển thị một số zstyletuyên bố đạt được sự hoàn thành, nhưng tôi thực sự khuyên bạn nên sử dụng gói zsh như oh-my-zsh đã nói ở trên để có được nội dung này được duy trì bởi cộng đồng OSS cho bạn.

Một cái gì đó có vẻ có liên quan, như đã thấy trên hệ thống của tôi trong thư mục .oh-my-zsh của tôi:

$ ack scp 
plugins/common-aliases/common-aliases.plugin.zsh
85:zstyle -e ':completion:*:(ssh|scp|sftp|rsh|rsync):hosts' hosts 'reply=(${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) /dev/null)"}%%
[# ]*}//,/ })'

<...>

Kinh ngạc!! Là tính năng này dành riêng cho zsh. Là nó có thể trong bash.
shivams 17/05/2015

1
@shivams điều này có thể phù hợp với nhu cầu bash của bạn. Có vẻ như việc thiết lập oh-my-zsh chỉ đơn giản hơn rất nhiều, cộng với zsh thì thực sự tốt. Tôi nghĩ rằng nếu bạn thực sự quan tâm đến nó, tuy nhiên, không có nhiều thứ mà zsh có thể làm được mà bash không thể (và điều ngược lại chắc chắn cũng đúng). Đơn giản chỉ là vấn đề bạn sẵn sàng bỏ ra bao nhiêu công sức.
Steven Lu

7
@shivams Đối với tôi, nó luôn hoạt động trong bash - Tôi chỉ cần nhấn "tab" theo bản năng một ngày trong lệnh scp và khá ngạc nhiên khi thấy nó tự động hoàn tất! Googling xung quanh, có vẻ như bạn cần cài đặt gói hoàn thành bash nếu bạn chưa có nó. Câu hỏi unix.se này có liên quan.
Pont
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.