Alias quando não é a primeira palavra: 'G =' | grep '' then 'comando G grep-string'

0

Eu me vejo escrevendo | grep e | less muito, e queria saber se havia alguma maneira de fazer algo como:

alias G='| grep -E'  # egrep is deprecated
alias L='| less'

Então eu poderia fazer algo como:

$ command G grepstring

ou

$ verbose-command L

Eu estou atualmente fazendo a transição de bash para zsh , então, por favor, aborde as duas conchas, se possível.

    
por Tom Hale 29.06.2018 / 12:04

2 respostas

4

bash

Eu não sei como fazer isso em bash , pois o manual diz :

Aliases allow a string to be substituted for a word when it is used as the first word of a simple command.

zsh

help alias diz:

If the -g flag is present, define a global alias; global aliases are expanded even if they do not occur in command position.

Portanto, no exemplo less :

alias -g L="| less"

Exemplos

zsh-lovers gives the following examples:

   alias -g ...='../..'
   alias -g ....='../../..'
   alias -g .....='../../../..'
   alias -g CA="2>&1 | cat -A"
   alias -g C='| wc -l'
   alias -g D="DISPLAY=:0.0"
   alias -g DN=/dev/null
   alias -g ED="export DISPLAY=:0.0"
   alias -g EG='|& egrep'
   alias -g EH='|& head'
   alias -g EL='|& less'
   alias -g ELS='|& less -S'
   alias -g ETL='|& tail -20'
   alias -g ET='|& tail'
   alias -g F=' | fmt -'
   alias -g G='| egrep'
   alias -g H='| head'
   alias -g HL='|& head -20'
   alias -g Sk="*~(*.bz2|*.gz|*.tgz|*.zip|*.z)"
   alias -g LL="2>&1 | less"
   alias -g L="| less"
   alias -g LS='| less -S'
   alias -g MM='| most'
   alias -g M='| more'
   alias -g NE="2> /dev/null"
   alias -g NS='| sort -n'
   alias -g NUL="> /dev/null 2>&1"
   alias -g PIPE='|'
   alias -g R=' > /c/aaa/tee.txt '
   alias -g RNS='| sort -nr'
   alias -g S='| sort'
   alias -g TL='| tail -20'
   alias -g T='| tail'
   alias -g US='| sort -u'
   alias -g VM=/var/log/messages
   alias -g X0G='| xargs -0 egrep'
   alias -g X0='| xargs -0'
   alias -g XG='| xargs egrep'
   alias -g X='| xargs'
    
por 29.06.2018 / 12:04
0

O Bourne Shell suporta aliases que são expandidos sempre que o nome é visto na linha de comando.

alias -a name=value

configura tal alias. O conceito remonta a uma ideia de 1980 sobre o primeiro clone UNOS do UNIX. Use com cuidado, pois você precisa escapar do name se não quiser que ele seja expandido.

Veja: link

A interface que é semelhante à interface UNOS de 1980 está atualmente na página 6, a seção de alias na página 7 e o comando alias está documentado na página 36.

O Bourne Shell também implementa o conceito de aliases persistentes do UNOS.

Como os aliases no Bourne Shell são mais poderosos do que em outros shells, recomenda-se levar algum tempo e brincar com esse recurso para entender o que ele poderia fazer.

    
por 29.06.2018 / 23:42