GNU/Linux >> Linux Esercitazione >  >> Linux

Può ',,' essere alias di '..'?

Gli alias non hanno lo scopo di farlo, ma puoi creare una funzione chiamata cd questo è un involucro per il vero cd . Questo funziona per me! Basta inserirlo nel tuo .bash_profile o il file del tuo profilo preferito.

cd () { if [ "$1" = ",," ]; then builtin cd ..; else builtin cd "[email protected]"; fi; }

Oppure, con commenti e una bella formattazione:

cd ()
{
  if [ "$1" = ",," ]; then  # if first argument is ",,"...
    builtin cd ..           # call the builtin cd with ".." instead...
  else
    builtin cd "[email protected]"         # else call builtin cd with original arguments 
  fi
}

MODIFICA

Grazie @derobert per aver sottolineato che if then else qui è migliore di && || . Inoltre, ho appena realizzato (*facepalm *) che questa implementazione funzionerà solo se qualsiasi argomento non di percorso (ad es. -L -P ) non sono il primo argomento. Quindi fai attenzione, se hai la cattiva abitudine di digitare cd -L ,, questo non ti aiuterà. E questo non è banale da gestire correttamente, credo.


ZSH:

Se stai usando zsh alias -g ,,=".." è ciò di cui hai bisogno, ma questo farà sì che "," venga espanso ovunque, non solo se usato con cd .

Da man zshbuiltins :

Se -g flag è presente, definire un alias globale; gli alias globali vengono espansi anche se non si trovano nella posizione di comando.

BASH:

Se limitato a bash (poiché la domanda è contrassegnata con bash), leggi quanto segue:

Questa è una soluzione di puro alias, come richiesto, comunque questo farà più del necessario, probabilmente frustrando l'utente (vedi l'avviso alla fine del mio post).

Citando man bash :

Se l'ultimo carattere del valore dell'alias è uno spazio vuoto, viene controllata anche la successiva parola di comando che segue l'alias per l'espansione dell'alias.

Pertanto è sufficiente alias cd con uno spazio extra (per consentire l'espansione del suo argomento successivo) e poi alias ,, a .. . Vedi quello

alias cd='cd '
alias ,,='..'

fornisce esattamente ciò di cui hai bisogno.

Nota che questo è corretto non solo per bash (e il suo alias implementazione), ma tutte le shell conformi a POSIX. Citando un esempio da man 1p alias (il manuale non descrive esplicitamente questa caratteristica, solo attraverso un esempio):

  1. Imposta nohup in modo che possa gestire un argomento che è esso stesso un nome alias:

           alias nohup="nohup "
    

Avviso: Come scrive @PeterCordes nel suo commento, causerà automaticamente other alias da espandere quando scritti dopo cd . Potrebbe essere necessario scrivere cd \grep se vuoi cambiare la directory in una chiamata grep ma il tuo grep è un alias per grep --color=auto . Senza la barra rovesciata, cd riporterà l'errore "troppi argomenti" (non puoi cd a due directory contemporaneamente)!.


Gli alias devono essere la prima parola di un comando. Inoltre, l'alias deve essere sostituito da una parola quindi niente spazi).

Manuale di riferimento di Bash:alias

Gli alias consentono di sostituire una parola con una stringa quando viene utilizzato come prima parola di un semplice comando.

Potresti alias entrambi .. e ,, essere cd .. .

$ alias ..="cd .."
$ alias ,,="cd .."
$ cd /tmp && pwd
/tmp
$ ,, && pwd
/

Linux
  1. Uno script Bash può essere agganciato a un file?

  2. Come posso collegare simbolicamente un file in Linux?

  3. Comandi a catena di alias Linux (è possibile evitare la ricorsione?)

  4. Possiamo usare il codice C in Python?

  5. Posso giocare a Dota 2 su Linux?

Come creare alias Bash

13 modi in cui puoi aiutare Linux

Come creare alias SSH in Linux

alias Comando in Linux

Come creare un alias in Linux

Comando alias Linux