Как получить автозаполнение Linux с нумерованным меню?

Я пытаюсь найти это на пару дней, и, хотя я знаю, что могу написать функцию bash, чтобы получить ее так, как я хочу, я уверен, что этот параметр выходит из коробки.

Недавно я обновился до RHEL 7.11 и в предыдущих версиях RHEL при использовании двойной вкладки отобразилось пронумерованное меню, когда у меня были двусмысленные варианты.

Подумайте об этом, у меня есть каталог со следующими файлами:

abc  abcd  abcde  abcdef  abcdefg  abcdefgh  abcdefghi

Поэтому, когда я печатаю:

cat abc [tab][tab]

И было несколько матчей, я бы получил:

1) abc
2) abcd
3) abcde
4) abcdef
5) abcdefg
6) abcdefgh
7) abcdefghi

Впоследствии я мог бы набирать "7" и [tab], и он будет конкатенировать файл по опции 7).

Это очень полезно, когда есть много похожих вариантов со многими файлами, начинающимися с одних и тех же символов (как на моем сервере, где для ясности именам предшествуют имена систем).

Есть идеи?

Ответ 1

Создать файл сценария bash с расширением .sh

touch menutools.sh

Сделать исполняемый файл bash-скрипта

chmod +x menutools.sh

Вставьте интерпретатор bash в скрипт

echo '#!/bin/bash' > menutools.sh

Отредактируйте файл сценария с помощью сценария на основе меню

#!/bin/bash
echo '*********************************************'
echo '*               Menu of Tools               *' 
echo '*********************************************'
echo -e "\n\n"
echo "(1) Create file"
echo "(2) Copy file"
echo "(3) Move file"
echo -e "\n\n"
echo "Enter your choice: "
read userChoice
if [ $userChoice == "1" ]; then
  clear;
  echo '*********************************************'
  echo '*               Menu of Tools               *' 
  echo '*********************************************'
  echo -e "\n\n"
  echo -e "************[Creating file]**************\n\n"
  echo "(1) Enter name for the file: "
  read fileName
  touch $fileName
  echo "$fileName created successfully." 
fi

Запустите скрипт

./menutools.sh

или

bash menutools.sh