Penyelesaian tab nama file SCP


13

Saya menggunakan SCP secara teratur untuk memindahkan file di antara server dan saya telah mendengar desas-desus bahwa Anda dapat menggunakan penyelesaian-tab di server jarak jauh jika Anda menggunakan kunci publik, tetapi sejauh ini saya tidak beruntung.

Apa yang saya coba capai adalah sebagai berikut:

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

Sebuah lspada server jauh /dir/akan mengungkapkan 3 folder:

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

Saya ingin SCP mengungkapkan folder mana yang cocok (jika ada), sama seperti penyelesaian jalur normal saat menavigasi sistem file lokal. Penyelesaian Tab tidak bekerja pada jalur lokal di scpbaris perintah, tetapi saya perhatikan bahwa ketika jalur untuk mesin jarak jauh cocok dengan lokal (yaitu: "~ /"), ia menyelesaikan / menyarankan file / folder dari sistem file lokal dan bukan dari jarak jauh.

Menjalankan fungsi-fungsi berikut untuk login tanpa kata sandi:

`ssh remote.ip.address`

... jadi saya tahu tombolnya sudah diatur dengan benar. Ada ide tentang cara agar ini berfungsi?


Baru saja menggunakan ini - omgbbq
William Entriken

Jawaban:


16

Shell mana yang Anda gunakan? Jika Anda menggunakan bash, Anda mungkin harus mengaktifkan penyelesaian "lanjutan" di bash ...

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

Di ~ / .bashrc Anda

Pada OSX Anda dapat melakukan:

$ sudo port install bash-completion

Ke profil ~ / .profile Anda tambahkan:

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

Saya menggunakan OSX sebagai workstation, file itu tidak ada. Namun, saya berasumsi bahwa dengan distrubtion apa pun saya perlu menginstal paket bash-completion untuk membuatnya berfungsi?

Saya akan memperbarui jawaban saya ..
269 ​​rkthkr 16:00

Saya baru saja menyelesaikan langkah-langkah itu sendiri, semuanya bekerja dengan baik. Terima kasih sobat!

Tidak masalah, senang membantu!
rkthkr

1
Tentu saja, bagian instal port untuk OS X hanya berfungsi, jika Anda telah menginstal paket MacPorts (www.macports.org). Dan saya kira ada paket yang tersedia jika Anda harus menggunakan fink bukan MacPorts.
Sven

2

Jika ada yang ingin melakukan ini untuk Mac OSX Mountain Lion dengan metode rkthkr, mereka harus menginstal Mac Ports ( http://www.macports.org/install.php ) terlebih dahulu, jalankan perintah yang ia sebutkan:

$ sudo port install bash-completion

kemudian konfigurasikan aplikasi terminal mereka sesuai instruksi yang ditemukan di sini: https://trac.macports.org/wiki/howto/bash-completion


Ketika Anda memiliki cukup reputasi untuk meninggalkan komentar, penambahan jawaban yang ada biasanya bekerja lebih baik dengan itu. (jika Anda tidak akan mengedit jawaban)
Andrew B

Terima kasih. Itu yang ingin saya lakukan tetapi, seperti yang Anda sebutkan, saya tidak punya cukup tenaga untuk melakukannya.
Shawn Conn

0

Solusi lain yang mungkin lebih sederhana adalah menggunakan sshfs .

Ini adalah klien sistem file berdasarkan SSH File Transfer Protocol. Karena sebagian besar server SSH sudah mendukung protokol ini, maka sangat mudah untuk diatur: yaitu di sisi server tidak ada yang bisa dilakukan. Di sisi klien memasang sistem file semudah masuk ke server dengan ssh.

Ini adalah sistem file berbasis sekering yang menautkan folder jauh Anda ke yang lokal. Di bawah tenda, scp digunakan, tetapi Anda dapat mengoperasikan cpperintah seperti menyalin file di mesin lokal Anda. Dengan demikian, penyelesaian-tab bekerja secara otomatis! sshfs tersedia untuk sebagian besar distribusi, misalnya do sudo apt-get install sshfs(ini juga memuat fusemodul kernel)

Mulai seperti ini:

$ 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

Saya sangat merekomendasikan menggunakan yafc .

Ini mendukung penyelesaian nama file dan memiliki beberapa fitur berguna lainnya (misalnya get / put / fxp / ls / rm rekursif)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.