alias: extrair opções do command

Desculpas pelo título ruim. Eu não conseguiria um melhor.

Eu quero alias de um command paira outro command e extrai opções do text do próprio command. Eu percebo que isso não está clairo, então talvez um exemplo ajude:

  • bash: histórico por command. Como funciona?
  • Unix: files começando com um traço, -
  • Salve-me do terminal de gibberish
  • Como escreview no OSD do KDE ou notificação do console?
  • Onde está o diretório bash do Windows no Windows?
  • Qual é o equivalente do bash's! $ And !! na casca de peixe?
  • Se eu fosse fazer algo assim com ls , eu gostairia de poder seguir o seguinte:

     ll -> ls -l la -> ls -a lal -> ls -al l -> ls 

    MAS

     ls -> ls #allow this special case to not change 

    de preference, eu gostairia de ser capaz de determinair por minha conta, seja paira igrone pairte do command, como eu faço com os s em ls . então, por exemplo, eu também gostairia de fazer com grep:

     grepi -> grep -i greps -> grep -s grepis -> grep -is 

    não precisamos nos preocupair agora com as opções que tomam airgumentos, por exemplo, está certo se a grepm crashr.

  • Por que meu .bashrc é lido quando eu executo commands não interativos em cima de ssh
  • Linux - Proteção de nós mesmos (Root)
  • Como moview a pasta no UNIX usando mv, somente quando o destino está na mesma unidade
  • Como posso consertair o meu PS1 personalizado paira envolview um command longo em várias linhas em vez de uma única linha?
  • Escrevendo "tail -f" saída paira outro file
  • Monitorair o tráfego TCP na porta específica
  • One Solution collect form web for “alias: extrair opções do command”

    Você pode fazer isso usando o seguinte:

    • Defina shopt extdebug , permitindo várias opções de debugging. O relevante é: se o command executado pela airmadilha DEBUG retorna um valor diferente de zero, o próximo command é ignorado e não executado. Precisamos que isso não tente realmente executair o command lal indefinido.
    • Uma trap paira o sinal DEBUG , que é executado antes de qualquer command ser executado. Defina a airmadilha assim: trap 'insane_magic_alias' DEBUG .

    A function insane_magic_alias analisa o command a ser executado (em $BASH_COMMAND ) e o processa, anulando a execução do command realmente entrado no process pelo return 1 , a less que o type diga que existe, nesse caso, não fazemos nada (e deixamos que ele seja executado ).

     # make sure to name this function appropriately... function insane_magic_alias { local CMD=$BASH_COMMAND # make sure this isn't a command that exists if ! type "$( echo "$CMD" | awk -F' ' '{ print $1 }' )" >/dev/null 2>&1 ; then # handle calls to `l*` if [[ ${#CMD} -gt 1 && "${CMD:0:1}" = l ]] ; then # actual transformed program call ls -${CMD:1} # abort execution of undefined command return 1 fi fi # either execute an existing command, or show the "command not found" message return 0 } 

    Resultado:

     $ lal total 0 drwxr-xr-x 2 danielbeck staff 68 2 Aug 22:53 . drwxr-xr-x@ 78 danielbeck staff 2652 2 Aug 22:53 .. 

    Note-se que o seu bash acha que você tem um emprego executando por um momento logo depois (se você imprimir informações de trabalho em seu PROMPT_COMMAND , você notairá isso). Além disso, provavelmente outros poucos efeitos colaterais que tornam esta crash em qualquer caso, não apenas uma demonstração simples …

    Nós somos o genio da rede de computadores, vamos consertar as questões de hardware e software do computador juntos.