Chamando ls ou menos no bash com base no tipo de arquivo

0

Eu frequentemente faço ls acidentalmente em um arquivo, quando eu pretendia fazer menos.

Existe uma maneira de fazer um alias, ou uma função, que irá executar ls em um diretório, e menos em um arquivo.

    
por kmace 19.01.2017 / 01:59

1 resposta

2

A coisa básica que você quer pode ser algo assim:

function my_less()
  {
  obj=$1
  shift
  test -d $obj && ls $obj $@
  test -f $obj && less $obj $@
  }

Então

my_less thing

fará um ls ou um less dependendo do tipo.

O obj=$1 pega o primeiro argumento para a função. O shift desloca os argumentos restantes "para a esquerda" e $@ é a lista de argumentos atual.

Se você quiser ter algum processamento rudimentar de opções, você pode estender essa função mais ou menos assim:

function my_less()
  {
  switches=
  obj=
  while true
  do
    case $1 in
      -*)
        switches="$switches $1"
        shift
        ;;
      *)
        obj=$1
        shift
        break
        ;;
    esac
  done
  test -d $obj && ls $switches $obj $@
  test -f $obj && less $switches $obj $@
}

Isso coletará todos os comutadores principais e definirá obj como o primeiro não comutador. Isso fará a coisa errada com frequência, mas é apenas uma sugestão para o próximo passo.

    
por 19.01.2017 / 06:23

Tags