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

10

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

Questo significa che sto facendo molto cd e uso la scheda per velocizzare molto le cose.

Sarebbe fantastico se potessi avere una sorta di link a questa directory e quindi semplicemente cd su quello in modo che io possa essere rapidamente nella directory annidata profonda.

È possibile?

    
posta Breako Breako 26.07.2013 - 21:32
fonte

10 risposte

23

Ecco come trattare frequentemente percorsi complessi con cd .

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

questo creerà il link simbolico

~/Links/there

Per utilizzare questa nuova directory Links in modo efficiente, se la tua shell di login è bash includi semplicemente questo comando nel tuo ~/.profile (che è usato da tutte le shell di stile Bourne bash , ksh , zsh ...):

CDPATH=~/Links:.
export CDPATH

Questo significa che per ogni cd , la tua shell guarderà entro 2 directory trova un percorsopercorso locale:

~/Links
.

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

. ~/.profile

che significa solo leggere il mio ~/.profile . (Non dovrai metterlo nella tua ~/.bashrc poiché 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 a there dovrai digitare:

cd there
    
risposta data 26.07.2013 - 23:11
fonte
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 in un altro file di avvio) in modo che tu non debba ridigitare 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 [email protected]'

ecc.

Esci e rientra (o esegui solo . ~/.bashrc ) e ora puoi semplicemente digitare httpdlog e esegue il cd. Oppure ws4 e in realtà esegue il comando ssh ecc.

Questo rimuove la necessità di creare (una grande quantità di) collegamenti vuoti che causeranno l'apparizione della home directory come un disastro.

    
risposta data 26.07.2013 - 23:00
fonte
9

Prova a utilizzare autojump o z .

Dopo aver installato uno dei due, hai appena cd circa come normale e imparano le tue directory più visitate e ti permettono di andare a loro 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.

    
risposta data 29.07.2013 - 20:36
fonte
6

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

Fasd (pronounced similar to "fast") is a command-line productivity booster. Fasd offers quick access to files and directories for POSIX shells. It is inspired by tools like autojump, z and v. Fasd keeps track of files and directories you have accessed, so that you can quickly reference them in the command line.

The name fasd comes from the default suggested aliases f(files), a(files/directories), s(show/search/select), d(directories).

Fasd ranks files and directories by "frecency," that is, by both "frequency" and "recency." The term "frecency" was first coined by Mozilla and used in Firefox (link).

    
risposta data 30.07.2013 - 23:34
fonte
4

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

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

Quindi assicurati che qualsiasi file sia in source d. I miei alias sono in .bashrc, che io fornisco con questa riga in .bash_profile: source ~/.bashrc

    
risposta data 26.07.2013 - 23:04
fonte
1

Certo: crea un collegamento simbolico

ln -s /some/really/long/path/to/somewhere/ ~/shortcut
cd ~/shortcut
    
risposta data 26.07.2013 - 21:35
fonte
1

Mi piace usare bashmarks per creare facilmente "segnalibri per directory" al volo.

Vedi il readme su: link

Nota: è necessario installare git per seguire il processo di installazione in tre passaggi di bashmark: link

Buona fortuna!

    
risposta data 30.07.2013 - 21:02
fonte
1

In alternativa puoi anche provare a installare fish shell.

link

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

Il rovescio della medaglia è che ha il proprio linguaggio di scripting e non sono bash compatibili.

    
risposta data 03.08.2013 - 08:42
fonte
1

Tutto ciò che faccio è digitare "cd" e quindi trascinare la cartella dal Finder nel Terminale che incolla nel percorso completo. Forse non abbastanza elegante, ma funziona per tutte le cartelle rispetto a qualche scorciatoia da tastiera?

    
risposta data 14.08.2013 - 02:40
fonte
1

L'aggiunta di collegamenti simbolici di convenienza va bene per una directory speciale o due, ma molto rapidamente diventa difficile da gestire. Una soluzione molto migliore è utilizzare la variabile di ambiente CDPATH , disponibile su bash e altre shell 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 il mio impostato su qualcosa come export CDPATH=".:..:$HOME/work/repos:$HOME/projects:<etc>" .

Con questa configurazione, posso digitare cd pdftools da qualsiasi parte e mi porterà a ~/projects/pdftools . (Con un link simbolico, dovrei digitare cd ~/pdftools se non fossi nella mia directory HOME.) Posso anche scorciatoiare in sottodirectory: cd pdftools/bin .

Il .. nel mio CDPATH mi consente di digitare cd sisterdir invece di cd ../sisterdir , ecc. Come puoi prevedere, quando creo nuove directory ovunque in CDPATH , verranno automaticamente trovate da cd : non è necessario creare nuovi collegamenti simbolici o alias.

Questa funzione diventa ancora più bella se si utilizza il file bash_completion distribuito, ad es. con i sistemi Debian. Non è venuto con la mia scatola OS X, quindi ho recuperato una copia e funziona bene. (Acquistalo con brew , o scaricalo manualmente da qui .) Questo file definisce miglioramenti al completamento del comando, in modo che possa digitare cd pdf<TAB> e la directory pdftools venga trovata ed espansa da ovunque su CDPATH .

    
risposta data 13.05.2016 - 13:43
fonte

Leggi altre domande sui tag