Первое появление init в стиле System V было в SVR3 в начало восьмидесятых, до этого AT&T Unix не принимала аргументов.
Изначально не было настроено ни init 0
, ни init 6
; только init 1
для однопользовательского режима и init 2
для многопользовательского режима.
Системные администраторы могли использовать все, что захотят, с дополнительными уровнями выполнения.
В SVR4 уровень выполнения стандартизирован для следующих значений:
Я думаю, что 6 был выбран, потому что не предусматривалось никаких требований для дополнительного неназначенного уровня выполнения.
Все это произошло до того, как был выпущен Gnu / Linux, поэтому все, что связано с Linux, не имеет значения.
Хорошо, этот скрипт принимает один обязательный аргумент и два необязательных аргумента. Он выйдет (с ошибкой), если вы не укажете хотя бы один аргумент. Кроме этого он мало что делает!
#!/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". ]Вкладка.