GNU/Linux >> Linux Esercitazione >  >> Linux

Come creare un alias per un lungo percorso?

Forse è meglio usare i link

Collegamento software

Collegamento simbolico o soft (file o directory, più flessibile e autodocumentante)

#      Source                            Link
ln -s /home/jake/doc/test/2000/something /home/jake/xxx

Collegamento fisico

Hard link (solo file, meno flessibile e non autodocumentante)

#    Source                            Link
ln /home/jake/doc/test/2000/something /home/jake/xxx

Come creare un collegamento a una directory

Suggerimento :Se non hai bisogno di vedere il link nella tua casa puoi iniziarlo con un punto .; quindi sarà nascosto per impostazione predefinita, quindi potrai accedervi come

cd ~/.myHiddelLongDirLink

C'è un'opzione di shell cdable_vars :

cdable_vars
Se questo è impostato, un argomento per cd Si presume che builtincommand che non è una directory sia il nome di una variabile il cui valore è la directory in cui passare.

Puoi aggiungere questo al tuo .bashrc :

shopt -s cdable_vars
export myFold=$HOME/Files/Scripts/Main

Nota che ho sostituito la tilde con $HOME; le virgolette impediscono l'espansione della tilde e Bash si lamenterebbe che non esiste una directory ~/Files/Scripts/Main .

Ora puoi usarlo come segue:

cd myFold

Nessun $ necessario. Questo è il punto, in realtà, come mostrato in altre risposte, cd "$myFold" funziona senza l'opzione shell. cd myFold funziona anche se il percorso è in myFold contiene spazi, non sono richieste virgolette.

Questo di solito funziona anche con il completamento automatico delle schede come _cd funzione in bash_completion controlla se cdable_vars è impostato, ma non tutte le implementazioni lo fanno allo stesso modo, quindi potresti dover generare bash_completion di nuovo nel tuo .bashrc (o modifica /etc/profile per impostare l'opzione della shell).

Altre shell hanno opzioni simili, ad esempio Zsh (cdablevars ).


Dal momento che è una variabile d'ambiente (alias ha una definizione diversa in bash ), devi valutarlo con qualcosa come:

cd "${myFold}"

oppure:

cp "${myFold}/someFile" /somewhere/else

Ma in realtà trovo più facile, se vuoi solo la facilità di passare a quella directory, creare un reale alias (in uno dei bash file di avvio come .bashrc ), quindi posso salvare i tasti premuti:

alias myfold='cd ~/Files/Scripts/Main'

Quindi puoi semplicemente usare (senza cd ):

myfold

Per eliminare la definizione, usa unalias . La seguente trascrizione mostra tutto di questi in azione:

pax> cd ; pwd ; ls -ald footy
/home/pax
drwxr-xr-x 2 pax pax 4096 Jul 28 11:00 footy

pax> footydir=/home/pax/footy ; cd "$footydir" ; pwd
/home/pax/footy

pax> cd ; pwd
/home/pax

pax> alias footy='cd /home/pax/footy' ; footy ; pwd
/home/pax/footy

pax> unalias footy ; footy
bash: footy: command not found

Linux
  1. Come fare in modo che sudo ricordi la password più a lungo

  2. Come aggiungere un percorso di inclusione predefinito per GCC in Linux?

  3. Come rendere il file sparse?

  4. Come fare in modo che git non chieda la password al pull?

  5. Come posso fare in modo che sudo chieda la password di root?

Come faccio ad aggiungere un nome di dominio alias per il mio sito web?

Come fare una VPN

Come creare alias per personalizzare i comandi in Debian

Come far funzionare il comando alias nello script bash o nel file bashrc

Come creare un collegamento a una directory

Come creare un pacchetto di test Travis CI per Linux, OS X, Windows?