Bir scp komutu yazarken uzak dosyaları sekmeyle doldurmamı sağlayan sihir nedir?


16

Muhtemelen bu, oh-my-zsh kurulumumda etkinleştirdiğim bazı eklentiler tarafından sağlanan bir özelliktir (yıllardır zsh kullanıyorum).

Genel anahtarımı sunucuya eklediğimden beri fark ettim (şimdi bir şifre girmeden sunucuya SSH yapabilirim), scpkabuğumda bir komut oluşturduğumda, uzak dosya yollarını sekmeli olarak tamamlayabiliyorum!

Örneğin

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

Sekmeye bastım ve işe yarıyor! (ne komut ile başarmak için çalışıyorum gelince, ben scpstdout için "kopya" için kullanın ve fark bir dosya olarak beslemek için kullanacağım . Bu şekilde önce sunucuya dağıttığım tam değişiklikleri görebilirsiniz çalışıyor rsync)

Bu işi iyi yapan parçaların ne olduğunu merak ediyorum. Bu z kabuk ile entegre scp içine bir şey var mı? Veya başka bir şey?

Yanıtlar:


16

Oooh, bir açıklama buldum .

İlgili kısmı belirtmek için:

Zsh kabuğu, uzaktan sekme tamamlama gibi (birden fazla) harika özellik ile birlikte gelir. Örneğin bir dosyayı scp üzerinden kopyalamak istiyorsanız, uzak ana bilgisayardaki dosya adının herhangi bir bölümündeki sekmeye basmanız yeterlidir. zsh, arka planda bir ssh oturumu oluşturabilir ve ilgili bilgileri sizin için getirebilir, böylece uzak dosyalar arasında sekme tamamlayabilirsiniz.

zstyleGönderi, tamamlamayı sağlayan bazı beyanları göstermeye devam ediyor , ancak sizin için OSS topluluğu tarafından korunan bu şeyleri almak için yukarıda belirtilen oh-my-zsh gibi bir zsh paketi kullanmanızı şiddetle tavsiye ediyorum.

.Oh-my-zsh dizinimdeki sistemimde görüldüğü gibi, alakalı görünen bir şey:

$ 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)"}%%
[# ]*}//,/ })'

<...>

İnanılmaz!! Bu özellik münhasır mıdır zsh? Mümkün mü bash?
shivams

1
@shivams bu sizin bash ihtiyaçları için uygun olabilir. Oh-my-zsh'ı kurmak çok daha kolay, artı zsh gerçekten çok güzel. Bence gerçekten önemsiyorsanız, zsh'ın bash'ın yapamayacağı pek bir şey yok (ve tersi de kesinlikle doğrudur). Ne kadar iş yapmaya çalıştığınız meselesi.
Steven Lu

7
@ shivams Benim için her zaman Sadece bash çalıştı - Ben sadece scp komutunda bir gün içgüdüsel olarak "sekme" vurmak ve otomatik tamamlandı görmek oldukça şaşırdım! Etrafta dolaşmak, sanki zaten yoksa bash-tamamlama paketini yüklemeniz gerekiyor gibi görünüyor. Bu unix.se sorusu konuyla ilgilidir.
Pont
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.