SCP dosya adı sekmesinin tamamlanması


13

Dosyaları sunucular arasında taşımak için SCP'yi düzenli olarak kullanıyorum ve ortak anahtarlar kullanıyorsanız uzak sunucuda sekme tamamlamayı kullanabileceğinize dair söylentiler duydum, ancak şimdiye kadar hiç şansım olmadı.

Yapmaya çalıştığım şey şudur:

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

Bir lsuzaktan sunucu üzerinde /dir/3 klasörleri ortaya koyacaktır:

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

SCP'nin hangi klasörlerle (varsa) eşleştiğini açıklamasını istiyorum, tıpkı yerel dosya sisteminde gezinirken normal yolun tamamlanması gibi. Sekme tamamlama scpkomut satırındaki yerel yollarda çalışır , ancak uzak makinenin yolu yerelle eşleştiğinde (yani: "~ /"), dosya / klasörleri yerel dosya sisteminden tamamladığını / önerdiğini fark ettim. uzaktan kumandadan.

Parolasız oturum açma için aşağıdaki işleri çalıştırma:

`ssh remote.ip.address`

... yani tuşların doğru ayarlandığını biliyorum. Bunu nasıl çalıştıracağına dair bir fikrin var mı?


Just used this - Omgbbq
William Entriken

Yanıtlar:


16

Hangi kabuğu kullanıyorsun? Eğer bash kullanıyorsanız bash "gelişmiş" tamamlamaları etkinleştirmeniz gerekebilir ...

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

~ / .Bashrc'nizde

OSX'te şunları yapabilirsiniz:

$ sudo port install bash-completion

~ / .Profile'nize ekleyin:

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

OSX'i bir iş istasyonu olarak kullanıyorum, bu dosya mevcut değil. Ancak, herhangi bir dağıtım ile bunun işe yaraması için bash-tamamlama paketini yüklemem gerektiğini varsayıyorum?

Cevabımı güncelleyeceğim ..
rkthkr

Bu adımları atlatmayı bitirdim, hepsi iyi çalışıyor. Teşekkürler dostum!

Sorun değil, yardım etmekten mutluluk duyuyoruz!
rkthkr

1
Tabii ki, OS X için bağlantı noktası yükleme kısmı yalnızca MacPorts paketini (www.macports.org) yüklediyseniz çalışır. Ve MacPorts yerine fink kullanmanız gerekiyorsa kullanılabilir bir paket var sanırım.
Sven

2

Birisi bunu Mac OSX Mountain Lion için rkthkr yöntemiyle yapmak istiyorsa, önce Mac Ports'u yüklemeleri gerekir ( http://www.macports.org/install.php ), bahsettiği komutu çalıştırın:

$ sudo port install bash-completion

daha sonra terminal uygulamalarını burada bulunan şu talimatlara göre yapılandırın: https://trac.macports.org/wiki/howto/bash-completion


Yorum bırakmak için yeterli itibara sahip olduğunuzda, mevcut cevaplara yapılan eklemeler genellikle bunlarla daha iyi sonuç verir. (cevapları düzenlemeyecekseniz)
Andrew B

Teşekkürler. Yapmak istediğim şey bu, ama söylediğin gibi, bunu yapmak için yeterli temsilcim yoktu.
Shawn Conn

0

Başka, belki daha basit bir çözüm sshfs kullanmaktır .

Bu, SSH Dosya Aktarım Protokolü'ne dayalı bir dosya sistemi istemcisidir. Çoğu SSH sunucusu zaten bu protokolü desteklediğinden kurulumu çok kolaydır: yani sunucu tarafında yapacak bir şey yoktur. İstemci tarafında montaj dosya sistemi ssh ile sunucuya giriş kadar kolaydır.

Bu bir var sigorta yerel bir birine uzak klasörü bağlayan tabanlı dosya sistemi. Başlık altında scp kullanılır, ancak cpkomutu yerel makinenize dosya kopyalamak gibi çalıştırabilirsiniz . Böylece sekme tamamlama otomatik olarak çalışır! sshfs çoğu dağıtım için kullanılabilir, örn. do sudo apt-get install sshfs(bu aynı zamanda fuseçekirdek modülünü de yükler )

Böyle başla:

$ 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

Ben yacc kullanmanızı şiddetle tavsiye ederim .

Dosya adının tamamlanmasını destekler ve diğer bazı yararlı özelliklere de sahiptir (örneğin, özyinelemeli get / put / fxp / ls / rm)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.