Scp kullanırken uzaktaki yollar için otomatik tamamlama nasıl etkinleştirilir?


37

Uzaktan kullanarak dizüstü bilgisayarıma bir dosya kopyaladım:

scp someFile USER@192.168.178.32:/home/USER/put/it/some/where/oh/damn/you/here

Sekmeyi tıklatarak uzaktaki yolu otomatik olarak tamamlayabilmek istiyorum.


1
rsyncBence çok daha üstün olduğu için etkinleştirilmişscp
Marco Ceppi

3
Varsayılan olarak etkindir zsh.
Stéphane Gimenez

3
Aynı scpzamanda etkin , en azından burada çalışıyor. Bir ssh aracısına önceden eklenmiş bir ssh anahtarına ihtiyacınız var.
enzotib

Yanıtlar:


24

Süslü otomatik tamamlamayı açtığınızdan emin olun. Pek çok dağıtımda, bu sizin ~/.bashrciçermeniz gereken anlamına gelir . /etc/bash_completion.

Parolasız kimlik doğrulaması ayarlaması yapmanız gerekir, yani önceden yüklenmiş bir anahtarla ssh-agent.

Bir SSH bağlantısı kurmak yavaştır, bu nedenle bir kez ve herkes için bir bağlantı kurarak ve daha sonra bu bağlantıyı kullanarak tamamlamaları önemli ölçüde hızlandırabilirsiniz. Bunu yapmanın göreceli olarak karmaşık yolu, içinde ssh -N -M target-hostana-bağımlı bağlantıları kurulduktan sonra bir ana SSH bağlantısı açmaktır ~/.ssh/config; Talimatlar için bkz . Tek komutta çoklu ssh oturumları ( ControlMasterve ControlPathseçeneğine ihtiyacınız var ).

Basit yöntem, uzak dosya sistemini SSHFS'ye monte etmek ve cpnormal kabuk tamamlama ile kullanmaktır .

mkdir ~/remote
sshfs USER@192.168.178.32:/home/USER ~/remote
cp -p someFile ~/remote/put/it/some/where/oh/damn/you/here

/etc/bash_completionKaynak için bir şey var gibi görünüyor ~/.bash_completion. Bu özelliğin, yazamadığım /etc/ve olmadığı bir uzak sunucuda olmasını istiyorum /etc/bash_completion( yok /etc/bash_completion.d/. Olsa da . Olsa da . Ev dizinimden çalıştırmak için güvenli bir sürümü var mı?) En az bir referans var. ~ / .bash_completion bu yüzden korkarım daha çok eksik var ve döngüsel bir döngü veya hatalara neden olabilecek başka bir şey olabilir.
redbmk


2

Scp kullanmak yerine lftp'ye geçebilirsiniz. Size aradığınız otomatik tamamlama ve daha fazlası (yani joker karakterler) dahil ftp, sftp ve ssh üzerinden dosya aktarımı için hoş ve tutarlı bir arayüz sunar.

lftp fish: // kullanıcı @ makine

scp ile yaptığınız gibi ssh üzerinden bağlantı açar. Birçok makine sftp: // 'yi de destekliyor, bu da benim deneyimime göre daha iyi.


0

@Giles'in dediği gibi , kurulumun otomatik olarak tamamlandığından ve makinenin ssh anahtarının olduğundan emin olun.

Bu yapılandırmayı benim için eklemek ~/.ssh/config, hızda çok büyük bir fark yarattı.

Host *
 ControlMaster auto
 ControlPath ~/.ssh/master-socket/%r@%h:%p
 ControlPersist 10s

Bu, her ana bilgisayar için bir ana bağlantı oluşturur.

10'ların kaldığı süre, bağlantı otomatik olarak kapatılmadan önce dizini görmeniz için size biraz zaman verecektir.

Kalıcı olmadan bir bağlantıyı yeniden oluşturmanız gerekecek ve sekmenizin tamamlanmasını yavaşlatacaktır.

Örnek

~$ scp mymachine:~/pa TAB

path/ palace/ pandas/ porn/

~$ scp mymachine:~/path/to TAB

~$ scp mymachine:~/path/to/file TAB

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.