Перейти к содержимому

Автозаполнение каталогов в скриптах bash

1

Новичок скриптов Bash здесь пишет мой первый скрипт для копирования каталога картинок из одного места в другое.

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

Это работает нормально, но моя $1переменная может быть довольно длинной строкой информации о дате, поэтому, если возможно, я бы хотел, чтобы она использовала стандартное автоматическое заполнение вкладок. Точно так же $2, потому что у меня есть несколько подкатегорий под картинками, и было бы хорошо иметь возможность дополнить их.

ex: my_script 2014-07-<tab>автоматически заполняется, my_script 2014-07-15если это единственный каталог, который начинается с этого скрипта.

Есть ли способ сделать это для пользовательских сценариев? На Ubuntu 14.04, если это имеет какое-либо значение.

400 просмотров
diplosaurus спросил 12 лет назад
D 112

1 ответ

1
Принятый ответ

The standard way of doing such things in *nix tools is to not hard code specific directories at all, but rather passing both paths in full to the script:

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

Two nice side effects:

  • Autocomplete works without any extra code.
  • The script works no matter where your picture directories are, even with relative paths.

If you have to autocomplete with a specific path prefix, you could try checking out the bash_completion code and how they autocomplete paths.

Хотя это хороший совет - знаете ли вы какой-нибудь способ выполнить автозаполнение в жестко закодированных каталогах? Этот сценарий предназначен для кого-то другого, кто не очень хорошо разбирается в компьютерах / структурах каталогов, поэтому я надеюсь сделать его максимально простым.

diplosaurus · 12 лет назад · 0
l0b0 ответил 12 лет назад
L 5 382