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

Первое появление init в стиле System V было в SVR3 в начало восьмидесятых, до этого AT&T Unix не принимала аргументов.

Изначально не было настроено ни init 0 , ни init 6 ; только init 1 для однопользовательского режима и init 2 для многопользовательского режима.

Системные администраторы могли использовать все, что захотят, с дополнительными уровнями выполнения.

В SVR4 уровень выполнения стандартизирован для следующих значений:

  • s: однопользовательский
  • 0: остановка / отключение питания
  • 1: однопользовательский режим (! = Одиночный пользователь, который больше был режимом восстановления / администрирования)
  • 2: многопользовательский (машина является клиентом)
  • 3: многопользовательский; распределенный режим (машина является сервером)
  • 4: неназначенный
  • 5: diags
  • 6: reboot

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

Все это произошло до того, как был выпущен Gnu / Linux, поэтому все, что связано с Linux, не имеет значения.

1
16.12.2016, 18:45
1 ответ

Хорошо, этот скрипт принимает один обязательный аргумент и два необязательных аргумента. Он выйдет (с ошибкой), если вы не укажете хотя бы один аргумент. Кроме этого он мало что делает!

#!/bin/sh
if [ -z "$1" ]
then
    echo "Missing filename: 1"
    exit 1
else
    file1=$1
fi
file2="$2"
file3="$3"
printf "File 1: %s\n" "$file1"
printf "File 2: %s\n" "$file2"
printf "File 3: %s\n" "$file3"
cat "$file1"

Сохраните его как (например) script_name.sh и установите его как исполняемый файл:

chmod u+x script_name.sh

Затем запустите его следующим образом:

./script_name.sh script_name.sh script_name.sh script_name.sh

Он должен отобразить три переданных вами аргумента (которые все "script_name.sh"), а затем сам cat.

Когда я попробовал это, я поэкспериментировал с автодополнением с помощью табуляции — оно работало автоматически (когда я нажимал Tab), отображались файлы и каталоги. Я не сделал ничего, чтобы заставить его сделать это. Однако, если вы хотите, чтобы ваш скрипт работал только с определенными файлами complete -f -X '!*.png' имя_скрипта.sh - при нажатии будут отображаться только файлы ".png". ]Вкладка.

2
27.01.2020, 23:46

Теги

Похожие вопросы