Come creare un alias con una variabile all'interno?


4

Voglio creare un alias per il mio terminale per eseguire una ricerca rapida all'interno dei file.

In Ubuntu è stato: alias gre="egrep -rnw ". L'ho usato così $ gre 'my search string'.

Ora voglio questo per il mio MacBook-Terminal locale. Ho scoperto che devo usare solo grep in questo modo grep -r 'search string' .

Come posso aggiungere un alias come quello di Ubuntu?

Penso che sia qualcosa del genere: alias gre="grep -r $theTerminalParameter ."

Se lo provo nel terminale: alias test="grep -r $var ." e controlla il "contenuto" di quell'alias con alias test ottengo quell'informazione:

alias test='grep -r .' quindi la mia variabile non appare nell'alias.

Come posso usare un alias per quell'attività.


1
alias gre='grep -r'e quindi usarlo come gre pattern o gre $VAR :-)
nohillside

Risposte:


7

Non è possibile utilizzare alias per sostituzioni arbitrarie. Puoi invece usare una funzione.

function gre() {
  grep -r "$@" .
}

Grazie che funziona per me ... altri potrebbero aver bisogno delle informazioni su dove archiviare questa funzione: ~/.bash_profile è il posto giusto Non dimenticare di aprire una nuova scheda per utilizzare le modifiche con cmd-t o chiudere e riaprire il terminale.
MonTea

@ MonTea Sure, ma se hai familiarità con la creazione di alias come è la premessa della domanda, allora le funzioni non richiedono alcuna conoscenza aggiuntiva. Una funzione può ancora essere digitata manualmente nella shell proprio come un alias, per avere effetto solo in quella sessione.
grg

@ Monon è in realtà sufficiente per generare .bash_profile
datell

2

È possibile aggiungere la linea a ~/.bash_profile

alias gre='grep -rwn'

e usalo solo aggiungendo punti dopo la stringa di ricerca

gre 'search string' .

per aggiornare la sessione corrente nel caso in cui non si desideri chiudere la scheda

source ~/.bash_profile

che a sua volta è anche il tuo alias se ti piace aggiungere nuovi alias di volta in volta. sbash per esempio.

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.