Hoàn thành tab tên tệp SCP


13

Tôi sử dụng SCP thường xuyên để di chuyển các tệp giữa các máy chủ và tôi đã nghe đồn rằng bạn có thể sử dụng hoàn thành tab trên máy chủ từ xa nếu bạn đang sử dụng khóa chung, nhưng cho đến nay tôi không gặp may.

Những gì tôi đang cố gắng thực hiện là như sau:

scp -r remote.ip.address:/remote/dir/folder<TAB> /local/destiation/

Một lsmáy chủ từ xa /dir/sẽ tiết lộ 3 thư mục:

/remote/dir/folder_1
/remote/dir/folder_2
/remote/dir/folder_3

Tôi muốn SCP tiết lộ thư mục nào khớp (nếu có), giống như hoàn thành đường dẫn thông thường khi điều hướng hệ thống tệp cục bộ. Hoàn thành tab hoạt động trên các đường dẫn cục bộ trong scpdòng lệnh, nhưng tôi nhận thấy rằng khi đường dẫn cho máy từ xa khớp với cục bộ (tức là: "~ /"), nó sẽ hoàn thành / gợi ý các tệp / thư mục từ hệ thống tệp cục bộ hơn cái điều khiển

Chạy các công việc sau để đăng nhập không cần mật khẩu:

`ssh remote.ip.address`

... vì vậy tôi biết các phím được thiết lập chính xác. Bất kỳ ý tưởng về làm thế nào để làm việc này?


Chỉ cần sử dụng cái này - omgbbq
William Entriken

Câu trả lời:


16

Bạn đang sử dụng vỏ nào? Nếu bạn đang sử dụng bash, bạn có thể cần phải bật hoàn thành "nâng cao" trong bash ...

if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

Trong ~ / .bashrc của bạn

Trên OSX bạn có thể làm:

$ sudo port install bash-completion

Để ~ / .profile của bạn thêm:

if [ -f /opt/local/etc/bash_completion ]; then
    . /opt/local/etc/bash_completion
fi

Tôi đang sử dụng OSX làm máy trạm, tệp đó không tồn tại. Tuy nhiên, tôi cho rằng với bất kỳ sự nghi ngờ nào, tôi cần cài đặt gói bash-hoàn thành để làm việc này?

Tôi sẽ cập nhật câu trả lời của mình ..
rkthkr

Tôi vừa hoàn thành việc tự mình trải qua các bước đó, tất cả đều hoạt động tốt. Cảm ơn bạn đời!

Không có vấn đề, rất vui khi được giúp đỡ!
rkthkr

1
Tất nhiên, phần cài đặt cổng cho OS X chỉ hoạt động, nếu bạn đã cài đặt gói MacPorts (www.macports.org). Và tôi đoán có sẵn gói nếu bạn nên sử dụng fink thay vì MacPorts.
Sven

2

Nếu bất cứ ai muốn làm điều này cho Mac OSX Mountain Lion bằng phương pháp của rkthkr, trước tiên họ phải cài đặt Cổng Mac ( http://www.macports.org/install.php ), chạy lệnh mà anh ấy đã đề cập:

$ sudo port install bash-completion

sau đó định cấu hình ứng dụng đầu cuối của họ theo các hướng dẫn này được tìm thấy tại đây: https://trac.macports.org/wiki/howto/bash-completion


Khi bạn có đủ danh tiếng để để lại bình luận, bổ sung cho câu trả lời hiện có thường hoạt động tốt hơn với những câu trả lời. (nếu bạn không chỉnh sửa câu trả lời)
Andrew B

Cảm ơn. Đó là những gì tôi muốn làm nhưng, như bạn đã đề cập, tôi không có đủ đại diện để làm như vậy.
Shawn Conn

0

Một giải pháp khác, có thể đơn giản hơn là sử dụng sshfs .

Đây là một máy khách hệ thống tệp dựa trên Giao thức truyền tệp SSH. Vì hầu hết các máy chủ SSH đã hỗ trợ giao thức này nên rất dễ thiết lập: tức là về phía máy chủ không có gì để làm. Về phía máy khách, việc cài đặt hệ thống tập tin dễ dàng như đăng nhập vào máy chủ bằng ssh.

Đó là một hệ thống tệp dựa trên cầu chì liên kết thư mục từ xa của bạn với một tệp cục bộ. Trong mui xe, scp được sử dụng, nhưng bạn có thể vận hành cplệnh giống như sao chép các tệp trên máy cục bộ của mình. Do đó, hoàn thành tab hoạt động tự động! sshfs có sẵn cho hầu hết các bản phân phối, ví dụ: sudo apt-get install sshfs(điều này cũng tải fusemô-đun hạt nhân)

Bắt đầu như thế này:

$ sudo mkdir /mnt/server1
$ sudo chown local-username /mnt/server1
$ sshfs remote-username@server1.example.com:/home/remote-username /mnt/server1
$ ls /mnt/server1
 .. <bunch of files> ...
$ cp /mnt/server1/.bash<tab><tab>
.bash_history  .bash_logout   .bashrc
$ cp /mnt/server1/.bashrc .

0

Tôi thực sự khuyên bạn nên sử dụng yafc .

Nó hỗ trợ hoàn thành tên tệp và cũng có một số tính năng hữu ích khác (ví dụ: get / put / fxp / ls / rm đệ quy)

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.