Posso abbreviare la digitazione necessaria per `cd` in alcune directory ben note


11

Mi ritrovo ad aprire un terminale e poi a CD molto nella stessa directory il cui percorso è molto lungo.

Ciò significa che sto registrando molto e utilizzo la scheda per velocizzare molto le cose.

Sarebbe fantastico se potessi avere una sorta di collegamento a questa directory e quindi semplicemente cd a quella in modo da essere rapidamente nella directory nidificata profonda.

È possibile?


1
Ho diversi script (bash) che eseguono piccoli compiti (correlati) come il cd di un progetto github e l'esecuzione git status. Ho anche alcuni alias nel mio .bash_profile. Non esattamente quello che stai chiedendo, ma correlato.
keyser

Risposte:


24

Ecco il modo di affrontare cdfrequentemente percorsi complessi .

mkdir ~/Links
ln -s /complexpath/there ~/Links

questo creerà il collegamento simbolico

~/Links/there

Per utilizzare questa nuova Linksdirectory in modo efficiente, se la vostra shell di login è bash sufficiente includere questo comando nel vostro ~/.profile(che viene utilizzato da tutte le shell stile Bourne bash, ksh, zsh...):

CDPATH=~/Links:.
export CDPATH

Ciò significa che per ogni cd, la tua shell cercherà all'interno di 2 directory per trovare un nome percorso locale:

~/Links
.

Non è necessario riavviare la sessione per testarla, basta eseguire:

. ~/.profile

il che significa solo leggere il mio ~/.profile. (Non dovrai metterlo nel tuo ~/.bashrcpoiché non è necessario ripetere la stessa inizializzazione della variabile quando non la cambi.)

Dopo averlo testato, sarai in grado di riavviare la sessione;).

D'ora in poi, ogni volta che vorrai andare theredovrai digitare:

cd there

Questa è la soluzione generale più elegante che abbia mai visto. Io di solito faccio alias per le destinazioni più comuni (come aliasing cdoraper cd $ORACLE_HOMEe simili ...)
bmike

Qualcuno sarebbe interessato da un semplice equivalente attraverso l'interfaccia del Finder?
dan

11

Definire un alias è un modo molto semplice per avere una breve abbreviazione per un comando più lungo. Una volta che hai i tuoi alias giusti, puoi creare una sezione nel tuo file .bashrc (o altro file di avvio) in modo da non dover digitare nuovamente questi alias per ogni nuova shell che avvii:

in .bashrc:

alias ws4='ssh qsv-rhws4'
alias httpdlog='cd /var/log/httpd/'
alias EC2='ssh -i BMTestEC2.pem ec2-user@xxxxxxxx.compute.amazonaws.com'

eccetera.

Esci e rientra (o semplicemente esegui . ~/.bashrc) e ora puoi semplicemente digitare httpdloged esegue il cd. Oppure ws4esegue effettivamente il comando ssh ecc.

Questo elimina la necessità di creare (una grande quantità di) collegamenti vuoti che faranno apparire anche la tua home directory come un disastro.


10

Prova a utilizzare autojump o z .

Dopo aver installato uno dei due, sei in cdgiro come al solito e imparano le tue directory più visitate e ti consentono di accedervi digitando solo una parte del percorso:

$ cd /very/long/path/foobar
$ cd
$ z foobar
$ echo $PWD
/very/long/path/foobar

Preferisco la z dei due.


non so di autojump ma lo script 'z' oscilla!
Kris

7

Consiglio vivamente fasd che è simile a autojump e z ma IMHO migliore. Dal sito Web:

Fasd (pronunciato simile a "veloce") è un booster di produttività da riga di comando. Fasd offre un rapido accesso a file e directory per shell POSIX. È ispirato a strumenti come autojump, z e v. Fasd tiene traccia dei file e delle directory a cui hai avuto accesso, in modo da poterli rapidamente fare riferimento nella riga di comando.

Il nome fasd deriva dagli alias suggeriti predefiniti f (file), a (file / directory), s (mostra / cerca / seleziona), d (directory).

Fasd classifica i file e le directory in base a "frequenza", ovvero a "frequenza" e "frequenza". Il termine "frecency" è stato coniato per la prima volta da Mozilla e utilizzato in Firefox (link).


4

In alternativa puoi creare un alias. Getta quanto segue in qualcosa come .bashrc o .aliases

alias shortcut='cd ~/path/to/deep/deep/deep/directory/'

Quindi assicurati che qualunque file si trovi sia sourced. I miei alias sono in .bashrc, che sorgente con questa riga in .bash_profile: source ~/.bashrc


2

L'aggiunta di collegamenti simbolici utili va bene per una o due directory speciali, ma molto rapidamente può essere una seccatura da gestire. Una soluzione di gran lunga migliore è usare la variabile d'ambiente CDPATH, disponibile su bashe altre shell proprio per questo scopo.

CDPATHè un elenco separato da due punti (come PATH) di luoghi in cui cercare un nome di directory. Può contenere sia nomi assoluti che relativi. Ho impostato il mio su qualcosa del genere export CDPATH=".:..:$HOME/work/repos:$HOME/projects:<etc>".

Con questa configurazione, posso digitare cd pdftools da qualsiasi luogo e mi ci vorrà ~/projects/pdftools. (Con un collegamento simbolico, avrei dovuto scrivere cd ~/pdftoolsse non ero nella mia home directory.) Posso anche collegamento nella sottodirectory: cd pdftools/bin.

Il ..mio CDPATHmi permette di digitare cd sisterdiral posto di cd ../sisterdir, ecc Come ci si può aspettare, quando creo nuove directory in qualsiasi parte CDPATHfaranno automaticamente essere trovati cd- non c'è bisogno di creare nuovi collegamenti simbolici o alias.

Questa funzionalità diventa ancora più piacevole se si utilizza il bash_completionfile distribuito, ad esempio, con i sistemi Debian. Non è stato fornito con il mio box OS X, quindi ho preso una copia e funziona benissimo. (Get it con brew, o semplicemente scaricare manualmente da qui .) Questo file definisce miglioramenti per il completamento di comando, in modo che io possa scrivere cd pdf<TAB>e la pdftoolsdirectory viene trovato e ampliato da qualsiasi luogo su CDPATH.


1

Sicuro: crea un collegamento simbolico

ln -s /some/really/long/path/to/somewhere/ ~/shortcut
cd ~/shortcut


1

In alternativa puoi anche provare a installare il guscio di pesce.

http://fishshell.com/

Questo ha una previsione eccellente per i comandi. Inoltre, consente di digitare in modo intelligente la distinzione tra maiuscole e minuscole senza problemi.

L'aspetto negativo dei pesci è che ha un proprio linguaggio di scripting e non sono compatibili con bash.


1

Tutto quello che faccio è digitare "cd" e quindi trascinare la cartella dal Finder al Terminale che incolla nel percorso completo. Forse non è altrettanto elegante, ma funziona per tutte le cartelle rispetto ad alcune scorciatoie salvate?

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.