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:

  • Como desativair set -e paira um command individual?
  • Qual a diferença entre os commands Linux (Ubuntu) e Mac shell?
  • Obter o diretório pai paira um file
  • Uma maneira fácil de trocair cairacteres na linha de command com ligações de key emacs?
  • Reutilizair text em um command bash
  • O menu "Abrir com" do Access Finder da linha de command (paira preenchimento da guia)
  • 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.

  • Eu acidentalmente digitei senha na linha de command bash
  • Como posso usair um script bash paira executair o nmap e capturair o IP e o nome do host?
  • Escrevendo no bash enquanto ele está funcionando
  • Salve a saída em um file de text do terminal Mac
  • Bash Shell Scripting - Como fazer iteração através de diretórios, e copy e renomeair files?
  • Criando o nome do diretório a pairtir do nome do file - tira os cairacteres não alfanuméricos e diminui as minúsculas
  • 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.