Autocompletar diretório em scripts bash

1

Novato de script Bash aqui escrevendo meu primeiro script para copiar um diretório de fotos de um lugar para outro.

#!/bin/bash
# Moves picture directories
cp -R /path/to/pictures/$1 /home/myUser/Pictures/$2
chmod -R 777 /home/myUser/Pictures/

Isso funciona bem, mas minha variável $1 pode ser uma sequência bastante longa de informações de data, portanto, se possível, eu gostaria de usar o preenchimento automático da guia padrão. Da mesma forma para $2 , porque eu tenho várias subcategorias em imagens e seria bom poder abilá-las.

ex: my_script 2014-07-<tab> seria preenchido automaticamente para my_script 2014-07-15 se esse for o único diretório que começa com esse script.

Existe alguma maneira de fazer isso para scripts personalizados? No Ubuntu 14.04, se tiver alguma consequência.

    
por diplosaurus 15.07.2014 / 06:19

1 resposta

1

A maneira padrão de fazer tais coisas nas ferramentas * nix é não codificar diretórios específicos, mas passar os dois caminhos completos para o script:

#!/bin/bash
# Moves picture directories
cp -R -- "$1" "$2"
chmod -R 777 "$(dirname -- "$2")"

Dois efeitos colaterais agradáveis:

  • O preenchimento automático funciona sem qualquer código extra.
  • O script funciona, não importa onde estejam seus diretórios de imagem, mesmo com caminhos relativos.

Se você tiver como autopreenchimento com um prefixo de caminho específico, tente verificar as bash_código de conclusão e como eles completam automaticamente os caminhos.

    
por 15.07.2014 / 10:58