По умолчанию Debian предполагает клавиатуру в стиле PC. Поскольку вы используете mac, вы не используете её, поэтому вам нужно сказать об этом Debian. Для этого вам нужно изменить /etc/default/keyboard
так, чтобы он содержал следующее:
XKBMODEL=macintosh
XKBLAYOUT=se
Затем вы можете использовать на машине Debian те же клавиши, что и на OS X.
Don ' Сделайте это:
for i in `pwgen -yB -N 8 1`
Результат подстановки команды подвергается расширению имени пути .
Вместо этого сделайте следующее:
pwgen -yB -N 8 1 | while IFS= read -r i; do printf '%s\n' "$i"; done
Обратите внимание, что *
появляется в выходных данных ниже, демонстрируя, что расширение имени пути не было выполнено:
$ pwgen -yB -N 8 1 | while IFS= read -r i; do printf '%s\n' "$i"; done
~
-
*
@
;
\
*
-
Вы используете 'split' в для i в `command`
.
Но это также связано с "генерацией имени файла" (также известной как расширение пути в bash), в которой (без кавычек) символы, такие как *
, ?
и [
расширяются до «имен файлов».
Это можно отключить с помощью: set -f
.
set -f ; for i in `pwgen -yB -N 8 1`; do echo "$i"; done
Использование массива может быть хорошей идеей:
$ set -f; arr=( $(pwgen -yB -N 4 1) ); printf '<%s>\n' "${arr[@]}"
<~>
<&>
<_>
<`>
Или, возможно:
$ set -f; arr=( $(pwgen -yB -N 5 18) ); printf '%s\n' "${arr[@]}"
oesheisu%ugh>aetas
nae>chootho|yeiwah
quie{thohp+aechuit
ib\iibugeighe<pie?
kie}phah=ngeitaeph
Конечно, вы можете использовать readarray для заполнения массива (нет необходимости в set -f
):
$ readarray -t arr < <(pwgen -yB -N 8 1)
А затем выведите все элементы:
$ printf '%s\n' "${arr[@]}"
Все в одной строке:
$ readarray -t arr < <(pwgen -yB -N 4 12); printf '%s\n' "${arr[@]}"
ioquavoej&ee
che>u}phoej<
iuchoo"shoom
hahd!eumohsu
Это *
:
for i in `echo '*'`; do echo "$i"; done
Как его найти:
for i in `pwgen -yB -N 100 1 | tee /tmp/f1`; do echo "$i"; done >/tmp/f2
diff f1 f2
Возможно, вам придется запустить его несколько раз, пока вы не увидите разницу. Или увеличить N
.