Completamento della scheda nome file SCP


13

Uso regolarmente SCP per spostare i file tra i server e ho sentito dire che puoi usare il completamento delle schede sul server remoto se stai usando le chiavi pubbliche, ma finora non ho avuto fortuna.

Quello che sto cercando di realizzare è il seguente:

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

Un lsserver remoto di /dir/rivelerebbe 3 cartelle:

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

Vorrei che SCP rivelasse quali cartelle corrispondono (se ce ne sono), proprio come il normale completamento del percorso durante la navigazione nel filesystem locale. Il completamento della scheda funziona sui percorsi locali nella scpriga di comando, ma ho notato che quando il percorso per la macchina remota corrisponde al locale (cioè: "~ /"), completa / suggerisce file / cartelle dal filesystem locale piuttosto rispetto al telecomando.

L'esecuzione dei seguenti lavori per l'accesso senza password:

`ssh remote.ip.address`

... quindi so che i tasti sono impostati correttamente. Qualche idea su come farlo funzionare?


Ho appena usato questo - omgbbq
William Entriken il

Risposte:


16

Quale shell stai usando? Se stai usando bash potresti dover abilitare i completamenti "avanzati" in bash ...

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

Nel tuo ~ / .bashrc

Su OSX puoi fare:

$ sudo port install bash-completion

Al tuo ~ / .profile aggiungi:

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

Sto usando OSX come workstation, quel file non esiste. Tuttavia, presumo che con qualsiasi distrazione sia necessario installare il pacchetto bash-completamento per farlo funzionare?

Aggiornerò la mia risposta ..
rkthkr,

Ho appena finito di seguire questi passaggi da solo, tutto funziona bene. Grazie compagno!

Nessun problema, felice di aiutarti!
rkthkr,

1
Naturalmente, la parte di installazione della porta per OS X funziona solo se è stato installato il pacchetto MacPorts (www.macports.org). E immagino che ci sia un pacchetto disponibile se dovresti usare fink invece di MacPorts.
Sven

2

Se qualcuno vuole farlo per Mac OSX Mountain Lion con il metodo di rkthkr, deve prima installare Mac Ports ( http://www.macports.org/install.php ), eseguire il comando che ha menzionato:

$ sudo port install bash-completion

quindi configura la loro app terminale seguendo queste istruzioni qui: https://trac.macports.org/wiki/howto/bash-completion


Quando hai abbastanza reputazione per lasciare commenti, le aggiunte alle risposte esistenti di solito funzionano meglio con quelle. (se non hai intenzione di modificare le risposte)
Andrew B

Grazie. Questo è quello che volevo fare ma, come hai detto, non avevo abbastanza rappresentante per farlo.
Shawn Conn,

0

Un'altra soluzione forse più semplice sta usando sshfs .

Questo è un client di file system basato sul protocollo di trasferimento file SSH. Poiché la maggior parte dei server SSH supporta già questo protocollo, è molto facile da configurare: sul lato server non c'è nulla da fare. Sul lato client il montaggio del filesystem è semplice come accedere al server con ssh.

È un file system basato su fusibili che collega la cartella remota a una locale. Sotto il cofano viene utilizzato scp, ma è possibile utilizzare il cpcomando proprio come copiare i file sul proprio computer locale. Pertanto, il completamento delle schede funziona automaticamente! sshfs è disponibile per la maggior parte delle distribuzioni, ad es. do sudo apt-get install sshfs(questo carica anche il fusemodulo del kernel)

Inizia così:

$ 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

Consiglio vivamente di usare yafc .

Supporta il completamento del nome file e ha anche alcune altre utili funzioni (ad es. Get / put / fxp / ls / rm ricorsive)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.