Как мне расширить список букв / цифр в ash?

Вы можете использовать облегченные дистрибутивы, которые требуют меньше оперативной памяти. Linux не требуется 512 МБ.

SWAP - это временная замена оперативной памяти. Вы можете использовать его, но он намного медленнее, чем RAM, и может сделать ваш опыт неприятным.

Тем не менее, вы можете ознакомиться с требованиями Puppy Linux . Он известен своим легким весом.

Кроме того, здесь вы можете увидеть список дистрибутивов, нацеленных на скорость за счет использования ОЗУ, оставаясь при этом легкими. Более того, this и this ] темы могут предоставить вам некоторую информацию.

1
09.03.2018, 19:03
2 ответа

POSIXly (и с busybox )и в системах на основе ASCII -(Я не думаю, что busybox когда-либо встречался в системах EBCDIC):

letters() { awk 'BEGIN{for(i=97;i<123;i++)printf "%c\n", i}'; }

Будет расширен до этого списка букв, по одной в строке, так что при условии, что вы не изменили $IFS,

cmd $(letters)

можно было бы передать этот список как отдельные аргументы в cmd. Как и в случае с ksh93/ zsh/ bashс cmd {a..z}.

Вряд ли это лучше, чем

letters() { printf '%s\n' a b c d e f g h i j k l m n o p q r s t u v w x y z; }

однако. Чтобы иметь возможность сделать эквивалент foo{a..z}bar, вы можете определить:

letters() { printf "${1-%s\n}" a b c d e f g h i j k l m n o p q r s t u v w x y z; }

вместо этого и назовите его как:

cmd $(letters 'foo%sbar\n')

Вы можете расширить этот подход, выполнив что-то вроде:

format() { awk -v format="$1" '{printf format, $0}' ;}

А затем сделать:

$ seq 97 100 | format 'foo%cbar\n'
fooabar
foobbar
foocbar
foodbar
$ seq 4 | format '%04d\n'
0001
0002
0003
0004

(хотя последнее также может быть написаноseq -w 0004)

seqне является командой POSIX, но busyboxидет с ней.

Обратите внимание, что busybox shоснован на ashпо умолчанию, но также может быть настроен во время сборки для использования оболочки на основе hush-, которая поддерживает раскрытие скобок. Но это только стиль csh -{a,b}, а не стиль zsh -{1..10}, {a..z}или более продвинутые формы, найденные в ksh93/zsh/bash.

2
27.01.2020, 23:18

El shell ashno admite expansiones de llaves.

Usando Perl, podrías hacer

perl -e 'print join("\n",a..z), "\n"'

donde el primer\n(enjoin())podría ser reemplazado por el delimitador de su elección.

Si tiene la utilidad jotdisponible,

jot -c - a z
2
27.01.2020, 23:18

Теги

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