Вы почти у цели. Вы получите ¶
с ISO_Lv3_Shift+Shift+q — это четвертый уровень.
// ISO level 1 2 3 4 5 6 7 8
key <AD01> { [ q, Q, degree, paragraph, foo, bar, baz, bat ] };
Чтобы получить доступ ко всем этим символам, вам понадобится Shift и 3 модификатора:
q
; добавить Shift для Q
°
; добавьте Shift для ¶
foo
; добавить Shift для бара
баз
; добавить Shift для bat
Я полагаю, что в некоторых контекстах вы можете увидеть комбинацию ISO_Lv3_Shift+ISO_Lv5_Shift, называемую ISO_Lv8_Shift
или уровень8
.
Аргументы для интерпретатора в этом случае представляют собой аргументы, построенные после интерпретации строки shebang, комбинируя строку shebang с именем скрипта и его командными -строковыми аргументами.
Таким образом, сценарий AWK, начинающийся с
#! /usr/bin/awk -f
назвали myscript
и назвали
./myscript file1 file2
приводит к фактическим аргументам
/usr/bin/awk -f./myscript file1 file2
В данном случае единственным необязательным аргументом является -f
. Не всем интерпретаторам нужен один (, см. /bin/sh
, например, ), и многие системы допускают не более одного (, поэтому ваша строка shebang не будет работать так, как вы ожидаете ). Однако аргумент может содержать пробелы; все содержимое строки shebang после того, как интерпретатор передается как один аргумент.
Чтобы поэкспериментировать со строками шебанга, вы можете использовать #! /bin/echo
(, хотя это не помогает различать аргументы, когда есть пробелы ).
См. Как запускаются программы для более подробного объяснения того, как обрабатываются строки shebang (в Linux ).
Прочтите справочную страницу execve(2)
. Ограничение на один необязательный аргумент зависит от ОС.Linux рассматривает все слова после интерпретатора как один единственный аргумент
Если вы хотите сделать это:
#! /path/to/interpreter --opt1 opt1-arg --opt2 opt2-arg --opt3 nonopt-arg1 nonopt-arg2
Вы действительно должны это сделать
#!/bin/sh
exec /path/to/interpreter --opt1 opt1-arg --opt2 opt2-arg --opt3 nonopt-arg1 nonopt-arg2 "$@"
#...................................................................................... ^^^^
ОБНОВЛЕНИЕ :Я заметил, что программа env
имеет опцию -S
только для этой цели :шебанг может быть (хотя, если бы мне пришлось поддерживать эту программу, я бы не был счастлив)
#!/usr/bin/env -S /path/to/interpreter --opt1 opt1-arg --opt2 opt2-arg --opt3 nonopt-arg1 nonopt-arg2
Прочтите справочную страницу env(1)
.