Como criar um alias que aceita um argumento no KornShell [duplicado]

2

Estou tentando criar um alias que, quando dado algum argumento, procurará a pasta com o argumento como padrão. Deixe o nome do alias ser gohf .

Agora, vou usar esse alias como gohf <some-pattern> , por exemplo. %código%. Agora, isso deve procurar uma pasta que contenha "testes" em seu nome e me levar para essa pasta na última etapa.

A seguir, o que eu pude pensar.

alias gohf='cd 'find . -type d | grep testing'';

O alias acima funciona quando o padrão está sempre "testando". Como posso modificar para que, se o alias for usado como digamos gohf testing , o alias me leve para a pasta que contém game em seu nome.

Nota :

Shell: ksh

Estou assumindo que existe apenas uma pasta para cada padrão que eu insiro.

    
por g4ur4v 23.01.2013 / 16:15

1 resposta

2

Como manatwork disse no comentário, você deveria usar uma função para lidar melhor com argumentos.

gohf(){
  cd $(find . -type d -iname "$1" | sed 1q)
}

Não há necessidade de canalizar os resultados de find para grep , pois o uso do sinalizador -name ou -iname faz a mesma coisa. Então nós canalizamos a coisa toda para sed , de modo que apenas cd para o primeiro "hit" se houver vários.

No caso de você querer lidar com vários find "hits", faça algo assim:

gohf(){
  select dir in $(find . -name "$1" -type d)
  do
    cd $dir
    break
  done
}
    
por 23.01.2013 / 16:36

Tags